diff options
author | Vladimir Oltean <vladimir.oltean@nxp.com> | 2020-05-05 22:20:54 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-05-08 03:31:57 +0300 |
commit | b70bb8d4ab2c0a4992e4692f07e9b91056b30c88 (patch) | |
tree | 0b03fa578f376e00f586490be8a5ee840160efce /drivers/net/dsa/sja1105/sja1105.h | |
parent | 94f94d4acfb2a5e978f98d924be33c981e2f86c6 (diff) | |
download | linux-b70bb8d4ab2c0a4992e4692f07e9b91056b30c88.tar.xz |
net: dsa: sja1105: make room for virtual link parsing in flower offload
Virtual links are a sja1105 hardware concept of executing various flow
actions based on a key extracted from the frame's DMAC, VID and PCP.
Currently the tc-flower offload code supports only parsing the DMAC if
that is the broadcast MAC address, and the VLAN PCP. Extract the key
parsing logic from the L2 policers functionality and move it into its
own function, after adding extra logic for matching on any DMAC and VID.
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/dsa/sja1105/sja1105.h')
-rw-r--r-- | drivers/net/dsa/sja1105/sja1105.h | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/drivers/net/dsa/sja1105/sja1105.h b/drivers/net/dsa/sja1105/sja1105.h index 602aa30c832f..95633ad9bfb7 100644 --- a/drivers/net/dsa/sja1105/sja1105.h +++ b/drivers/net/dsa/sja1105/sja1105.h @@ -97,6 +97,32 @@ struct sja1105_info { const char *name; }; +enum sja1105_key_type { + SJA1105_KEY_BCAST, + SJA1105_KEY_TC, + SJA1105_KEY_VLAN_UNAWARE_VL, + SJA1105_KEY_VLAN_AWARE_VL, +}; + +struct sja1105_key { + enum sja1105_key_type type; + + union { + /* SJA1105_KEY_TC */ + struct { + int pcp; + } tc; + + /* SJA1105_KEY_VLAN_UNAWARE_VL */ + /* SJA1105_KEY_VLAN_AWARE_VL */ + struct { + u64 dmac; + u16 vid; + u16 pcp; + } vl; + }; +}; + enum sja1105_rule_type { SJA1105_RULE_BCAST_POLICER, SJA1105_RULE_TC_POLICER, @@ -106,6 +132,7 @@ struct sja1105_rule { struct list_head list; unsigned long cookie; unsigned long port_mask; + struct sja1105_key key; enum sja1105_rule_type type; union { @@ -117,7 +144,6 @@ struct sja1105_rule { /* SJA1105_RULE_TC_POLICER */ struct { int sharindx; - int tc; } tc_pol; }; }; |