Message ID | 1460475052-6348-11-git-send-email-harshitha.ramamurthy@intel.com |
---|---|
State | Accepted |
Delegated to: | Jeff Kirsher |
Headers | show |
> -----Original Message----- > From: Intel-wired-lan [mailto:intel-wired-lan-bounces@lists.osuosl.org] On > Behalf Of Harshitha Ramamurthy > Sent: Tuesday, April 12, 2016 8:31 AM > To: intel-wired-lan@lists.osuosl.org > Subject: [Intel-wired-lan] [next PATCH S33 10/13] i40e/i40evf: Only offload > vlan tag if enabled > > From: Jesse Brandeburg <jesse.brandeburg@intel.com> > > 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. > > Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> > Change-Id: Ife95290c06edd9a616393b38679923938b382241 > --- > Testing Hints : Make sure ethtool control over RX vlan tag insertion/removal > still works. > > drivers/net/ethernet/intel/i40e/i40e_txrx.c | 3 ++- > drivers/net/ethernet/intel/i40evf/i40e_txrx.c | 3 ++- > 2 files changed, 4 insertions(+), 2 deletions(-) Tested-by: Andrew Bowers <andrewx.bowers@intel.com> VLAN offloading can be enabled and disabled with ethtool and works correctly.
diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c index f4af60c..05293f6 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c +++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c @@ -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); diff --git a/drivers/net/ethernet/intel/i40evf/i40e_txrx.c b/drivers/net/ethernet/intel/i40evf/i40e_txrx.c index 3eb39a1..e18d9d9 100644 --- a/drivers/net/ethernet/intel/i40evf/i40e_txrx.c +++ b/drivers/net/ethernet/intel/i40evf/i40e_txrx.c @@ -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);