linux_dsm_epyc7002/drivers/net/ethernet/intel/i40evf
Alexander Duyck 248de22e63 i40e/i40evf: Account for frags split over multiple descriptors in check linearize
The original code for __i40e_chk_linearize didn't take into account the
fact that if a fragment is 16K in size or larger it has to be split over 2
descriptors and the smaller of those 2 descriptors will be on the trailing
edge of the transmit. As a result we can get into situations where we didn't
catch requests that could result in a Tx hang.

This patch takes care of that by subtracting the length of all but the
trailing edge of the stale fragment before we test for sum. By doing this
we can guarantee that we have all cases covered, including the case of a
fragment that spans multiple descriptors. We don't need to worry about
checking the inner portions of this since 12K is the maximum aligned DMA
size and that is larger than any MSS will ever be since the MTU limit for
jumbos is something on the order of 9K.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2018-01-03 08:47:29 -08:00
..
i40e_adminq_cmd.h i40e: Enable cloud filters via tc-flower 2017-10-31 11:13:49 -07:00
i40e_adminq.c i40e: reduce wait time for adminq command completion 2017-04-19 17:38:25 -07:00
i40e_adminq.h i40e: reduce wait time for adminq command completion 2017-04-19 17:38:25 -07:00
i40e_alloc.h i40evf: Fix the headers and update copyright year. 2014-05-21 01:54:43 -07:00
i40e_common.c i40e: Add support for 'ethtool -m' 2017-10-02 12:46:35 -07:00
i40e_devids.h i40evf: Add support for Adaptive Virtual Function 2017-06-01 14:30:02 -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/i40evf: Big endian fixes for handling HMC 2014-06-26 04:44:57 -07:00
i40e_osdep.h i40evf: remove unnecessary __packed 2017-07-26 03:25:21 -07:00
i40e_prototype.h i40e: Add support for 'ethtool -m' 2017-10-02 12:46:35 -07:00
i40e_register.h i40evf: Remove PF specific register definitions from the VF 2015-08-26 15:05:17 -07:00
i40e_status.h i40evf: Fix the headers and update copyright year. 2014-05-21 01:54:43 -07:00
i40e_trace.h i40e/i40evf: Add tracepoints 2017-04-19 16:47:31 -07:00
i40e_txrx.c i40e/i40evf: Account for frags split over multiple descriptors in check linearize 2018-01-03 08:47:29 -08:00
i40e_txrx.h i40e/i40evf: bundle more descriptors when allocating buffers 2017-10-09 14:27:42 -07:00
i40e_type.h i40e: Retry AQC GetPhyAbilities to overcome I2CRead hangs 2017-10-09 14:32:18 -07:00
i40evf_client.c i40evf: fix client notify of l2 params 2017-11-21 23:37:58 -08:00
i40evf_client.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
i40evf_ethtool.c i40evf: Enable VF to request an alternate queue allocation 2017-10-02 12:46:35 -07:00
i40evf_main.c i40evf: fix client notify of l2 params 2017-11-21 23:37:58 -08:00
i40evf_virtchnl.c i40e/i40evf: don't trust VF to reset itself 2017-10-13 14:27:13 -07:00
i40evf.h i40e/i40evf: organize and re-number feature flags 2017-10-06 08:11:32 -07:00
Makefile i40e/i40evf: Add tracepoints 2017-04-19 16:47:31 -07:00