[dpdk-stable] [dpdk-dev] [PATCH] net/ice: check Rx queue number on RSS init

Chen, BoX C box.c.chen at intel.com
Wed Dec 23 07:22:46 CET 2020


Hi, Dapeng

Regards,
Chen Bo

> -----Original Message-----
> From: dev <dev-bounces at dpdk.org> On Behalf Of dapengx.yu at intel.com
> Sent: December 23, 2020 13:30
> To: Yang, Qiming <qiming.yang at intel.com>; Zhang, Qi Z
> <qi.z.zhang at intel.com>
> Cc: dev at dpdk.org; Yu, DapengX <dapengx.yu at intel.com>; stable at dpdk.org
> Subject: [dpdk-dev] [PATCH] net/ice: check Rx queue number on RSS init
> 
> From: YU DAPENG <dapengx.yu at intel.com>
> 
> When RSS is initialized, rx queues number is used as denominator to set
> default value into the RSS lookup table. If it is zero, there will be error of
> being divided by 0. So add value check to avoid the error.
> 
> Fixes: 50370662b727 ("net/ice: support device and queue ops")
> Cc: stable at dpdk.org
> 
> Signed-off-by: YU DAPENG <dapengx.yu at intel.com>
> ---
>  drivers/net/ice/ice_ethdev.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c
> index 9a5d6a559..bbb8c1460 100644
> --- a/drivers/net/ice/ice_ethdev.c
> +++ b/drivers/net/ice/ice_ethdev.c
> @@ -3182,6 +3182,12 @@ static int ice_init_rss(struct ice_pf *pf)
>  	vsi->rss_key_size =
> ICE_AQC_GET_SET_RSS_KEY_DATA_RSS_KEY_SIZE;
>  	vsi->rss_lut_size = pf->hash_lut_size;
> 
> +	if (nb_q == 0) {
> +		PMD_DRV_LOG(WARNING,
> +			"RSS is not supported as rx queues number is
> zero\n");
> +		return 0;
> +	}
> +

Direct return here will introduce subsequent exceptions, the tetpmd will exit.

testpmd> port start all
Configuring Port 0 (socket 1)
ice_init_rss(): RSS is not supported as rx queues number is zero

Port 0: 68:20:20:06:01:00
Configuring Port 1 (socket 1)
ice_init_rss(): RSS is not supported as rx queues number is zero

Port 1: 68:20:20:06:01:01
Checking link statuses...
Done
testpmd>
Port 1: link state change event

testpmd> show config rxtx
  io packet forwarding packets/burst=32
  nb forwarding cores=1 - nb forwarding ports=2
  port 0: RX queue number: 0 Tx queue number: 1
    Rx offloads=0x0 Tx offloads=0x10000
Invalid RX queue_id=0
    RX queue: 0
      RX desc=0 - RX free threshold=32
      RX threshold registers: pthresh=8 hthresh=8  wthresh=0
      RX Offloads=0x0
    TX queue: 0
      TX desc=1024 - TX free threshold=32
      TX threshold registers: pthresh=32 hthresh=0  wthresh=0
      TX offloads=0x10000 - TX RS bit threshold=32
  port 1: RX queue number: 0 Tx queue number: 1
    Rx offloads=0x0 Tx offloads=0x10000
Invalid RX queue_id=0
    RX queue: 0
      RX desc=0 - RX free threshold=32
      RX threshold registers: pthresh=8 hthresh=8  wthresh=0
      RX Offloads=0x0
    TX queue: 0
      TX desc=1024 - TX free threshold=32
      TX threshold registers: pthresh=32 hthresh=0  wthresh=0
      TX offloads=0x10000 - TX RS bit threshold=32
testpmd>
testpmd> start
EAL: Error - exiting with code: 1
  Cause: Either rxq or txq are 0, cannot use io fwd mode

>  	if (is_safe_mode) {
>  		PMD_DRV_LOG(WARNING, "RSS is not supported in safe
> mode\n");
>  		return 0;
> --
> 2.27.0



More information about the stable mailing list