linux/drivers/net/ethernet/intel/i40evf
Vlad Yasevich a12c415834 i40evf: Fix TSO and hw checksums for non-accelerated vlan packets.
This device claims TSO and checksum support for vlans.  It also
allows a user to control vlan acceleration offloading.  As such,
it is possible to turn off vlan acceleration and configure a vlan
which will continue to support TSO and hw checksums.

In such situation the packet passed down the the device will contain
a vlan header and skb->protocol will be set to ETH_P_8021Q.
The device assumes that skb->protocol contains network protocol
value and uses that value to set up TSO and checksum information.
This results in corrupted frames sent on the wire.

This patch extract the protocol value correctly and corrects TSO
and checksums for non-accelerated traffic.

Fix this by using vlan_get_protocol() helper.

CC: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
CC: Jesse Brandeburg <jesse.brandeburg@intel.com>
CC: Bruce Allan <bruce.w.allan@intel.com>
CC: Carolyn Wyborny <carolyn.wyborny@intel.com>
CC: Don Skidmore <donald.c.skidmore@intel.com>
CC: Greg Rose <gregory.v.rose@intel.com>
CC: Alex Duyck <alexander.h.duyck@intel.com>
CC: John Ronciak <john.ronciak@intel.com>
CC: Mitch Williams <mitch.a.williams@intel.com>
CC: Linux NICS <linux.nics@intel.com>
CC: e1000-devel@lists.sourceforge.net
Signed-off-by: Vladislav Yasevich <vyasevic@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-08-25 17:27:09 -07:00
..
Makefile i40evf: Fix the headers and update copyright year. 2014-05-21 01:54:43 -07:00
i40e_adminq.c i40e: always print aqtx answer 2014-07-24 05:06:10 -07:00
i40e_adminq.h i40e/i40evf: Add nvmupdate support 2014-07-24 03:32:40 -07:00
i40e_adminq_cmd.h i40e/i40evf: AdminQ API update for new FW 2014-06-11 08:47:35 -07:00
i40e_alloc.h i40evf: Fix the headers and update copyright year. 2014-05-21 01:54:43 -07:00
i40e_common.c i40evf: don't violate scope 2014-07-02 19:02:18 -07:00
i40e_hmc.h i40e/i40evf: Force a shifted '1' to be unsigned 2014-07-02 19:02:19 -07:00
i40e_lan_hmc.h i40e/i40evf: Big endian fixes for handling HMC 2014-06-26 04:44:57 -07:00
i40e_osdep.h i40evf: Fix the headers and update copyright year. 2014-05-21 01:54:43 -07:00
i40e_prototype.h i40evf: Fix the headers and update copyright year. 2014-05-21 01:54:43 -07:00
i40e_register.h i40e/i40evf: i40e_register.h update 2014-06-19 20:22:02 -07:00
i40e_status.h i40evf: Fix the headers and update copyright year. 2014-05-21 01:54:43 -07:00
i40e_txrx.c i40evf: Fix TSO and hw checksums for non-accelerated vlan packets. 2014-08-25 17:27:09 -07:00
i40e_txrx.h i40e/i40evf: Do not free the dummy packet buffer synchronously 2014-07-02 19:02:18 -07:00
i40e_type.h i40e/i40evf: Add nvmupdate support 2014-07-24 03:32:40 -07:00
i40e_virtchnl.h i40e/i40evf: Clean up a few things 2014-06-08 02:01:26 -07:00
i40evf.h i40evf: fix crash when changing ring sizes 2014-06-05 02:13:01 -07:00
i40evf_ethtool.c i40evf: fix scan warning on sprintf 2014-08-02 19:41:14 -07:00
i40evf_main.c PCI: Remove DEFINE_PCI_DEVICE_TABLE macro use 2014-08-12 12:15:14 -06:00
i40evf_virtchnl.c i40evf: set flags before sending message 2014-06-30 23:46:11 -07:00