aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet
diff options
context:
space:
mode:
authorSritej Velaga <sritej.velaga@qlogic.com>2013-04-18 04:10:05 -0400
committerDavid S. Miller <davem@davemloft.net>2013-04-18 14:54:59 -0400
commit3eead213fe9828b511faf74a7ed566b56b2b3bcc (patch)
tree3a45c1af1152f7679a473872a902443698d8d797 /drivers/net/ethernet
parenta4325ea242d9d0889cb7e86811fef3ff3d714d29 (diff)
qlcnic: fix TSO race condition
When driver receives a packet with gso size > 0 and when TSO is disabled, it should be transmitted as a TSO packet to prevent Tx timeout and subsequent firmware reset. Signed-off-by: Sritej Velaga <sritej.velaga@qlogic.com> Signed-off-by: Shahed Shaikh <shahed.shaikh@qlogic.com> Acked-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet')
-rw-r--r--drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c
index 0e630061bff3..5fa847fe388a 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c
@@ -358,8 +358,7 @@ set_flags:
358 memcpy(&first_desc->eth_addr, skb->data, ETH_ALEN); 358 memcpy(&first_desc->eth_addr, skb->data, ETH_ALEN);
359 } 359 }
360 opcode = TX_ETHER_PKT; 360 opcode = TX_ETHER_PKT;
361 if ((adapter->netdev->features & (NETIF_F_TSO | NETIF_F_TSO6)) && 361 if (skb_is_gso(skb)) {
362 skb_shinfo(skb)->gso_size > 0) {
363 hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb); 362 hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb);
364 first_desc->mss = cpu_to_le16(skb_shinfo(skb)->gso_size); 363 first_desc->mss = cpu_to_le16(skb_shinfo(skb)->gso_size);
365 first_desc->total_hdr_length = hdr_len; 364 first_desc->total_hdr_length = hdr_len;