linux/drivers/net/ethernet/intel
Anjali Singhai Jain 30520831f0 i40e/i40evf: Fix mixed size frags and linearization
This patch fixes a bug where the i40e Tx queue will hang if this
skb is passed to the driver.

With mixed size fragments while using TSO there was a corner case
where we needed to linearize but we were not. This was seen with
iSCSI traffic and could be reproduced with a frag list that looks
like this:

num_frags = 17, gso_segs = 17, hdr_len = 66,
skb_shinfo(skb)->gso_size = 1448
size = 3002, j = 1, frag_size = 2936, num_frags = 17
size = 4268, j = 1, frag_size = 4096, num_frags = 16
size = 5534, j = 1, frag_size = 4096, num_frags = 15
size = 5352, j = 1, frag_size = 4096, num_frags = 14
size = 5170, j = 1, frag_size = 4096, num_frags = 13
size = 3468, j = 1, frag_size = 2576, num_frags = 12
size = 750, j = 1, frag_size = 112, num_frags = 11
size = 862, j = 2, frag_size = 112, num_frags = 10
size = 974, j = 3, frag_size = 112, num_frags = 9
size = 1126, j = 4, frag_size = 152, num_frags = 8
size = 1330, j = 5, frag_size = 204, num_frags = 7
size = 1534, j = 6, frag_size = 204, num_frags = 6
size = 356, j = 1, frag_size = 204, num_frags = 5
size = 560, j = 2, frag_size = 204, num_frags = 4
size = 764, j = 3, frag_size = 204, num_frags = 3
size = 968, j = 4, frag_size = 204, num_frags = 2
size = 1140, j = 5, frag_size = 172, num_frags = 1
result: linearize = 0, j = 6

Change-ID: I79bb1aeab0af255fe2ce28e93672a85d85bf47e8
Signed-off-by: Anjali Singhai Jain <anjali.singhai@intel.com>
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2015-06-04 20:06:06 -07:00
..
e1000 e1000, e1000e: Use dma_rmb instead of rmb for descriptor read ordering 2015-04-08 12:15:14 -04:00
e1000e e1000e: Add pm_qos header 2015-05-12 23:22:03 -04:00
fm10k fm10k: Do not assume budget will never be 0 for NAPI 2015-05-04 00:06:55 -04:00
i40e i40e/i40evf: Fix mixed size frags and linearization 2015-06-04 20:06:06 -07:00
i40evf i40e/i40evf: Fix mixed size frags and linearization 2015-06-04 20:06:06 -07:00
igb igb: Fix NULL assignment to incorrect variable in igb_reset_q_vector 2015-05-07 05:11:29 -07:00
igbvf igbvf: use netif_carrier_off earlier when bringing if down 2015-03-20 17:45:12 -07:00
ixgb ixgb: call netif_carrier_off early on down 2015-03-20 17:41:52 -07:00
ixgbe bridge/nl: remove wrong use of NLM_F_MULTI 2015-04-29 14:59:16 -04:00
ixgbevf ixgbevf: Use dev_kfree_skb_any in xmit path, not dev_kfree_skb 2015-05-04 00:06:55 -04:00
e100.c e100: Use dma_rmb/wmb where appropriate 2015-04-09 14:25:26 -04:00
Kconfig i40e: Strip configfs code 2015-03-07 07:01:06 -08:00
Makefile fm10k: Add skeletal frame for Intel(R) FM10000 Ethernet Switch Host Interface Driver 2014-09-23 03:59:13 -07:00