Commit c52e9c63 authored by Lendacky, Thomas's avatar Lendacky, Thomas Committed by David S. Miller

amd-xgbe: VLAN Rx tag stripping fix

When receiving a VLAN packet check to be sure that VLAN
RX CTAG stripping is enabled before indicating that the
tag has been stripped in the packet information data
structure.
Signed-off-by: default avatarTom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 6e5eed04
...@@ -1113,6 +1113,7 @@ static int xgbe_dev_read(struct xgbe_channel *channel) ...@@ -1113,6 +1113,7 @@ static int xgbe_dev_read(struct xgbe_channel *channel)
struct xgbe_ring_data *rdata; struct xgbe_ring_data *rdata;
struct xgbe_ring_desc *rdesc; struct xgbe_ring_desc *rdesc;
struct xgbe_packet_data *packet = &ring->packet_data; struct xgbe_packet_data *packet = &ring->packet_data;
struct net_device *netdev = channel->pdata->netdev;
unsigned int err, etlt; unsigned int err, etlt;
DBGPR("-->xgbe_dev_read: cur = %d\n", ring->cur); DBGPR("-->xgbe_dev_read: cur = %d\n", ring->cur);
...@@ -1153,7 +1154,8 @@ static int xgbe_dev_read(struct xgbe_channel *channel) ...@@ -1153,7 +1154,8 @@ static int xgbe_dev_read(struct xgbe_channel *channel)
DBGPR(" err=%u, etlt=%#x\n", err, etlt); DBGPR(" err=%u, etlt=%#x\n", err, etlt);
if (!err || (err && !etlt)) { if (!err || (err && !etlt)) {
if (etlt == 0x09) { if ((etlt == 0x09) &&
(netdev->features & NETIF_F_HW_VLAN_CTAG_RX)) {
XGMAC_SET_BITS(packet->attributes, RX_PACKET_ATTRIBUTES, XGMAC_SET_BITS(packet->attributes, RX_PACKET_ATTRIBUTES,
VLAN_CTAG, 1); VLAN_CTAG, 1);
packet->vlan_ctag = XGMAC_GET_BITS_LE(rdesc->desc0, packet->vlan_ctag = XGMAC_GET_BITS_LE(rdesc->desc0,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment