net: mvpp2: Add hardware offloading for VLAN filtering
authorMaxime Chevallier <maxime.chevallier@bootlin.com>
Wed, 28 Feb 2018 09:14:13 +0000 (10:14 +0100)
committerDavid S. Miller <davem@davemloft.net>
Wed, 28 Feb 2018 17:04:30 +0000 (12:04 -0500)
commit56beda3db6020428885f0589a0ac16768ea94543
tree9d3574a6926f070014d4f53e9290829ef4ec760c
parent14967f94972c0388f455625e7109ab7651429014
net: mvpp2: Add hardware offloading for VLAN filtering

Marvell PPv2 controller allows for generic packet filtering. This commit
adds entries to implement VLAN filtering. The approach taken is :

 - Filter entries that would match on the presence of the VLAN tag
   (existing VLAN detection, DSA / EDSA detection) will set the next
   lookup ID to be for the VID.

 - For each VLAN existing on a given port, we add an entry that matches
   this specific VID. If the incoming packet matches the VID entry, it is
   set for the next lookup in the chain (LU_L2).

 - A Guard entry is added for each port, that will match if the incoming
   packet didn't match any of the above VID entries. This entry tags the
   packet to be dropped.

Due to this design, and the fact that the total 256 filter entries are
also used for other purposes, we have a limit of 10 VLANs per port. To
accommodate the case where we would need more VLANS on one port, this
patch implements the ndo_set_features to allow for disabling of VLAN
filtering using ethtool.

The default config has VLAN filtering disabled.

Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/marvell/mvpp2.c