i40e/i40evf: Only offload VLAN tag if enabled
authorJesse Brandeburg <jesse.brandeburg@intel.com>
Tue, 12 Apr 2016 15:30:49 +0000 (08:30 -0700)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Wed, 27 Apr 2016 20:05:47 +0000 (13:05 -0700)
The driver was offloading the VLAN tag into the skb
any time there was a VLAN tag and the hardware stripping was
enabled.  Just check to make sure it's enabled before put_tag.

Change-Id: Ife95290c06edd9a616393b38679923938b382241
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/i40e/i40e_txrx.c
drivers/net/ethernet/intel/i40evf/i40e_txrx.c

index 6e44cf118843624560a760a153d07b2e99874a6c..285efe955c64561bad99e5eb749d739b9eb2629c 100644 (file)
@@ -1370,7 +1370,8 @@ static void i40e_receive_skb(struct i40e_ring *rx_ring,
 {
        struct i40e_q_vector *q_vector = rx_ring->q_vector;
 
-       if (vlan_tag & VLAN_VID_MASK)
+       if ((rx_ring->netdev->features & NETIF_F_HW_VLAN_CTAG_RX) &&
+           (vlan_tag & VLAN_VID_MASK))
                __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), vlan_tag);
 
        napi_gro_receive(&q_vector->napi, skb);
index f101895ecf4a2e51e8409e251ca87766860cd38e..4633235ee70be716e8403a91b1dec59a2277bcef 100644 (file)
@@ -842,7 +842,8 @@ static void i40e_receive_skb(struct i40e_ring *rx_ring,
 {
        struct i40e_q_vector *q_vector = rx_ring->q_vector;
 
-       if (vlan_tag & VLAN_VID_MASK)
+       if ((rx_ring->netdev->features & NETIF_F_HW_VLAN_CTAG_RX) &&
+           (vlan_tag & VLAN_VID_MASK))
                __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), vlan_tag);
 
        napi_gro_receive(&q_vector->napi, skb);