]> git.baikalelectronics.ru Git - kernel.git/commit
stmmac: added support for 802.1ad vlan stripping
authorElad Nachman <eladv6@gmail.com>
Fri, 15 Jun 2018 06:57:39 +0000 (09:57 +0300)
committerDavid S. Miller <davem@davemloft.net>
Fri, 15 Jun 2018 16:04:38 +0000 (09:04 -0700)
commit796ca5000ed06391e60ae463d22181c59ec7b1d8
tree5ebf21856c8f4dce083bd9f20b2942286c84b3f2
parent860fd6efa68a3a1760bf3c662acedb972fcbb575
stmmac: added support for 802.1ad vlan stripping

stmmac reception handler calls stmmac_rx_vlan() to strip the vlan before
calling napi_gro_receive().

The function assumes VLAN tagged frames are always tagged with
802.1Q protocol, and assigns ETH_P_8021Q to the skb by hard-coding
the parameter on call to __vlan_hwaccel_put_tag() .

This causes packets not to be passed to the VLAN slave if it was created
with 802.1AD protocol
(ip link add link eth0 eth0.100 type vlan proto 802.1ad id 100).

This fix passes the protocol from the VLAN header into
__vlan_hwaccel_put_tag() instead of using the hard-coded value of
ETH_P_8021Q.

NETIF_F_HW_VLAN_STAG_RX check was added and the strip action is now
dependent on the correct combination of features and the detected vlan tag.

NETIF_F_HW_VLAN_STAG_RX feature was added to be in line with the driver
actual abilities.

Signed-off-by: Elad Nachman <eladn@gilat.com>
Reviewed-by: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c