net/ice: fix txq mbuf release mode
Checks
Commit Message
In some cases, it seems that the txq mbuf vector release mode
is enabled first, and then it is confirmed that the conditions
for using the vector mode are not met.
This patch puts the txq vector mode startup process after the
condition detection.
Fixes: 28f9002ab67f ("net/ice: add Tx AVX512 offload path")
Cc: stable@dpdk.org
Signed-off-by: Alvin Zhang <alvinx.zhang@intel.com>
---
drivers/net/ice/ice_rxtx.c | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
Comments
> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Alvin Zhang
> Sent: Sunday, April 25, 2021 5:27 PM
> To: Zhang, Qi Z <qi.z.zhang@intel.com>; Yang, Qiming <qiming.yang@intel.com>
> Cc: dev@dpdk.org; Zhang, AlvinX <alvinx.zhang@intel.com>; stable@dpdk.org
> Subject: [dpdk-dev] [DPDK] net/ice: fix txq mbuf release mode
>
> In some cases, it seems that the txq mbuf vector release mode is enabled first,
> and then it is confirmed that the conditions for using the vector mode are not
> met.
>
> This patch puts the txq vector mode startup process after the condition
> detection.
>
> Fixes: 28f9002ab67f ("net/ice: add Tx AVX512 offload path")
> Cc: stable@dpdk.org
>
> Signed-off-by: Alvin Zhang <alvinx.zhang@intel.com>
> ---
> drivers/net/ice/ice_rxtx.c | 16 +++++++++-------
> 1 file changed, 9 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/net/ice/ice_rxtx.c b/drivers/net/ice/ice_rxtx.c index
> 92fbbc1..49abcb2 100644
> --- a/drivers/net/ice/ice_rxtx.c
> +++ b/drivers/net/ice/ice_rxtx.c
> @@ -3303,13 +3303,6 @@
> if (tx_check_ret >= 0 &&
> rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_128)
> {
> ad->tx_vec_allowed = true;
> - for (i = 0; i < dev->data->nb_tx_queues; i++) {
> - txq = dev->data->tx_queues[i];
> - if (txq && ice_txq_vec_setup(txq)) {
> - ad->tx_vec_allowed = false;
> - break;
> - }
> - }
>
> if (rte_vect_get_max_simd_bitwidth() >=
> RTE_VECT_SIMD_512 &&
> rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX512F) ==
> 1 && @@ -3329,6 +3322,15 @@
> if (!use_avx512 && tx_check_ret ==
> ICE_VECTOR_OFFLOAD_PATH)
> ad->tx_vec_allowed = false;
>
> + if (ad->tx_vec_allowed) {
> + for (i = 0; i < dev->data->nb_tx_queues; i++) {
> + txq = dev->data->tx_queues[i];
> + if (txq && ice_txq_vec_setup(txq)) {
> + ad->tx_vec_allowed = false;
> + break;
> + }
> + }
> + }
> } else {
> ad->tx_vec_allowed = false;
> }
> --
> 1.8.3.1
Acked-by: Leyi Rong <leyi.rong@intel.com>
> -----Original Message-----
> From: Rong, Leyi <leyi.rong@intel.com>
> Sent: 2021年4月27日 10:32
> To: Zhang, AlvinX <alvinx.zhang@intel.com>; Zhang, Qi Z
> <qi.z.zhang@intel.com>; Yang, Qiming <qiming.yang@intel.com>
> Cc: dev@dpdk.org; Zhang, AlvinX <alvinx.zhang@intel.com>;
> stable@dpdk.org
> Subject: RE: [dpdk-dev] [DPDK] net/ice: fix txq mbuf release mode
>
>
> > -----Original Message-----
> > From: dev <dev-bounces@dpdk.org> On Behalf Of Alvin Zhang
> > Sent: Sunday, April 25, 2021 5:27 PM
> > To: Zhang, Qi Z <qi.z.zhang@intel.com>; Yang, Qiming
> > <qiming.yang@intel.com>
> > Cc: dev@dpdk.org; Zhang, AlvinX <alvinx.zhang@intel.com>;
> > stable@dpdk.org
> > Subject: [dpdk-dev] [DPDK] net/ice: fix txq mbuf release mode
> >
> > In some cases, it seems that the txq mbuf vector release mode is
> > enabled first, and then it is confirmed that the conditions for using
> > the vector mode are not met.
> >
> > This patch puts the txq vector mode startup process after the
> > condition detection.
> >
> > Fixes: 28f9002ab67f ("net/ice: add Tx AVX512 offload path")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Alvin Zhang <alvinx.zhang@intel.com>
> > ---
> > drivers/net/ice/ice_rxtx.c | 16 +++++++++-------
> > 1 file changed, 9 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/net/ice/ice_rxtx.c b/drivers/net/ice/ice_rxtx.c
> > index
> > 92fbbc1..49abcb2 100644
> > --- a/drivers/net/ice/ice_rxtx.c
> > +++ b/drivers/net/ice/ice_rxtx.c
> > @@ -3303,13 +3303,6 @@
> > if (tx_check_ret >= 0 &&
> > rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_128) {
> > ad->tx_vec_allowed = true; -for (i = 0; i < dev->data->nb_tx_queues;
> > i++) { -txq = dev->data->tx_queues[i]; -if (txq &&
> > ice_txq_vec_setup(txq)) {
> > -ad->tx_vec_allowed = false;
> > -break;
> > -}
> > -}
> >
> > if (rte_vect_get_max_simd_bitwidth() >=
> > RTE_VECT_SIMD_512 &&
> > rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX512F) ==
> > 1 && @@ -3329,6 +3322,15 @@
> > if (!use_avx512 && tx_check_ret ==
> > ICE_VECTOR_OFFLOAD_PATH)
> > ad->tx_vec_allowed = false;
> >
> > +if (ad->tx_vec_allowed) {
> > +for (i = 0; i < dev->data->nb_tx_queues; i++) { txq =
> > +dev->data->tx_queues[i]; if (txq && ice_txq_vec_setup(txq)) {
> > +ad->tx_vec_allowed = false;
> > +break;
> > +}
> > +}
> > +}
> > } else {
> > ad->tx_vec_allowed = false;
> > }
> > --
> > 1.8.3.1
>
> Acked-by: Leyi Rong <leyi.rong@intel.com>
Applied to dpdk-next-net-intel.
Thanks
Qi
On 4/25/2021 10:26 AM, Alvin Zhang wrote:
> In some cases, it seems that the txq mbuf vector release mode
> is enabled first, and then it is confirmed that the conditions
> for using the vector mode are not met.
>
Hi Alvin,
As far as I understand the impact is failure in the Tx vector patch selection,
can you please update the patch title to reflect it?
Also can you please describe a little more what is "txq mbuf vector release
mode" and what is the root cause for it to be enabled first?
> This patch puts the txq vector mode startup process after the
> condition detection.
What is "txq vector mode startup process"?
>
> Fixes: 28f9002ab67f ("net/ice: add Tx AVX512 offload path")
> Cc: stable@dpdk.org
>
> Signed-off-by: Alvin Zhang <alvinx.zhang@intel.com>
> ---
> drivers/net/ice/ice_rxtx.c | 16 +++++++++-------
> 1 file changed, 9 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/net/ice/ice_rxtx.c b/drivers/net/ice/ice_rxtx.c
> index 92fbbc1..49abcb2 100644
> --- a/drivers/net/ice/ice_rxtx.c
> +++ b/drivers/net/ice/ice_rxtx.c
> @@ -3303,13 +3303,6 @@
> if (tx_check_ret >= 0 &&
> rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_128) {
> ad->tx_vec_allowed = true;
> - for (i = 0; i < dev->data->nb_tx_queues; i++) {
> - txq = dev->data->tx_queues[i];
> - if (txq && ice_txq_vec_setup(txq)) {
> - ad->tx_vec_allowed = false;
> - break;
> - }
> - }
>
> if (rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_512 &&
> rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX512F) == 1 &&
> @@ -3329,6 +3322,15 @@
> if (!use_avx512 && tx_check_ret == ICE_VECTOR_OFFLOAD_PATH)
> ad->tx_vec_allowed = false;
>
> + if (ad->tx_vec_allowed) {
> + for (i = 0; i < dev->data->nb_tx_queues; i++) {
> + txq = dev->data->tx_queues[i];
> + if (txq && ice_txq_vec_setup(txq)) {
> + ad->tx_vec_allowed = false;
> + break;
> + }
> + }
> + }
> } else {
> ad->tx_vec_allowed = false;
> }
>
Hi Ferruh,
Thanks for your advice. I'll update the commit log in V2.
If the following changes are appropriate?
net/ice: fix txq vector path selection
If Tx vector mode is disabled, the txq vector mode should be disabled too.
This patch adds checking of Tx vector mode before enabling txq vector mode.
> -----Original Message-----
> From: Yigit, Ferruh <ferruh.yigit@intel.com>
> Sent: Wednesday, April 28, 2021 6:03 PM
> To: Zhang, AlvinX <alvinx.zhang@intel.com>; Zhang, Qi Z
> <qi.z.zhang@intel.com>; Yang, Qiming <qiming.yang@intel.com>
> Cc: dev@dpdk.org; stable@dpdk.org
> Subject: Re: [dpdk-stable] [DPDK] net/ice: fix txq mbuf release mode
>
> On 4/25/2021 10:26 AM, Alvin Zhang wrote:
> > In some cases, it seems that the txq mbuf vector release mode is
> > enabled first, and then it is confirmed that the conditions for using
> > the vector mode are not met.
> >
>
> Hi Alvin,
>
> As far as I understand the impact is failure in the Tx vector patch selection, can
> you please update the patch title to reflect it?
>
> Also can you please describe a little more what is "txq mbuf vector release
> mode" and what is the root cause for it to be enabled first?
>
> > This patch puts the txq vector mode startup process after the
> > condition detection.
>
> What is "txq vector mode startup process"?
>
> >
> > Fixes: 28f9002ab67f ("net/ice: add Tx AVX512 offload path")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Alvin Zhang <alvinx.zhang@intel.com>
> > ---
> > drivers/net/ice/ice_rxtx.c | 16 +++++++++-------
> > 1 file changed, 9 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/net/ice/ice_rxtx.c b/drivers/net/ice/ice_rxtx.c
> > index 92fbbc1..49abcb2 100644
> > --- a/drivers/net/ice/ice_rxtx.c
> > +++ b/drivers/net/ice/ice_rxtx.c
> > @@ -3303,13 +3303,6 @@
> > if (tx_check_ret >= 0 &&
> > rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_128) {
> > ad->tx_vec_allowed = true;
> > - for (i = 0; i < dev->data->nb_tx_queues; i++) {
> > - txq = dev->data->tx_queues[i];
> > - if (txq && ice_txq_vec_setup(txq)) {
> > - ad->tx_vec_allowed = false;
> > - break;
> > - }
> > - }
> >
> > if (rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_512
> &&
> > rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX512F) == 1 &&
> @@ -3329,6
> > +3322,15 @@
> > if (!use_avx512 && tx_check_ret ==
> ICE_VECTOR_OFFLOAD_PATH)
> > ad->tx_vec_allowed = false;
> >
> > + if (ad->tx_vec_allowed) {
> > + for (i = 0; i < dev->data->nb_tx_queues; i++) {
> > + txq = dev->data->tx_queues[i];
> > + if (txq && ice_txq_vec_setup(txq)) {
> > + ad->tx_vec_allowed = false;
> > + break;
> > + }
> > + }
> > + }
> > } else {
> > ad->tx_vec_allowed = false;
> > }
> >
Thanks,
Alvin Zhang
@@ -3303,13 +3303,6 @@
if (tx_check_ret >= 0 &&
rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_128) {
ad->tx_vec_allowed = true;
- for (i = 0; i < dev->data->nb_tx_queues; i++) {
- txq = dev->data->tx_queues[i];
- if (txq && ice_txq_vec_setup(txq)) {
- ad->tx_vec_allowed = false;
- break;
- }
- }
if (rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_512 &&
rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX512F) == 1 &&
@@ -3329,6 +3322,15 @@
if (!use_avx512 && tx_check_ret == ICE_VECTOR_OFFLOAD_PATH)
ad->tx_vec_allowed = false;
+ if (ad->tx_vec_allowed) {
+ for (i = 0; i < dev->data->nb_tx_queues; i++) {
+ txq = dev->data->tx_queues[i];
+ if (txq && ice_txq_vec_setup(txq)) {
+ ad->tx_vec_allowed = false;
+ break;
+ }
+ }
+ }
} else {
ad->tx_vec_allowed = false;
}