Re: [dpdk-dev] [PATCH v1] net/ixgbe: adjust error for UDP with zero checksum
From: Wang, Haiyue <hidden>
Date: 2021-02-02 12:54:59
-----Original Message----- From: David Marchand <redacted> Sent: Tuesday, February 2, 2021 17:45 To: Wang, Haiyue <redacted> Cc: dev <redacted>; pvalerio@redhat.com; Aaron Conole <aconole@redhat.com>; Zhang, Qi Z [off-list ref]; Rong, Leyi [off-list ref]; Tu, Lijuan [off-list ref]; dpdk stable [off-list ref]; Guo, Jia [off-list ref]; Richardson, Bruce [off-list ref]; Ananyev, Konstantin [off-list ref]; Jerin Jacob Kollanukkaran [off-list ref]; Ruifeng Wang (Arm Technology China) [off-list ref] Subject: Re: [PATCH v1] net/ixgbe: adjust error for UDP with zero checksum
If the driver/hw can't report a valid checksum hint, it should announce it does not know if the checksum is valid (neither bad, nor good). So the workaround for udp packets (on this hw model) would be to report PKT_RX_L4_CKSUM_UNKNOWN. The sw application will then have to recompute the checksum itself if needed.
Looks like this workaround will make OVS performance drop a lot, since
every UDP packet needs to do checksum by SW:
bool hwol_good_l4_csum = dp_packet_l4_checksum_valid(pkt)
|| dp_packet_hwol_tx_l4_checksum(pkt);
/* Validate the checksum only when hwol is not supported. */
if (extract_l4(&ctx->key, l4, dp_packet_l4_size(pkt),
&ctx->icmp_related, l3, !hwol_good_l4_csum,
NULL)) {
ctx->hash = conn_key_hash(&ctx->key, ct->hash_basis);
return true;
}
The lesser of the two rights, marking as good seems a little better.
-- David Marchand