linux/drivers/net/ethernet/intel/i40evf
Alexander Duyck 858296c878 i40e/i40evf: Fix i40e_rx_checksum
There are a couple of issues I found in i40e_rx_checksum while doing some
recent testing.  As a result I have found the Rx checksum logic is pretty
much broken and returning that the checksum is valid for tunnels in cases
where it is not.

First the inner types are not the correct values to use to test for if a
tunnel is present or not.  In addition the inner protocol types are not a
bitmask as such performing an OR of the values doesn't make sense.  I have
instead changed the code so that the inner protocol types are used to
determine if we report CHECKSUM_UNNECESSARY or not.  For anything that does
not end in UDP, TCP, or SCTP it doesn't make much sense to report a
checksum offload since it won't contain a checksum anyway.

This leaves us with the need to set the csum_level based on some value.
For that purpose I am using the tunnel_type field.  If the tunnel type is
GRENAT or greater then this means we have a GRE or UDP tunnel with an inner
header.  In the case of GRE or UDP we will have a possible checksum present
so for this reason it should be safe to set the csum_level to 1 to indicate
that we are reporting the state of the inner header.

Signed-off-by: Alexander Duyck <aduyck@mirantis.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2016-07-14 23:17:45 -07:00
..
i40e_adminq_cmd.h i40evf: make use of BIT() macro to avoid signed left shift 2016-05-01 17:05:08 -07:00
i40e_adminq.c i40e: clean event descriptor before use 2016-02-17 23:39:58 -08:00
i40e_adminq.h i40e: Move NVM variable out of AQ struct 2016-04-06 18:45:11 -07:00
i40e_alloc.h
i40e_common.c i40e: Add DeviceID for X722 QSFP+ 2016-04-27 13:05:29 -07:00
i40e_devids.h i40e: Add DeviceID for X722 QSFP+ 2016-04-27 13:05:29 -07:00
i40e_hmc.h i40e: use BIT and BIT_ULL macros 2015-07-23 05:33:55 -07:00
i40e_lan_hmc.h
i40e_osdep.h move io-64-nonatomic*.h out of asm-generic 2015-10-15 00:21:07 +02:00
i40e_prototype.h i40e: implement and use Rx CTL helper functions 2016-02-18 23:59:15 -08:00
i40e_register.h i40evf: Remove PF specific register definitions from the VF 2015-08-26 15:05:17 -07:00
i40e_status.h
i40e_txrx.c i40e/i40evf: Fix i40e_rx_checksum 2016-07-14 23:17:45 -07:00
i40e_txrx.h i40e/i40evf: Remove unused hardware receive descriptor code 2016-05-05 22:59:54 -07:00
i40e_type.h i40e/i40evf: fix I40E_MASK signed shift overflow warnings 2016-05-01 17:05:08 -07:00
i40e_virtchnl.h i40e: Add RSS configuration to virtual channel 2016-04-06 18:55:18 -07:00
i40evf_ethtool.c i40evf: refactor receive routine 2016-05-05 22:42:58 -07:00
i40evf_main.c intel: Add support for IPv6 IP-in-IP offload 2016-05-20 19:25:52 -04:00
i40evf_virtchnl.c i40e: Add allmulti support for the VF 2016-05-13 22:31:42 -07:00
i40evf.h i40e: Add allmulti support for the VF 2016-05-13 22:31:42 -07:00
Makefile