diff options
author | Vladimir Oltean <olteanv@gmail.com> | 2019-06-26 02:39:42 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-06-27 21:03:22 +0300 |
commit | d763778224ea8005b650e12d8f4cd470265fe0b9 (patch) | |
tree | 65700bb2b5bb5cfd133e5daa0fc92c946a4915a7 /drivers/net/dsa/sja1105 | |
parent | b3ee526a88d36dec752179d8866954a4e83f15aa (diff) | |
download | linux-d763778224ea8005b650e12d8f4cd470265fe0b9.tar.xz |
net: dsa: sja1105: Implement is_static for FDB entries on E/T
The first generation switches don't tell us through the dynamic config
interface whether the dumped FDB entries are static or not (the LOCKEDS
bit from P/Q/R/S).
However, now that we're keeping a mirror of all 'bridge fdb' commands in
the static config, this is an opportunity to compare a dumped FDB entry
to the driver's private database. After all, what makes an entry static
is that *we* added it.
Signed-off-by: Vladimir Oltean <olteanv@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/dsa/sja1105')
-rw-r--r-- | drivers/net/dsa/sja1105/sja1105_main.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/net/dsa/sja1105/sja1105_main.c b/drivers/net/dsa/sja1105/sja1105_main.c index cadee7694935..caebf76eaa3e 100644 --- a/drivers/net/dsa/sja1105/sja1105_main.c +++ b/drivers/net/dsa/sja1105/sja1105_main.c @@ -1218,6 +1218,21 @@ static int sja1105_fdb_dump(struct dsa_switch *ds, int port, continue; u64_to_ether_addr(l2_lookup.macaddr, macaddr); + /* On SJA1105 E/T, the switch doesn't implement the LOCKEDS + * bit, so it doesn't tell us whether a FDB entry is static + * or not. + * But, of course, we can find out - we're the ones who added + * it in the first place. + */ + if (priv->info->device_id == SJA1105E_DEVICE_ID || + priv->info->device_id == SJA1105T_DEVICE_ID) { + int match; + + match = sja1105_find_static_fdb_entry(priv, port, + &l2_lookup); + l2_lookup.lockeds = (match >= 0); + } + /* We need to hide the dsa_8021q VLANs from the user. This * basically means hiding the duplicates and only showing * the pvid that is supposed to be active in standalone and |