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