linux/drivers/net/ethernet/intel/i40e
Alexander Duyck 3f3f7cb875 i40e/i40evf: Limit TSO to 7 descriptors for payload instead of 8 per packet
This patch addresses a bug introduced based on my interpretation of the
XL710 datasheet.  Specifically section 8.4.1 states that "A single transmit
packet may span up to 8 buffers (up to 8 data descriptors per packet
including both the header and payload buffers)."  It then later goes on to
say that each segment for a TSO obeys the previous rule, however it then
refers to TSO header and the segment payload buffers.

I believe the actual limit for fragments with TSO and a skbuff that has
payload data in the header portion of the buffer is actually only 7
fragments as the skb->data portion counts as 2 buffers, one for the TSO
header, and one for a segment payload buffer.

Fixes: 2d37490b82 ("i40e/i40evf: Rewrite logic for 8 descriptor per packet check")
Reported-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
Signed-off-by: Alexander Duyck <aduyck@mirantis.com>
Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Tested-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2016-04-13 19:59:23 -07:00
..
i40e_adminq_cmd.h i40e: add adminq commands for Rx CTL registers 2016-02-18 23:55:59 -08:00
i40e_adminq.c i40e: clean event descriptor before use 2016-02-17 23:39:58 -08:00
i40e_adminq.h i40e/i40evf: fix a potential type compare issue 2015-10-07 13:38:11 -07:00
i40e_alloc.h
i40e_client.c i40e: Add support for client interface for IWARP driver 2016-02-29 17:10:52 -05:00
i40e_client.h i40e: Add support for client interface for IWARP driver 2016-02-29 17:10:52 -05:00
i40e_common.c i40e: Use the new rx ctl register helpers. Don't use AQ calls from clear_hw. 2016-02-19 00:02:29 -08:00
i40e_dcb_nl.c i40e: Change some messages from info to debug only 2015-10-15 01:58:41 -07:00
i40e_dcb.c i40e: refactor DCB function 2016-02-16 19:04:08 -08:00
i40e_dcb.h i40e: Add parsing for CEE DCBX TLVs 2015-10-08 15:11:38 -07:00
i40e_debugfs.c i40e: queue-specific settings for interrupt moderation 2016-02-19 22:54:10 -05:00
i40e_devids.h i40e: remove VF device IDs from PF 2016-02-16 19:24:26 -08:00
i40e_diag.c i40e: use BIT and BIT_ULL macros 2015-07-23 05:33:55 -07:00
i40e_diag.h
i40e_ethtool.c i40e/ethtool: support coalesce setting by queue 2016-02-19 22:54:10 -05:00
i40e_fcoe.c i40e: Use the new rx ctl register helpers. Don't use AQ calls from clear_hw. 2016-02-19 00:02:29 -08:00
i40e_fcoe.h i40e: use BIT and BIT_ULL macros 2015-07-23 05:33:55 -07:00
i40e_hmc.c i40e: clean up unneeded gotos 2015-07-23 05:15:26 -07:00
i40e_hmc.h i40e: use BIT and BIT_ULL macros 2015-07-23 05:33:55 -07:00
i40e_lan_hmc.c i40e: use explicit cast from u16 to u8 2015-12-12 21:08:26 -08:00
i40e_lan_hmc.h
i40e_main.c i40e: fix errant PCIe bandwidth message 2016-04-05 14:52:02 -07:00
i40e_nvm.c i40e: add a little more to an NVM update debug message 2016-02-16 19:08:17 -08:00
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_ptp.c i40e: generate fewer startup messages 2015-10-16 04:36:13 -07:00
i40e_register.h i40e: Expose some registers to program parser, FD and RSS logic 2016-02-18 23:49:31 -08:00
i40e_status.h
i40e_txrx.c i40e/i40evf: Limit TSO to 7 descriptors for payload instead of 8 per packet 2016-04-13 19:59:23 -07:00
i40e_txrx.h i40e/i40evf: Limit TSO to 7 descriptors for payload instead of 8 per packet 2016-04-13 19:59:23 -07:00
i40e_type.h Round two of 4.6 merge window patches 2016-03-22 15:48:44 -07:00
i40e_virtchnl_pf.c Round two of 4.6 merge window patches 2016-03-22 15:48:44 -07:00
i40e_virtchnl_pf.h Round two of 4.6 merge window patches 2016-03-22 15:48:44 -07:00
i40e_virtchnl.h i40e: Add support for client interface for IWARP driver 2016-02-29 17:10:52 -05:00
i40e.h Round two of 4.6 merge window patches 2016-03-22 15:48:44 -07:00
Makefile i40e: Add support for client interface for IWARP driver 2016-02-29 17:10:52 -05:00