Re: [dpdk-dev] [PATCH v2] Warns if IPv4, UDP or TCP checksum offload not available
From: Ananyev, Konstantin <hidden>
Date: 2021-09-14 22:22:10
quoted hunk ↗ jump to hunk
From: usamanadeem321 <redacted> Checks if IPV4, UDP and TCP Checksum offloads are available. If not available, prints a warning message. Bugzilla ID: 545 Signed-off-by: usamanadeem321 <redacted> --- examples/l3fwd/main.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-)diff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c index 00ac267af1..ae62bc570d 100644 --- a/examples/l3fwd/main.c +++ b/examples/l3fwd/main.c@@ -123,7 +123,6 @@ static struct rte_eth_conf port_conf = { .mq_mode = ETH_MQ_RX_RSS, .max_rx_pkt_len = RTE_ETHER_MAX_LEN, .split_hdr_size = 0, - .offloads = DEV_RX_OFFLOAD_CHECKSUM, }, .rx_adv_conf = { .rss_conf = {@@ -1039,6 +1038,27 @@ l3fwd_poll_resource_setup(void) local_port_conf.txmode.offloads |= DEV_TX_OFFLOAD_MBUF_FAST_FREE; + if (dev_info.rx_offload_capa & DEV_RX_OFFLOAD_IPV4_CKSUM) + local_port_conf.rxmode.offloads |= + DEV_RX_OFFLOAD_IPV4_CKSUM; + else { + printf("WARNING: IPV4 Checksum offload not available.\n"); + } + + if (dev_info.rx_offload_capa & DEV_RX_OFFLOAD_UDP_CKSUM) + local_port_conf.rxmode.offloads |= + DEV_RX_OFFLOAD_UDP_CKSUM; + + else + printf("WARNING: UDP Checksum offload not available.\n"); + + if (dev_info.rx_offload_capa & DEV_RX_OFFLOAD_TCP_CKSUM) + local_port_conf.rxmode.offloads |= + DEV_RX_OFFLOAD_TCP_CKSUM; + + else + printf("WARNING: TCP Checksum offload not available.\n"); +
Sorry, but I didn't get the logic: Application expects some offloads to be supported by HW. You add the code that checks for offloads, but if they are not supported just prints warning and continues, as if everything is ok. Doesn't look like correct behaviour to me. I think, it should either terminate with error message or be prepared to work properly on HW without these offloads (check cksums in SW if necessary). In fact I don't see what was wrong with original behaviour, one thing that probably was missing - more descriptive error message.
local_port_conf.rx_adv_conf.rss_conf.rss_hf &= dev_info.flow_type_rss_offloads; -- 2.25.1