Hi Chen Bo,
Without this patch, I have reproduced your unexpected test result on
XXV710(with i40e pmd driver).
That means the unexpected situation as the below is a new issue different from
the original one that this patch try to resolve.
The unexpected is not caused by the patch.
The unexpected situation can be reproduced in this way, at the end, testpmd
exit with error, and the terminal cannot echo keyboard input.
testpmd> port stop all
testpmd> port config all rxq 0
testpmd> port config all txq 0
testpmd> show config rxtx
testpmd> port start all
testpmd> show config rxtx
testpmd> start
EAL: Error - exiting with code: 1
Cause: Either rxq or txq are 0, cannot use io fwd mode
-----Original Message-----
From: Chen, BoX C
Sent: Wednesday, December 23, 2020 2:23 PM
To: Yu, DapengX <[email protected]>; Yang, Qiming <[email protected]>;
Zhang, Qi Z <[email protected]>
Cc: [email protected]; Yu, DapengX <[email protected]>; [email protected]
Subject: RE: [dpdk-dev] [PATCH] net/ice: check Rx queue number on RSS init
Hi, Dapeng
Regards,
Chen Bo
> -----Original Message-----
> From: dev <[email protected]> On Behalf Of [email protected]
> Sent: December 23, 2020 13:30
> To: Yang, Qiming <[email protected]>; Zhang, Qi Z
> <[email protected]>
> Cc: [email protected]; Yu, DapengX <[email protected]>; [email protected]
> Subject: [dpdk-dev] [PATCH] net/ice: check Rx queue number on RSS init
>
> From: YU DAPENG <[email protected]>
>
> 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: [email protected]
>
> Signed-off-by: YU DAPENG <[email protected]>
> ---
> 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