aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKumar Sanghvi <kumaras@chelsio.com>2014-03-13 11:20:50 -0400
committerDavid S. Miller <davem@davemloft.net>2014-03-13 14:36:05 -0400
commitca71de6ba7c18a3a1576e04f7ed8d8508ceba4c9 (patch)
treea1559c68612d6f4d031f5fa3894e4760fd82f339
parentc2b955e0063411826d2c4540c96a8f2c4e1c2cb0 (diff)
cxgb4: Calculate len properly for LSO path
Commit 0034b29 ("cxgb4: Don't assume LSO only uses SGL path in t4_eth_xmit()") introduced a regression where-in length was calculated wrongly for LSO path, causing chip hangs. So, correct the calculation of len. Fixes: 0034b29 ("cxgb4: Don't assume LSO only uses SGL path in t4_eth_xmit()") Signed-off-by: Kumar Sanghvi <kumaras@chelsio.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/chelsio/cxgb4/sge.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/ethernet/chelsio/cxgb4/sge.c b/drivers/net/ethernet/chelsio/cxgb4/sge.c
index a7c56b3b9fc9..46429f9d0592 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/sge.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/sge.c
@@ -1051,7 +1051,6 @@ out_free: dev_kfree_skb(skb);
1051 end = (u64 *)wr + flits; 1051 end = (u64 *)wr + flits;
1052 1052
1053 len = immediate ? skb->len : 0; 1053 len = immediate ? skb->len : 0;
1054 len += sizeof(*cpl);
1055 ssi = skb_shinfo(skb); 1054 ssi = skb_shinfo(skb);
1056 if (ssi->gso_size) { 1055 if (ssi->gso_size) {
1057 struct cpl_tx_pkt_lso *lso = (void *)wr; 1056 struct cpl_tx_pkt_lso *lso = (void *)wr;
@@ -1079,6 +1078,7 @@ out_free: dev_kfree_skb(skb);
1079 q->tso++; 1078 q->tso++;
1080 q->tx_cso += ssi->gso_segs; 1079 q->tx_cso += ssi->gso_segs;
1081 } else { 1080 } else {
1081 len += sizeof(*cpl);
1082 wr->op_immdlen = htonl(FW_WR_OP(FW_ETH_TX_PKT_WR) | 1082 wr->op_immdlen = htonl(FW_WR_OP(FW_ETH_TX_PKT_WR) |
1083 FW_WR_IMMDLEN(len)); 1083 FW_WR_IMMDLEN(len));
1084 cpl = (void *)(wr + 1); 1084 cpl = (void *)(wr + 1);