aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/dsa/8021q.h
diff options
context:
space:
mode:
authorVladimir Oltean <vladimir.oltean@nxp.com>2020-09-21 03:10:30 +0300
committerDavid S. Miller <davem@davemloft.net>2020-09-20 19:01:34 -0700
commitbbed0bbdddaf46260aeb1a8910a3b32941e321a2 (patch)
treee13632e7c3e6b1e41ed2826db7587314f72b5389 /include/linux/dsa/8021q.h
parentnet: dsa: install VLANs into the master's RX filter too (diff)
downloadlinux-dev-bbed0bbdddaf46260aeb1a8910a3b32941e321a2.tar.xz
linux-dev-bbed0bbdddaf46260aeb1a8910a3b32941e321a2.zip
net: dsa: tag_8021q: add VLANs to the master interface too
The whole purpose of tag_8021q is to send VLAN-tagged traffic to the CPU, from which the driver can decode the source port and switch id. Currently this only works if the VLAN filtering on the master is disabled. Change that by explicitly adding code to tag_8021q.c to add the VLANs corresponding to the tags to the filter of the master interface. Because we now need to call vlan_vid_add, then we also need to hold the RTNL mutex. Propagate that requirement to the callers of dsa_8021q_setup and modify the existing call sites as appropriate. Note that one call path, sja1105_best_effort_vlan_filtering_set -> sja1105_vlan_filtering -> sja1105_setup_8021q_tagging, was already holding this lock. 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>
Diffstat (limited to 'include/linux/dsa/8021q.h')
-rw-r--r--include/linux/dsa/8021q.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/dsa/8021q.h b/include/linux/dsa/8021q.h
index 2b003ae9fb38..88cd72dfa4e0 100644
--- a/include/linux/dsa/8021q.h
+++ b/include/linux/dsa/8021q.h
@@ -31,6 +31,8 @@ struct dsa_8021q_context {
const struct dsa_8021q_ops *ops;
struct dsa_switch *ds;
struct list_head crosschip_links;
+ /* EtherType of RX VID, used for filtering on master interface */
+ __be16 proto;
};
#define DSA_8021Q_N_SUBVLAN 8