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>
This commit is contained in:
Kumar Sanghvi 2014-03-13 20:50:50 +05:30 committed by David S. Miller
parent c2b955e006
commit ca71de6ba7
1 changed files with 1 additions and 1 deletions

View File

@ -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);
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);