net: dsa: sja1105: fix checks for VLAN state in redirect action
This action requires the VLAN awareness state of the switch to be of the same type as the key that's being added: - If the switch is unaware of VLAN, then the tc filter key must only contain the destination MAC address. - If the switch is VLAN-aware, the key must also contain the VLAN ID and PCP. But this check doesn't work unless we verify the VLAN awareness state on both the "if" and the "else" branches. Fixes: dfacc5a23e22 ("net: dsa: sja1105: support flow-based redirection via virtual links") Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
5b3b396c77
commit
c6ae970bcc
@ -342,7 +342,9 @@ int sja1105_vl_redirect(struct sja1105_private *priv, int port,
|
||||
NL_SET_ERR_MSG_MOD(extack,
|
||||
"Can only redirect based on DMAC");
|
||||
return -EOPNOTSUPP;
|
||||
} else if (key->type != SJA1105_KEY_VLAN_AWARE_VL) {
|
||||
} else if ((priv->vlan_state == SJA1105_VLAN_BEST_EFFORT ||
|
||||
priv->vlan_state == SJA1105_VLAN_FILTERING_FULL) &&
|
||||
key->type != SJA1105_KEY_VLAN_AWARE_VL) {
|
||||
NL_SET_ERR_MSG_MOD(extack,
|
||||
"Can only redirect based on {DMAC, VID, PCP}");
|
||||
return -EOPNOTSUPP;
|
||||
|
Loading…
x
Reference in New Issue
Block a user