On Mon, Dec 21, 2020 at 02:33:16PM -0800, Florian Fainelli wrote: > On 12/20/2020 8:53 PM, Florian Fainelli wrote: > > The call to netif_set_real_num_tx_queues() succeeds and > > slave_dev->real_num_tx_queues is changed to 4 accordingly. The loop that > > assigns the internal queue mapping (priv->ring_map) is correctly limited > > to 4, however we get two calls per switch port instead of one. I did not > > have much time to debug why we get called twice but I will be looking > > into this tomorrow. > > There was not any bug other than there are two instances of a SYSTEMPORT > device in my system and they both receive the same notification. > > So we do need to qualify which of the notifier block matches the device > of interest, because if we do extract the private structure from the > device being notified, it is always going to match. > > Incremental fixup here: > > https://github.com/ffainelli/linux/commit/0eea16e706a73c56a36d701df483ff73211aae7f
...duh. And when you come to think that I had deleted that code in my patch, not understanding what it's for... Coincidentally this is also the reason why I got the prints twice. Sorry :( > > and you can add Tested-by: Florian Fainelli <f.faine...@gmail.com> when > you resubmit. > > Thanks, this is a really nice cleanup. Thanks. Do you think we need some getters for dp->index and dp->ds->index, to preserve some sort of data structure encapsulation from the outside world (although it's not as if the members of struct dsa_switch and struct dsa_port still couldn't be accessed directly)? But then, there's the other aspect. We would have some shiny accessors for DSA properties, but we're resetting the net_device's number of TX queues. So much for data encapsulation.