5842289a54
Following discussions in [1] and [2], introduce a new bit to describe the Rx checksum status in mbuf. Before this patch, only one flag was available: PKT_RX_L4_CKSUM_BAD: L4 cksum of RX pkt. is not OK. And same for L3: PKT_RX_IP_CKSUM_BAD: IP cksum of RX pkt. is not OK. This had 2 issues: - it was not possible to differentiate "checksum good" from "checksum unknown". - it was not possible for a virtual driver to say "the checksum in packet may be wrong, but data integrity is valid". This patch tries to solve this issue by having 4 states (2 bits) for the IP and L4 Rx checksums. New values are: - PKT_RX_L4_CKSUM_UNKNOWN: no information about the RX L4 checksum -> the application should verify the checksum by sw - PKT_RX_L4_CKSUM_BAD: the L4 checksum in the packet is wrong -> the application can drop the packet without additional check - PKT_RX_L4_CKSUM_GOOD: the L4 checksum in the packet is valid -> the application can accept the packet without verifying the checksum by sw - PKT_RX_L4_CKSUM_NONE: the L4 checksum is not correct in the packet data, but the integrity of the L4 data is verified. -> the application can process the packet but must not verify the checksum by sw. It has to take care to recalculate the cksum if the packet is transmitted (either by sw or using tx offload) And same for L3 (replace L4 by IP in description above). This commit tries to be compatible with existing applications that only check the existing flag (CKSUM_BAD). [1] http://dpdk.org/ml/archives/dev/2016-May/039920.html [2] http://dpdk.org/ml/archives/dev/2016-June/040007.html Signed-off-by: Olivier Matz <olivier.matz@6wind.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com> Reviewed-by: Yuanhan Liu <yuanhan.liu@linux.intel.com> |
||
---|---|---|
.. | ||
librte_acl | ||
librte_cfgfile | ||
librte_cmdline | ||
librte_compat | ||
librte_cryptodev | ||
librte_distributor | ||
librte_eal | ||
librte_ether | ||
librte_hash | ||
librte_ip_frag | ||
librte_jobstats | ||
librte_kni | ||
librte_kvargs | ||
librte_lpm | ||
librte_mbuf | ||
librte_mempool | ||
librte_meter | ||
librte_net | ||
librte_pdump | ||
librte_pipeline | ||
librte_port | ||
librte_power | ||
librte_reorder | ||
librte_ring | ||
librte_sched | ||
librte_table | ||
librte_timer | ||
librte_vhost | ||
Makefile |