All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Zhang, Qi Z" <qi.z.zhang@intel.com>
To: "Ye, MingjinX" <mingjinx.ye@intel.com>, "dev@dpdk.org" <dev@dpdk.org>
Cc: "Yang, Qiming" <qiming.yang@intel.com>,
	"stable@dpdk.org" <stable@dpdk.org>,
	"Zhou, YidingX" <yidingx.zhou@intel.com>,
	"Wu, Jingjing" <jingjing.wu@intel.com>,
	"Lu, Wenzhuo" <wenzhuo.lu@intel.com>,
	Ferruh Yigit <ferruh.yigit@intel.com>,
	"Li, Xiaoyun" <xiaoyun.li@intel.com>,
	"Liu, KevinX" <kevinx.liu@intel.com>
Subject: RE: [PATCH v3 2/2] net/ice: fix scalar Tx path segment
Date: Fri, 11 Nov 2022 05:09:02 +0000	[thread overview]
Message-ID: <DM4PR11MB5994D2CCF3108035C20F46E9D7009@DM4PR11MB5994.namprd11.prod.outlook.com> (raw)
In-Reply-To: <20221111120401.802805-2-mingjinx.ye@intel.com>



> -----Original Message-----
> From: Ye, MingjinX <mingjinx.ye@intel.com>
> Sent: Friday, November 11, 2022 8:04 PM
> To: dev@dpdk.org
> Cc: Yang, Qiming <qiming.yang@intel.com>; stable@dpdk.org; Zhou, YidingX
> <yidingx.zhou@intel.com>; Ye, MingjinX <mingjinx.ye@intel.com>; Zhang, Qi
> Z <qi.z.zhang@intel.com>; Wu, Jingjing <jingjing.wu@intel.com>; Lu,
> Wenzhuo <wenzhuo.lu@intel.com>; Ferruh Yigit <ferruh.yigit@intel.com>; Li,
> Xiaoyun <xiaoyun.li@intel.com>; Liu, KevinX <kevinx.liu@intel.com>
> Subject: [PATCH v3 2/2] net/ice: fix scalar Tx path segment
> 
> The scalar Tx path would send empty buffer that causes the Tx queue to
> overflow.
> 
> This patch adds the last buffer length judgment in tx_prepare to fix this issue,
> rte_errno will be set to EINVAL and returned if the last buffer is empty.
> 
> Fixes: 17c7d0f9d6a4 ("net/ice: support basic Rx/Tx")
> Fixes: ccf33dccf7aa ("net/ice: check illegal packet sizes")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Mingjin Ye <mingjinx.ye@intel.com>
> ---
>  drivers/net/ice/ice_rxtx.c | 24 ++++++++++++++++++++++++
>  1 file changed, 24 insertions(+)
> 
> diff --git a/drivers/net/ice/ice_rxtx.c b/drivers/net/ice/ice_rxtx.c index
> e6ddd2513d..69358f6a3a 100644
> --- a/drivers/net/ice/ice_rxtx.c
> +++ b/drivers/net/ice/ice_rxtx.c
> @@ -3643,6 +3643,22 @@ ice_set_tx_function_flag(struct rte_eth_dev *dev,
> struct ice_tx_queue *txq)
>  #define ICE_MIN_TSO_MSS            64
>  #define ICE_MAX_TSO_MSS            9728
>  #define ICE_MAX_TSO_FRAME_SIZE     262144
> +
> +/*Check for invalid mbuf*/
> +static inline uint16_t
> +ice_check_mbuf(struct rte_mbuf *tx_pkt) {

Better to name the function to exactly match what it does. 
e.g.: ice_check_emtpy_mbuf
and also declare it as inline.

> +	struct rte_mbuf *txd = tx_pkt;
> +
> +	while (txd != NULL) {
> +		if (txd->data_len == 0)
> +			return -1;
> +		txd = txd->next;
> +	}
> +
> +	return 0;
> +}
> +
>  uint16_t
>  ice_prep_pkts(__rte_unused void *tx_queue, struct rte_mbuf **tx_pkts,
>  	      uint16_t nb_pkts)
> @@ -3653,6 +3669,7 @@ ice_prep_pkts(__rte_unused void *tx_queue,
> struct rte_mbuf **tx_pkts,
>  	struct ice_tx_queue *txq = tx_queue;
>  	struct rte_eth_dev *dev = &rte_eth_devices[txq->port_id];
>  	uint16_t max_frame_size = dev->data->mtu + ICE_ETH_OVERHEAD;
> +	uint16_t nb_used;
> 
>  	for (i = 0; i < nb_pkts; i++) {
>  		m = tx_pkts[i];
> @@ -3689,6 +3706,13 @@ ice_prep_pkts(__rte_unused void *tx_queue,
> struct rte_mbuf **tx_pkts,
>  			rte_errno = -ret;
>  			return i;
>  		}
> +
> +		if (!(ol_flags & RTE_MBUF_F_TX_TCP_SEG) &&
> +			ice_check_mbuf(m)) {

Why "!(ol_flags & RTE_MBUF_F_TX_TCP_SEG)" is needed here?
A empty mbuf with TSO enabled is still acceptable?

> +			rte_errno = EINVAL;
> +			PMD_DRV_LOG(ERR, "INVALID mbuf:	last mbuf
> data_len=[0]");
> +			return i;
> +		}
>  	}
>  	return i;
>  }
> --
> 2.34.1


  reply	other threads:[~2022-11-11  5:09 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-03 17:20 [PATCH] net/ice: fix scalar Rx and Tx path segment Mingjin Ye
2022-11-04  6:57 ` Xu, Ke1
2022-11-09 12:56 ` [PATCH v2] " Mingjin Ye
2022-11-10  2:01   ` Xu, Ke1
2022-11-10 10:37   ` Zhang, Qi Z
2022-11-11  3:12     ` Ye, MingjinX
2022-11-11 12:04   ` [PATCH v3 1/2] net/ice: fix scalar Rx " Mingjin Ye
2022-11-11  4:59     ` Zhang, Qi Z
2022-11-11 12:04     ` [PATCH v3 2/2] net/ice: fix scalar Tx " Mingjin Ye
2022-11-11  5:09       ` Zhang, Qi Z [this message]
2022-11-11  8:30         ` Ye, MingjinX
2022-11-11  8:45           ` Zhang, Qi Z
2022-11-11 16:01       ` [PATCH v4 1/2] net/ice: fix scalar Rx " Mingjin Ye
2022-11-11 16:01         ` [PATCH v4 2/2] net/ice: fix scalar Tx " Mingjin Ye
2022-11-11 16:12       ` [PATCH v4 1/2] net/ice: fix scalar Rx " Mingjin Ye
2022-11-11  9:03         ` Zhang, Qi Z
2022-11-11  9:13           ` Xu, Ke1
2022-11-11 16:12         ` [PATCH v4 2/2] net/ice: fix scalar Tx " Mingjin Ye
2022-11-11  9:01           ` Zhang, Qi Z
2022-11-11  9:14             ` Xu, Ke1
2023-09-19  8:15           ` David Marchand
2023-09-27  8:44             ` David Marchand

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=DM4PR11MB5994D2CCF3108035C20F46E9D7009@DM4PR11MB5994.namprd11.prod.outlook.com \
    --to=qi.z.zhang@intel.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=jingjing.wu@intel.com \
    --cc=kevinx.liu@intel.com \
    --cc=mingjinx.ye@intel.com \
    --cc=qiming.yang@intel.com \
    --cc=stable@dpdk.org \
    --cc=wenzhuo.lu@intel.com \
    --cc=xiaoyun.li@intel.com \
    --cc=yidingx.zhou@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.