patches for DPDK stable branches
 help / color / mirror / Atom feed
* [dpdk-stable] [PATCH] net/ice: check Rx queue number on RSS init
@ 2020-12-23  5:30 dapengx.yu
  2020-12-23  6:22 ` [dpdk-stable] [dpdk-dev] " Chen, BoX C
  2020-12-23 13:49 ` [dpdk-stable] " Zhang, Qi Z
  0 siblings, 2 replies; 4+ messages in thread
From: dapengx.yu @ 2020-12-23  5:30 UTC (permalink / raw)
  To: qiming.yang, qi.z.zhang; +Cc: dev, YU DAPENG, stable

From: YU DAPENG <dapengx.yu@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@dpdk.org

Signed-off-by: YU DAPENG <dapengx.yu@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;
+	}
+
 	if (is_safe_mode) {
 		PMD_DRV_LOG(WARNING, "RSS is not supported in safe mode\n");
 		return 0;
-- 
2.27.0


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH] net/ice: check Rx queue number on RSS init
  2020-12-23  5:30 [dpdk-stable] [PATCH] net/ice: check Rx queue number on RSS init dapengx.yu
@ 2020-12-23  6:22 ` Chen, BoX C
  2020-12-23  7:05   ` Yu, DapengX
  2020-12-23 13:49 ` [dpdk-stable] " Zhang, Qi Z
  1 sibling, 1 reply; 4+ messages in thread
From: Chen, BoX C @ 2020-12-23  6:22 UTC (permalink / raw)
  To: Yu, DapengX, Yang, Qiming, Zhang, Qi Z; +Cc: dev, Yu, DapengX, stable

Hi, Dapeng

Regards,
Chen Bo

> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of dapengx.yu@intel.com
> Sent: December 23, 2020 13:30
> To: Yang, Qiming <qiming.yang@intel.com>; Zhang, Qi Z
> <qi.z.zhang@intel.com>
> Cc: dev@dpdk.org; Yu, DapengX <dapengx.yu@intel.com>; stable@dpdk.org
> Subject: [dpdk-dev] [PATCH] net/ice: check Rx queue number on RSS init
> 
> From: YU DAPENG <dapengx.yu@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@dpdk.org
> 
> Signed-off-by: YU DAPENG <dapengx.yu@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


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH] net/ice: check Rx queue number on RSS init
  2020-12-23  6:22 ` [dpdk-stable] [dpdk-dev] " Chen, BoX C
@ 2020-12-23  7:05   ` Yu, DapengX
  0 siblings, 0 replies; 4+ messages in thread
From: Yu, DapengX @ 2020-12-23  7:05 UTC (permalink / raw)
  To: Chen, BoX C, Yang, Qiming, Zhang, Qi Z; +Cc: dev, stable

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 <dapengx.yu@intel.com>; Yang, Qiming <qiming.yang@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com>
Cc: dev@dpdk.org; Yu, DapengX <dapengx.yu@intel.com>; stable@dpdk.org
Subject: RE: [dpdk-dev] [PATCH] net/ice: check Rx queue number on RSS init

Hi, Dapeng

Regards,
Chen Bo

> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of dapengx.yu@intel.com
> Sent: December 23, 2020 13:30
> To: Yang, Qiming <qiming.yang@intel.com>; Zhang, Qi Z 
> <qi.z.zhang@intel.com>
> Cc: dev@dpdk.org; Yu, DapengX <dapengx.yu@intel.com>; stable@dpdk.org
> Subject: [dpdk-dev] [PATCH] net/ice: check Rx queue number on RSS init
> 
> From: YU DAPENG <dapengx.yu@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@dpdk.org
> 
> Signed-off-by: YU DAPENG <dapengx.yu@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



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [dpdk-stable] [PATCH] net/ice: check Rx queue number on RSS init
  2020-12-23  5:30 [dpdk-stable] [PATCH] net/ice: check Rx queue number on RSS init dapengx.yu
  2020-12-23  6:22 ` [dpdk-stable] [dpdk-dev] " Chen, BoX C
@ 2020-12-23 13:49 ` Zhang, Qi Z
  1 sibling, 0 replies; 4+ messages in thread
From: Zhang, Qi Z @ 2020-12-23 13:49 UTC (permalink / raw)
  To: Yu, DapengX, Yang, Qiming; +Cc: dev, Yu, DapengX, stable



> -----Original Message-----
> From: dapengx.yu@intel.com <dapengx.yu@intel.com>
> Sent: Wednesday, December 23, 2020 1:30 PM
> To: Yang, Qiming <qiming.yang@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com>
> Cc: dev@dpdk.org; Yu, DapengX <dapengx.yu@intel.com>; stable@dpdk.org
> Subject: [PATCH] net/ice: check Rx queue number on RSS init
> 
> From: YU DAPENG <dapengx.yu@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@dpdk.org
> 
> Signed-off-by: YU DAPENG <dapengx.yu@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>

Applied to dpdk-next-net-intel.

Thanks
Qi

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-12-23 13:49 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-23  5:30 [dpdk-stable] [PATCH] net/ice: check Rx queue number on RSS init dapengx.yu
2020-12-23  6:22 ` [dpdk-stable] [dpdk-dev] " Chen, BoX C
2020-12-23  7:05   ` Yu, DapengX
2020-12-23 13:49 ` [dpdk-stable] " Zhang, Qi Z

patches for DPDK stable branches

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://inbox.dpdk.org/stable/0 stable/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 stable stable/ https://inbox.dpdk.org/stable \
		stable@dpdk.org
	public-inbox-index stable

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.stable


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git