[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