]> git.baikalelectronics.ru Git - kernel.git/commitdiff
net: dsa: sja1105: fix configuration of source address learning
authorVladimir Oltean <vladimir.oltean@nxp.com>
Tue, 16 Feb 2021 11:41:18 +0000 (13:41 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 16 Feb 2021 22:02:46 +0000 (14:02 -0800)
Due to a mistake, the driver always sets the address learning flag to
the previously stored value, and not to the currently configured one.
The bug is visible only in standalone ports mode, because when the port
is bridged, the issue is masked by .port_stp_state_set which overwrites
the address learning state to the proper value.

Fixes: 4d9423549501 ("net: dsa: sja1105: offload bridge port flags to device")
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/sja1105/sja1105_main.c

index 85a39d599ff3d29496f6787d97726f5962be9f5e..bf7d59f52738d5ed3bf14cdec91e1fc367ac994a 100644 (file)
@@ -3287,7 +3287,7 @@ static int sja1105_port_set_learning(struct sja1105_private *priv, int port,
 
        mac = priv->static_config.tables[BLK_IDX_MAC_CONFIG].entries;
 
-       mac[port].dyn_learn = !!(priv->learn_ena & BIT(port));
+       mac[port].dyn_learn = enabled;
 
        rc = sja1105_dynamic_config_write(priv, BLK_IDX_MAC_CONFIG, port,
                                          &mac[port], true);