cxgb4: fix TSO descriptors
Commit 1704d74894
("cxgb4vf: small changes
to message processing structures/macros") was incomplete and causes cxgb4
to write bad TSO descriptors. Fix that up by reverting the offending part
of that commit and adjusting field accesses now that they are one level
deeper.
Signed-off-by: Dimitris Michailidis <dm@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
ba5d3c66e0
commit
625ac6ae57
|
@ -931,23 +931,23 @@ out_free: dev_kfree_skb(skb);
|
|||
|
||||
ssi = skb_shinfo(skb);
|
||||
if (ssi->gso_size) {
|
||||
struct cpl_tx_pkt_lso_core *lso = (void *)(wr + 1);
|
||||
struct cpl_tx_pkt_lso *lso = (void *)wr;
|
||||
bool v6 = (ssi->gso_type & SKB_GSO_TCPV6) != 0;
|
||||
int l3hdr_len = skb_network_header_len(skb);
|
||||
int eth_xtra_len = skb_network_offset(skb) - ETH_HLEN;
|
||||
|
||||
wr->op_immdlen = htonl(FW_WR_OP(FW_ETH_TX_PKT_WR) |
|
||||
FW_WR_IMMDLEN(sizeof(*lso)));
|
||||
lso->lso_ctrl = htonl(LSO_OPCODE(CPL_TX_PKT_LSO) |
|
||||
LSO_FIRST_SLICE | LSO_LAST_SLICE |
|
||||
LSO_IPV6(v6) |
|
||||
LSO_ETHHDR_LEN(eth_xtra_len / 4) |
|
||||
LSO_IPHDR_LEN(l3hdr_len / 4) |
|
||||
LSO_TCPHDR_LEN(tcp_hdr(skb)->doff));
|
||||
lso->ipid_ofst = htons(0);
|
||||
lso->mss = htons(ssi->gso_size);
|
||||
lso->seqno_offset = htonl(0);
|
||||
lso->len = htonl(skb->len);
|
||||
lso->c.lso_ctrl = htonl(LSO_OPCODE(CPL_TX_PKT_LSO) |
|
||||
LSO_FIRST_SLICE | LSO_LAST_SLICE |
|
||||
LSO_IPV6(v6) |
|
||||
LSO_ETHHDR_LEN(eth_xtra_len / 4) |
|
||||
LSO_IPHDR_LEN(l3hdr_len / 4) |
|
||||
LSO_TCPHDR_LEN(tcp_hdr(skb)->doff));
|
||||
lso->c.ipid_ofst = htons(0);
|
||||
lso->c.mss = htons(ssi->gso_size);
|
||||
lso->c.seqno_offset = htonl(0);
|
||||
lso->c.len = htonl(skb->len);
|
||||
cpl = (void *)(lso + 1);
|
||||
cntrl = TXPKT_CSUM_TYPE(v6 ? TX_CSUM_TCPIP6 : TX_CSUM_TCPIP) |
|
||||
TXPKT_IPHDR_LEN(l3hdr_len) |
|
||||
|
|
Loading…
Reference in a new issue