[PATCH v11 16/18] net/idpf: add support for Tx offloading

Andrew Rybchenko andrew.rybchenko at oktetlabs.ru
Tue Oct 25 12:14:19 CEST 2022


On 10/24/22 16:12, Junfeng Guo wrote:
> Add Tx offloading support:
>   - support TSO
> 
> Signed-off-by: Beilei Xing <beilei.xing at intel.com>
> Signed-off-by: Xiaoyun Li <xiaoyun.li at intel.com>
> Signed-off-by: Junfeng Guo <junfeng.guo at intel.com>

[snip]

> diff --git a/drivers/net/idpf/idpf_rxtx.c b/drivers/net/idpf/idpf_rxtx.c
> index 143c8b69f3..8f82cf1b59 100644
> --- a/drivers/net/idpf/idpf_rxtx.c
> +++ b/drivers/net/idpf/idpf_rxtx.c

[snip]

> @@ -1968,16 +2070,44 @@ idpf_prep_pkts(__rte_unused void *tx_queue, struct rte_mbuf **tx_pkts,
>   	       uint16_t nb_pkts)
>   {
>   	int i, ret;
> +	uint64_t ol_flags;
>   	struct rte_mbuf *m;
>   
>   	for (i = 0; i < nb_pkts; i++) {
>   		m = tx_pkts[i];
> +		ol_flags = m->ol_flags;
> +
> +		/* Check condition for nb_segs > IDPF_TX_MAX_MTU_SEG. */
> +		if ((ol_flags & RTE_MBUF_F_TX_TCP_SEG) == 0) {
> +			if (m->nb_segs > IDPF_TX_MAX_MTU_SEG) {
> +				rte_errno = EINVAL;
> +				return i;
> +			}

It is non-TSO branch and it should be here before the patch.

> +		} else if ((m->tso_segsz < IDPF_MIN_TSO_MSS) ||
> +			   (m->tso_segsz > IDPF_MAX_TSO_MSS) ||
> +			   (m->pkt_len > IDPF_MAX_TSO_FRAME_SIZE)) {
> +			/* MSS outside the range are considered malicious */
> +			rte_errno = EINVAL;
> +			return i;
> +		}
> +
> +		if ((ol_flags & IDPF_TX_OFFLOAD_NOTSUP_MASK) != 0) {
> +			rte_errno = ENOTSUP;
> +			return i;
> +		}
>   
>   		if (m->pkt_len < IDPF_MIN_FRAME_SIZE) {
>   			rte_errno = EINVAL;
>   			return i;
>   		}
>   
> +#ifdef RTE_LIBRTE_ETHDEV_DEBUG
> +		ret = rte_validate_tx_offload(m);
> +		if (ret != 0) {
> +			rte_errno = -ret;
> +			return i;
> +		}
> +#endif
>   		ret = rte_net_intel_cksum_prepare(m);
>   		if (ret != 0) {
>   			rte_errno = -ret;

[snip]


More information about the dev mailing list