]> git.baikalelectronics.ru Git - kernel.git/commit
net: dsa: sja1105: rely on DSA core tracking of port learning state
authorVladimir Oltean <vladimir.oltean@nxp.com>
Sun, 8 Aug 2021 14:35:26 +0000 (17:35 +0300)
committerDavid S. Miller <davem@davemloft.net>
Sun, 8 Aug 2021 19:56:51 +0000 (20:56 +0100)
commitb74919cb6f63e0788bc579b5e5fcee8bc7c1277d
tree5dcd1d43158e3f256cd665929ee5abe33b7e2645
parente8ce59c5ff43b4ed4abd9802895e3b683a66ae8a
net: dsa: sja1105: rely on DSA core tracking of port learning state

Now that DSA keeps track of the port learning state, it becomes
superfluous to keep an additional variable with this information in the
sja1105 driver. Remove it.

The DSA core's learning state is present in struct dsa_port *dp.
To avoid the antipattern where we iterate through a DSA switch's
ports and then call dsa_to_port to obtain the "dp" reference (which is
bad because dsa_to_port iterates through the DSA switch tree once
again), just iterate through the dst->ports and operate on those
directly.

The sja1105 had an extra use of priv->learn_ena on non-user ports. DSA
does not touch the learning state of those ports - drivers are free to
do what they wish on them. Mark that information with a comment in
struct dsa_port and let sja1105 set dp->learning for cascade ports.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/sja1105/sja1105.h
drivers/net/dsa/sja1105/sja1105_main.c
include/net/dsa.h