Commit ca71de6b authored by Kumar Sanghvi's avatar Kumar Sanghvi Committed by David S. Miller

cxgb4: Calculate len properly for LSO path

Commit 0034b298 ("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: 0034b298 ("cxgb4: Don't assume LSO only uses SGL path in t4_eth_xmit()")
Signed-off-by: default avatarKumar Sanghvi <kumaras@chelsio.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c2b955e0
...@@ -1051,7 +1051,6 @@ out_free: dev_kfree_skb(skb); ...@@ -1051,7 +1051,6 @@ out_free: dev_kfree_skb(skb);
end = (u64 *)wr + flits; end = (u64 *)wr + flits;
len = immediate ? skb->len : 0; len = immediate ? skb->len : 0;
len += sizeof(*cpl);
ssi = skb_shinfo(skb); ssi = skb_shinfo(skb);
if (ssi->gso_size) { if (ssi->gso_size) {
struct cpl_tx_pkt_lso *lso = (void *)wr; struct cpl_tx_pkt_lso *lso = (void *)wr;
...@@ -1079,6 +1078,7 @@ out_free: dev_kfree_skb(skb); ...@@ -1079,6 +1078,7 @@ out_free: dev_kfree_skb(skb);
q->tso++; q->tso++;
q->tx_cso += ssi->gso_segs; q->tx_cso += ssi->gso_segs;
} else { } else {
len += sizeof(*cpl);
wr->op_immdlen = htonl(FW_WR_OP(FW_ETH_TX_PKT_WR) | wr->op_immdlen = htonl(FW_WR_OP(FW_ETH_TX_PKT_WR) |
FW_WR_IMMDLEN(len)); FW_WR_IMMDLEN(len));
cpl = (void *)(wr + 1); cpl = (void *)(wr + 1);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment