net: dsa: sja1105: stop using priv->vlan_aware
Now that the sja1105 driver is finally sane enough again to stop having a ternary VLAN awareness state, we can remove priv->vlan_aware and query DSA for the ds->vlan_filtering value (for SJA1105, VLAN filtering is a global property). Also drop the paranoid checking that DSA calls ->port_vlan_filtering multiple times without the VLAN awareness state changing. It doesn't, the same check is present inside dsa_port_vlan_filtering too. 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>
This commit is contained in:
parent
5146a57460
commit
9aad3e4ede
|
@ -226,7 +226,6 @@ struct sja1105_private {
|
|||
bool rgmii_tx_delay[SJA1105_MAX_NUM_PORTS];
|
||||
phy_interface_t phy_mode[SJA1105_MAX_NUM_PORTS];
|
||||
bool fixed_link[SJA1105_MAX_NUM_PORTS];
|
||||
bool vlan_aware;
|
||||
unsigned long ucast_egress_floods;
|
||||
unsigned long bcast_egress_floods;
|
||||
const struct sja1105_info *info;
|
||||
|
|
|
@ -1780,6 +1780,7 @@ static int sja1105_fdb_del(struct dsa_switch *ds, int port,
|
|||
static int sja1105_fdb_dump(struct dsa_switch *ds, int port,
|
||||
dsa_fdb_dump_cb_t *cb, void *data)
|
||||
{
|
||||
struct dsa_port *dp = dsa_to_port(ds, port);
|
||||
struct sja1105_private *priv = ds->priv;
|
||||
struct device *dev = ds->dev;
|
||||
int i;
|
||||
|
@ -1816,7 +1817,7 @@ static int sja1105_fdb_dump(struct dsa_switch *ds, int port,
|
|||
u64_to_ether_addr(l2_lookup.macaddr, macaddr);
|
||||
|
||||
/* We need to hide the dsa_8021q VLANs from the user. */
|
||||
if (!priv->vlan_aware)
|
||||
if (!dsa_port_is_vlan_filtering(dp))
|
||||
l2_lookup.vlanid = 0;
|
||||
rc = cb(macaddr, l2_lookup.vlanid, l2_lookup.lockeds, data);
|
||||
if (rc)
|
||||
|
@ -2309,11 +2310,6 @@ int sja1105_vlan_filtering(struct dsa_switch *ds, int port, bool enabled,
|
|||
tpid2 = ETH_P_SJA1105;
|
||||
}
|
||||
|
||||
if (priv->vlan_aware == enabled)
|
||||
return 0;
|
||||
|
||||
priv->vlan_aware = enabled;
|
||||
|
||||
table = &priv->static_config.tables[BLK_IDX_GENERAL_PARAMS];
|
||||
general_params = table->entries;
|
||||
/* EtherType used to identify inner tagged (C-tag) VLAN traffic */
|
||||
|
@ -2346,7 +2342,7 @@ int sja1105_vlan_filtering(struct dsa_switch *ds, int port, bool enabled,
|
|||
*/
|
||||
table = &priv->static_config.tables[BLK_IDX_L2_LOOKUP_PARAMS];
|
||||
l2_lookup_params = table->entries;
|
||||
l2_lookup_params->shared_learn = !priv->vlan_aware;
|
||||
l2_lookup_params->shared_learn = !enabled;
|
||||
|
||||
for (port = 0; port < ds->num_ports; port++) {
|
||||
if (dsa_is_unused_port(ds, port))
|
||||
|
|
|
@ -494,13 +494,15 @@ int sja1105_vl_redirect(struct sja1105_private *priv, int port,
|
|||
bool append)
|
||||
{
|
||||
struct sja1105_rule *rule = sja1105_rule_find(priv, cookie);
|
||||
struct dsa_port *dp = dsa_to_port(priv->ds, port);
|
||||
bool vlan_aware = dsa_port_is_vlan_filtering(dp);
|
||||
int rc;
|
||||
|
||||
if (!priv->vlan_aware && key->type != SJA1105_KEY_VLAN_UNAWARE_VL) {
|
||||
if (!vlan_aware && key->type != SJA1105_KEY_VLAN_UNAWARE_VL) {
|
||||
NL_SET_ERR_MSG_MOD(extack,
|
||||
"Can only redirect based on DMAC");
|
||||
return -EOPNOTSUPP;
|
||||
} else if (priv->vlan_aware && key->type != SJA1105_KEY_VLAN_AWARE_VL) {
|
||||
} else if (vlan_aware && key->type != SJA1105_KEY_VLAN_AWARE_VL) {
|
||||
NL_SET_ERR_MSG_MOD(extack,
|
||||
"Can only redirect based on {DMAC, VID, PCP}");
|
||||
return -EOPNOTSUPP;
|
||||
|
@ -568,6 +570,8 @@ int sja1105_vl_gate(struct sja1105_private *priv, int port,
|
|||
u32 num_entries, struct action_gate_entry *entries)
|
||||
{
|
||||
struct sja1105_rule *rule = sja1105_rule_find(priv, cookie);
|
||||
struct dsa_port *dp = dsa_to_port(priv->ds, port);
|
||||
bool vlan_aware = dsa_port_is_vlan_filtering(dp);
|
||||
int ipv = -1;
|
||||
int i, rc;
|
||||
s32 rem;
|
||||
|
@ -592,11 +596,11 @@ int sja1105_vl_gate(struct sja1105_private *priv, int port,
|
|||
return -ERANGE;
|
||||
}
|
||||
|
||||
if (!priv->vlan_aware && key->type != SJA1105_KEY_VLAN_UNAWARE_VL) {
|
||||
if (!vlan_aware && key->type != SJA1105_KEY_VLAN_UNAWARE_VL) {
|
||||
NL_SET_ERR_MSG_MOD(extack,
|
||||
"Can only gate based on DMAC");
|
||||
return -EOPNOTSUPP;
|
||||
} else if (priv->vlan_aware && key->type != SJA1105_KEY_VLAN_AWARE_VL) {
|
||||
} else if (vlan_aware && key->type != SJA1105_KEY_VLAN_AWARE_VL) {
|
||||
NL_SET_ERR_MSG_MOD(extack,
|
||||
"Can only gate based on {DMAC, VID, PCP}");
|
||||
return -EOPNOTSUPP;
|
||||
|
|
Loading…
Reference in New Issue