[dpdk-dev] [PATCH v2 1/4] ethdev: add Rx offload outer UDP checksum definition

Andrew Rybchenko arybchenko at solarflare.com
Wed Oct 3 09:34:52 CEST 2018


On 10/2/18 10:24 PM, Jerin Jacob wrote:
> Introduced DEV_RX_OFFLOAD_OUTER_UDP_CKSUM Rx offload flag and
> PKT_RX_EL4_CKSUM_BAD mbuf ol_flags to detect outer UDP checksum
> failure.
>
> - To use hardware Rx outer UDP checksum offload, the user needs to
> configure DEV_RX_OFFLOAD_OUTER_UDP_CKSUM offload flags in slowpath.
>
> - Driver updates the PKT_RX_EL4_CKSUM_BAD mbuf ol_flag on checksum failure
> similar to the outer L3 PKT_RX_EIP_CKSUM_BAD flag.
>
> Signed-off-by: Jerin Jacob <jerin.jacob at caviumnetworks.com>

1. I'm not sure that it is OK that mbuf and ethdev changes go in one patch.
     It seems typically mbuf changes go separately and mbuf changes should
     be applied to main dpdk repo.

2. I'd like to see thought why single bit is used for outer L2 checksum when
     2 bits (UNKNOWN, BAD, GOOD, NONE) are used for PKT_RX_L4_CKSUM.
     May be it is OK, but it would be useful to state explicitly why it 
is decided
     to go this way.

3. PKT_RX_L4_CKSUM_MASK description says nothing if it is inner or outer.
     May be it is not directly related to changeset, but I think it 
would be really
     useful to clarify it.


Plus one nit below.

> ---
>
> v2:
> - Removed DEV_RX_OFFLOAD_OUTER_TCP_CKSUM and DEV_RX_OFFLOAD_OUTER_SCTP_CKSUM
> as there is no realworld use case for it.
> See: http://patches.dpdk.org/patch/44692/
>
> This patch series is depended on http://patches.dpdk.org/patch/45840/
>
> --
>   app/test-pmd/config.c          | 9 +++++++++
>   doc/guides/nics/features.rst   | 3 +++
>   lib/librte_ethdev/rte_ethdev.c | 1 +
>   lib/librte_ethdev/rte_ethdev.h | 1 +
>   lib/librte_mbuf/rte_mbuf.c     | 2 ++
>   lib/librte_mbuf/rte_mbuf.h     | 3 +++
>   6 files changed, 19 insertions(+)
>
> diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
> index 1adc9b94b..d53c527e5 100644
> --- a/app/test-pmd/config.c
> +++ b/app/test-pmd/config.c
> @@ -594,6 +594,15 @@ port_offload_cap_display(portid_t port_id)
>   			printf("off\n");
>   	}
>   
> +	if (dev_info.rx_offload_capa & DEV_RX_OFFLOAD_OUTER_UDP_CKSUM) {
> +		printf("RX Outer UDP checksum:               ");
> +		if (ports[port_id].dev_conf.rxmode.offloads &
> +		    DEV_RX_OFFLOAD_OUTER_UDP_CKSUM)
> +			printf("on\n");
> +		else
> +			printf("off\n");
> +	}
> +
>   	if (dev_info.rx_offload_capa & DEV_RX_OFFLOAD_TCP_LRO) {
>   		printf("Large receive offload:         ");
>   		if (ports[port_id].dev_conf.rxmode.offloads &
> diff --git a/doc/guides/nics/features.rst b/doc/guides/nics/features.rst
> index d42489b6d..2c2959e0b 100644
> --- a/doc/guides/nics/features.rst
> +++ b/doc/guides/nics/features.rst
> @@ -639,6 +639,9 @@ Inner L4 checksum
>   
>   Supports inner packet L4 checksum.
>   
> +* **[uses]     rte_eth_rxconf,rte_eth_rxmode**: ``offloads:DEV_RX_OFFLOAD_OUTER_UDP_CKSUM``.
> +* **[provides] mbuf**: ``mbuf.ol_flags:PKT_RX_EL4_CKSUM_BAD``.
> +* **[provides] rte_eth_dev_info**: ``rx_offload_capa,rx_queue_offload_capa:DEV_RX_OFFLOAD_OUTER_UDP_CKSUM``,
>   

One more empty line should be added here to have two empty lines between 
features.

Andrew.


More information about the dev mailing list