Re: [PATCH RFC net-next 0/3] Multi-CPU DSA support
From: Andrew Lunn <andrew@lunn.ch>
Date: 2019-08-24 15:24:10
On Sat, Aug 24, 2019 at 04:42:47AM +0200, Marek Behún wrote:
Hi, this is my attempt to solve the multi-CPU port issue for DSA. Patch 1 adds code for handling multiple CPU ports in a DSA switch tree. If more than one CPU port is found in a tree, the code assigns CPU ports to user/DSA ports in a round robin way. So for the simplest case where we have one switch with N ports, 2 of them of type CPU connected to eth0 and eth1, and the other ports labels being lan1, lan2, ..., the code assigns them to CPU ports this way: lan1 <-> eth0 lan2 <-> eth1 lan3 <-> eth0 lan4 <-> eth1 lan5 <-> eth0
Hi Marek That is what i've always argued is a good default. So i'm happy with this.
Patch 2 adds a new operation to the net device operations structure. Currently we use the iflink property of a net device to report to which CPU port a given switch port si connected to. The ip link utility from iproute2 reports this as "lan1@eth0". We add a new net device operation, ndo_set_iflink, which can be used to set this property. We call this function from the netlink handlers.
That is a new idea. Interesting. I would like to look around and see what else uses this "lan1@eth0" concept. We need to ensure it is not counter intuitive in general, when you consider all possible users.
Patch 3 implements this new ndo_set_iflink operation for DSA slave device. Thus the userspace can request a change of CPU port of a given port.
So this is all about transmit from the host out the switch. What about
receive? How do you tell the switch which CPU interface it should use
for a port?
Thanks
Andrew