[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