[dpdk-dev] [PATCH v2] Warns if IPv4, UDP or TCP checksum offload not available

Ananyev, Konstantin konstantin.ananyev at intel.com
Wed Sep 15 00:22:04 CEST 2021



> 
> From: usamanadeem321 <usama.nadeem at emumba.com>
> 
> Checks if IPV4, UDP and TCP Checksum offloads are available.
> If not available, prints a warning message.
> 
> Bugzilla ID: 545
> Signed-off-by: usamanadeem321 <usama.nadeem at emumba.com>
> ---
>  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



More information about the dev mailing list