Thread (61 messages) 61 messages, 7 authors, 2023-01-12

Re: [RFC PATCH v4 2/4] dpll: Add DPLL framework base functions

From: Jiri Pirko <jiri@resnulli.us>
Date: 2022-12-02 16:15:29
Also in: linux-arm-kernel, linux-clk

Fri, Dec 02, 2022 at 03:54:33PM CET, arkadiusz.kubalewski@intel.com wrote:
quoted
From: Jiri Pirko <jiri@resnulli.us>
Sent: Friday, December 2, 2022 1:40 PM

Fri, Dec 02, 2022 at 12:27:35PM CET, arkadiusz.kubalewski@intel.com wrote:
quoted
quoted
From: Jiri Pirko <jiri@resnulli.us>
Sent: Wednesday, November 30, 2022 5:37 PM Tue, Nov 29, 2022 at
10:37:22PM CET, vfedorenko@novek.ru wrote:
quoted
From: Vadim Fedorenko <redacted>
[...]

quoted
quoted
quoted
+static int
+dpll_msg_add_pin_netifindex(struct sk_buff *msg, const struct
dpll_pin_attr *attr)
quoted
+{
+	unsigned int netifindex; // TODO: Should be u32?
+
+	if (dpll_pin_attr_netifindex_get(attr, &netifindex))
+		return 0;
+	if (nla_put_u32(msg, DPLLA_PIN_NETIFINDEX, netifindex))
I was thinking about this. It is problematic. DPLL has no notion of
network namespaces. So if the driver passes ifindex, dpll/user has no
clue in which network namespace it is (ifindexes ovelay in multiple
namespaces).

There is no easy/nice solution. For now, I would go without this and
only have linkage the opposite direction, from netdev to dpll.
Well, makes sense to me.
Although as I have checked `ip a` showed the same ifindex either if
port was in the namespace or not.
That is not the problem. The problem is, that you can have following two
netdevs with the same ifindex each in different netns.
1) netdev x: ifindex 8, netns ns1
2) netdev y: ifindex 8, netns ns2
OK, I now see your point what is the confusion.
Thanks for explanation.
But I am still not sure how to make it this way in Linux, if interface added to
netns uses original netdev ifindex, and driver after reload receives new
(previously unused ifindex) what would be the steps/commands to make it as you
described? 
As I said, I don't see a way to have the ifindex exposed throught dpll
at all. I believe we should do it only the other way around. Assign
dpll_pin pointer to struct net_device and expose this over new attr
IFLA_DPLL_PIN over RT netlink.

quoted
quoted
Isn't it better to let the user know ifindex, even if he has to iterate
all the namespaces he has created?
Definitelly not. As I showed above, one ifindex may refer to multiple
netdevice instances.


[...]

quoted
quoted
quoted
+	DPLLA_NETIFINDEX,
Duplicate, you have it under pin.
The pin can have netifindex as pin signal source may originate there by
Clock recovery mechanics.
The dpll can have ifindex as it "owns" the dpll.
DPLL is not owned by any netdevice. That does not make any sense.
Netdevice may be "child" of the same PCI device as the dpll instance.
But that's it.
Sure, I won't insist on having it there, as I said, thought Maciej have seen
a benefit with such traceability, unfortunately I cannot recall what was it.


Thanks,
Arkadiusz
quoted
quoted
Shall user know about it? probably nothing usefull for him, although
didn't Maciej Machnikowski asked to have such traceability?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help