Skip to content

Commit 8b46168

Browse files
wanghuanhuan12davem330
authored andcommitted
nfp: fix incorrectly set csum flag for nfdk path
The csum flag of IPsec packet are set repeatedly. Therefore, the csum flag set of IPsec and non-IPsec packet need to be distinguished. As the ipv6 header does not have a csum field, so l3-csum flag is not required to be set for ipv6 case. Fixes: 436396f ("nfp: support IPsec offloading for NFP3800") Signed-off-by: Huanhuan Wang <[email protected]> Reviewed-by: Louis Peens <[email protected]> Signed-off-by: Simon Horman <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 3e04419 commit 8b46168

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

drivers/net/ethernet/netronome/nfp/nfdk/dp.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -387,15 +387,17 @@ netdev_tx_t nfp_nfdk_tx(struct sk_buff *skb, struct net_device *netdev)
387387
if (!skb_is_gso(skb)) {
388388
real_len = skb->len;
389389
/* Metadata desc */
390-
metadata = nfp_nfdk_tx_csum(dp, r_vec, 1, skb, metadata);
390+
if (!ipsec)
391+
metadata = nfp_nfdk_tx_csum(dp, r_vec, 1, skb, metadata);
391392
txd->raw = cpu_to_le64(metadata);
392393
txd++;
393394
} else {
394395
/* lso desc should be placed after metadata desc */
395396
(txd + 1)->raw = nfp_nfdk_tx_tso(r_vec, txbuf, skb);
396397
real_len = txbuf->real_len;
397398
/* Metadata desc */
398-
metadata = nfp_nfdk_tx_csum(dp, r_vec, txbuf->pkt_cnt, skb, metadata);
399+
if (!ipsec)
400+
metadata = nfp_nfdk_tx_csum(dp, r_vec, txbuf->pkt_cnt, skb, metadata);
399401
txd->raw = cpu_to_le64(metadata);
400402
txd += 2;
401403
txbuf++;

drivers/net/ethernet/netronome/nfp/nfdk/ipsec.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,13 @@
99
u64 nfp_nfdk_ipsec_tx(u64 flags, struct sk_buff *skb)
1010
{
1111
struct xfrm_state *x = xfrm_input_state(skb);
12+
struct iphdr *iph = ip_hdr(skb);
1213

13-
if (x->xso.dev && (x->xso.dev->features & NETIF_F_HW_ESP_TX_CSUM))
14-
flags |= NFDK_DESC_TX_L3_CSUM | NFDK_DESC_TX_L4_CSUM;
14+
if (x->xso.dev && (x->xso.dev->features & NETIF_F_HW_ESP_TX_CSUM)) {
15+
if (iph->version == 4)
16+
flags |= NFDK_DESC_TX_L3_CSUM;
17+
flags |= NFDK_DESC_TX_L4_CSUM;
18+
}
1519

1620
return flags;
1721
}

0 commit comments

Comments
 (0)