From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id DC4F5A0032; Fri, 14 Jan 2022 09:59:40 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C526C4276A; Fri, 14 Jan 2022 09:59:39 +0100 (CET) Received: from cmccmta2.chinamobile.com (cmccmta2.chinamobile.com [221.176.66.80]) by mails.dpdk.org (Postfix) with ESMTP id 310D64275E; Fri, 14 Jan 2022 08:11:10 +0100 (CET) Received: from spf.mail.chinamobile.com (unknown[172.16.121.7]) by rmmx-syy-dmz-app08-12008 (RichMail) with SMTP id 2ee861e1220b4ab-c8ec7; Fri, 14 Jan 2022 15:11:08 +0800 (CST) X-RM-TRANSID: 2ee861e1220b4ab-c8ec7 X-RM-SPAM-FLAG: 00000000 Received: from yuwenjun_yewu@cmss.chinamobile.com ( [10.42.68.12] ) by ajax-webmail-syy-appsvr04-11004 (Richmail) with HTTP; Fri, 14 Jan 2022 15:11:08 +0800 (CST) Date: Fri, 14 Jan 2022 15:11:08 +0800 (CST) From: =?utf-8?Q?=E4=BF=9E=E6=96=87=E4=BF=8A=5Fyewu?= To: "Min Hu (Connor)" , tangchengchang , "ferruh.yigit" Cc: dev , stable Message-ID: <2afc61e1200b486-00003.Richmail.00008071009648883857@cmss.chinamobile.com> References: <2afa61de7b9e301-0000a.Richmail.00009021307638582857@cmss.chinamobile.com>, <2b7a133a-3111-e814-d92c-d2252f9bd5e3@huawei.com> Subject: Re:Re: [PATCH] net/bonding: fix RSS not work for bonding in DPDK21.11 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_19886_1921952870.1642144268503" X-Priority: 3 X-RM-TRANSID: 2afc61e1200b486-00003 X-RM-OA-ENC-TYPE: 0 X-RM-FontColor: 0 X-CLIENT-INFO: X-TIMING=0&X-MASSSENT=0&X-SENSITIVE=0 X-Mailer: Richmail_Webapp(V2.3.25) X-Mailman-Approved-At: Fri, 14 Jan 2022 09:59:38 +0100 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org ------=_Part_19886_1921952870.1642144268503 Content-Type: text/plain;charset=UTF-8 Content-Transfer-Encoding: quoted-printable Sorry=EF=BC=8Cmq_mode is RTE_ETH_MQ_RX_RSS in rte_eth_conf. call chain:=20 rte_eth_bond_create()->rte_eth_dev_configure()->rte_eth_bond_slave_add()->r= te_eth_dev_start() Consider this call chain, internals->rss_key_len is 0 in bond_ethdev_config= ure() when we call rte_eth_dev_configure(). If internals->rss_key_len is 0, internals->rss_key can not be set properly. Because memcpy in bond_ethdev_configure() use internals->rss_key_len(it is = 0) as copy size, and internals->rss_key will not be set in other functions. --- e.g.: bond_ethdev_configure(struct rte_eth_dev *dev) { =09const char *name =3D dev->device->name =09struct bond_dev_private *internals =3D dev->data->dev_private ... =09/* =09 * If RSS is enabled, fill table with default values and =09 * set key to the value specified in port RSS configuration. =09 * Fall back to default RSS key if the key is not specified =09 */ =09if (dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS) { =09=09struct rte_eth_rss_conf *rss_conf =3D =09=09=09&dev->data->dev_conf.rx_adv_conf.rss_conf =09=09if (rss_conf->rss_key !=3D NULL) { =09=09=09if (internals->rss_key_len > rss_conf->rss_key_len) { =09=09=09=09RTE_BOND_LOG(ERR, "Invalid rss key length(%u)", =09=09=09=09=09=09rss_conf->rss_key_len) =09=09=09=09return -EINVAL =09=09=09} =09=09=09memcpy(internals->rss_key, rss_conf->rss_key, =09=09=09 internals->rss_key_len) =09=09} else { =09=09=09if (internals->rss_key_len > sizeof(default_rss_key)) { =09=09=09=09RTE_BOND_LOG(ERR, =09=09=09=09 "There is no suitable default hash key") =09=09=09=09return -EINVAL =09=09=09} =09=09=09memcpy(internals->rss_key, default_rss_key, =09=09=09 internals->rss_key_len) =09=09} ----Origin----From=EF=BC=9A"Min Hu (Connor)" To=EF=BC= =9A"yuwenjun_yewu" ,tangchengchang ,"ferruh.yigit" Cc: dev ,stable Date=EF=BC=9A2022-01-14 08:59:21Subje= ct=EF=BC=9ARe: [PATCH] net/bonding: fix RSS not work for bonding in DPDK21.= 11Hi,=E5=9C=A8 2022/1/12 15:29, =E4=BF=9E=E6=96=87=E4=BF=8A_yewu =E5=86=99= =E9=81=93:> From 85c4ffffe32996fc262dd6f69d0ce272ae8e8350 Mon Sep 17 00:00= :00 2001> > From: Yu Wenjun > > Date: W= ed, 12 Jan 2022 15:01:10 +0800> > Subject: [PATCH] net/bonding: fix RSS not= work for bonding> > > RSS don39t work when upgrade to DPDK21.11.Cannot get= your meaning, Why RSS don39t work?As mq_mode is not RTE_ETH_MQ_RX_RSS in r= te_eth_conf, RSS is off.Please make it clearer, thanks.> > > e.g.:> > examp= les/bond/main.c:> > conf:> > static struct rte_eth_conf port_conf =3D {> > = .rxmode =3D {> > .mq_mode =3D RTE_ETH_MQ_RX_NONE,> > .split_hdr_size =3D 0,= > > },> > .rx_adv_conf =3D {> > .rss_conf =3D {> > .rss_key =3D NULL,> > .r= ss_hf =3D RTE_ETH_RSS_IP,> > },> > },> > .txmode =3D {> > .mq_mode =3D RTE_= ETH_MQ_TX_NONE,> > },> > }> > > call chain:> > rte_eth_bond_create()->rte_e= th_dev_configure()->rte_eth_bond_slave_add()->rte_eth_dev_start()> > > Sign= ed-off-by: Yu Wenjun > > ---> > drive= rs/net/bonding/rte_eth_bond_pmd.c | 5 +++++> > 1 file changed, 5 insertio= ns(+)> > > diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c > b/drivers/= net/bonding/rte_eth_bond_pmd.c> > index 84f4900ee5..31bcee15cf 100644> > --= - a/drivers/net/bonding/rte_eth_bond_pmd.c> > +++ b/drivers/net/bonding/rte= _eth_bond_pmd.c> > @@ -3504,6 +3504,11 @@ bond_ethdev_configure(struct rte_= eth_dev *dev)> > if (dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS= ) {> > struct rte_eth_rss_conf *rss_conf =3D> > &dev->data->dev_conf.rx_adv= _conf.rss_conf> > +> > +if (internals->rss_key_len =3D=3D 0) {> > +internal= s->rss_key_len =3D sizeof(default_rss_key)> > +}> > +> > if (rss_conf->rss_= key !=3D NULL) {> > if (internals->rss_key_len > rss_conf->rss_key_len) {> = > RTE_BOND_LOG(ERR, "Invalid rss key length(%u)",> > -- > > 2.32.0.windows.= 1> > Subject=EF=BC=9ARe: [PATCH] net/bonding: fix RSS not work for bonding = in DPDK21.11Hi,=E5=9C=A8 2022/1/12 15:29, =E4=BF=9E=E6=96=87=E4=BF=8A_yewu = =E5=86=99=E9=81=93:> From 85c4ffffe32996fc262dd6f69d0ce272ae8e8350 Mon Sep= 17 00:00:00 2001> > From: Yu Wenjun > = > Date: Wed, 12 Jan 2022 15:01:10 +0800> > Subject: [PATCH] net/bonding: fi= x RSS not work for bonding> > > RSS don39t work when upgrade to DPDK21.11.C= annot get your meaning, Why RSS don39t work?As mq_mode is not RTE_ETH_MQ_RX= _RSS in rte_eth_conf, RSS is off.Please make it clearer, thanks.> > > e.g.:= > > examples/bond/main.c:> > conf:> > static struct rte_eth_conf port_conf = =3D {> > .rxmode =3D {> > .mq_mode =3D RTE_ETH_MQ_RX_NONE,> > .split_hdr_si= ze =3D 0,> > },> > .rx_adv_conf =3D {> > .rss_conf =3D {> > .rss_key =3D NU= LL,> > .rss_hf =3D RTE_ETH_RSS_IP,> > },> > },> > .txmode =3D {> > .mq_mode= =3D RTE_ETH_MQ_TX_NONE,> > },> > }> > > call chain:> > rte_eth_bond_create= ()->rte_eth_dev_configure()->rte_eth_bond_slave_add()->rte_eth_dev_start()>= > > Signed-off-by: Yu Wenjun > > ---> = > drivers/net/bonding/rte_eth_bond_pmd.c | 5 +++++> > 1 file changed, 5= insertions(+)> > > diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c > b= /drivers/net/bonding/rte_eth_bond_pmd.c> > index 84f4900ee5..31bcee15cf 100= 644> > --- a/drivers/net/bonding/rte_eth_bond_pmd.c> > +++ b/drivers/net/bo= nding/rte_eth_bond_pmd.c> > @@ -3504,6 +3504,11 @@ bond_ethdev_configure(st= ruct rte_eth_dev *dev)> > if (dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_= MQ_RX_RSS) {> > struct rte_eth_rss_conf *rss_conf =3D> > &dev->data->dev_co= nf.rx_adv_conf.rss_conf> > +> > +if (internals->rss_key_len =3D=3D 0) {> > = +internals->rss_key_len =3D sizeof(default_rss_key)> > +}> > +> > if (rss_c= onf->rss_key !=3D NULL) {> > if (internals->rss_key_len > rss_conf->rss_key= _len) {> > RTE_BOND_LOG(ERR, "Invalid rss key length(%u)",> > -- > > 2.32.0= .windows.1> >=20 ------=_Part_19886_1921952870.1642144268503 Content-Type: text/html;charset=UTF-8 Content-Transfer-Encoding: quoted-printable

Sorry=EF=BC=8Cmq_mode is RTE_ETH_MQ_RX_RSS in rte_eth_conf.

<= br/>

call chain: 

rte_eth_bond_create()->rte_eth_dev_co= nfigure()->rte_eth_bond_slave_add()->rte_eth_dev_start()


<= /p>

Consider this call chain, internals->rss_key_len is 0 in bond_ethd= ev_configure() when we call rte_eth_dev_configure().

If internals->= ;rss_key_len is 0, internals->rss_key can not be set properly.

Bec= ause memcpy in bond_ethdev_configure() use internals->rss_key_len(i= t is 0) as copy size, and internals->rss_key will not be set in other fu= nctions.


---

e.g.:

bond_ethdev_configure(stru= ct rte_eth_dev *dev)

{

=09const char *name =3D dev->device->name;

=09struct bond_dev_private *internals =3D dev->data-&g= t;dev_private;

...


= =09/*

=09 * If RSS is e= nabled, fill table with default values and

=09 * set key to the value specified in port RSS configuration= .

=09 * Fall back to default R= SS key if the key is not specified

= =09 */

=09if (dev->d= ata->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS) {

=09=09struct rte_eth_rss_conf *rss_conf =3D

=09=09=09&dev->data->d= ev_conf.rx_adv_conf.rss_conf;


=09=09if (rss_conf->rss_key !=3D NULL) {

=09=09=09if (internals->rss_key_len > rss= _conf->rss_key_len) {

=09=09=09=09= RTE_BOND_LOG(ERR, "Invalid rss key length(%u)",

=09=09=09=09=09=09rss_conf->rss_key_l= en);

=09=09=09=09return -EINVA= L;

=09=09=09}


<= p>=09=09=09memcpy(internals->rss_= key, rss_conf->rss_key,

=09=09=09<= /span>       internals->rss_key_len);

=09=09} else {

=09=09=09if (internals->rss_key_len > sizeof(default_= rss_key)) {

=09=09=09=09RTE_BO= ND_LOG(ERR,

=09=09=09=09 =      "There is no suitable default hash key");

=09=09=09=09return -EINVAL;

<= p>=09=09=09}


=09=09=09memcpy(internals->rss_key, de= fault_rss_key,

=09=09=09 =      internals->rss_key_len);

=09=09}



----Origin----
From= =EF=BC=9A"Min Hu (Connor)" <humin29@huawei.com&= gt;
To=EF=BC=9A"yuwenjun_yewu" <yuwenjun_yewu@cmss.ch= inamobile.com>,tangchengchang  <tangchengchang@huawei.com&g= t;,"ferruh.yigit" <ferruh.yigit@intel.com>
Cc:&nbs= p;dev  <dev@dpdk.org>,stable  <stable@dpdk.org= >
Date=EF=BC=9A2022-01-14 08:59:21
Subject=EF=BC=9ARe: = ;[PATCH] net/bonding: fix RSS not work for&nb= sp;bonding in DPDK21.11

Hi,

=E5=9C=A8 2022= /1/12 15:29, =E4=BF=9E=E6=96=87=E4=BF=8A_yewu =E5=86=99=E9= =81=93:
>  From 85c4ffffe32996fc262dd6f69d0ce272ae8e8= 350 Mon Sep 17 00:00:00 2001

&g= t; From: Yu Wenjun <yuwenjun_yewu@cmss.chinamobile.c= om>

> Date: Wed, 12 Jan 2= 022 15:01:10 +0800

> Subject: [PA= TCH] net/bonding: fix RSS not work for b= onding


> RSS don't = work when upgrade to DPDK21.11.
Cannot get&nbs= p;your meaning, Why RSS don't work?
As&nbs= p;mq_mode is not RTE_ETH_MQ_RX_RSS in rte_eth_conf= , RSS is off.
Please make it clearer,&nbs= p;thanks.




> e.g.:
&= gt; 
> examples/bond/main.c:

> = conf:

> static struct rte_eth_conf&nbs= p;port_conf =3D {

> .rxmode =3D&n= bsp;{

> .mq_mode =3D RTE_ETH_MQ_RX_NON= E,

> .split_hdr_size =3D 0,
>&n= bsp;
> },

> .rx_adv_conf =3D&nb= sp;{

> .rss_conf =3D {
> <= br/>> .rss_key =3D NULL,

> .rs= s_hf =3D RTE_ETH_RSS_IP,

> },
>=  
> },

> .txmode =3D = {

> .mq_mode =3D RTE_ETH_MQ_TX_NONE,
> },

> };
>&nbs= p;

> call chain:

>&nb= sp;rte_eth_bond_create()->rte_eth_dev_configure()->rte_eth_bond_slave= _add()->rte_eth_dev_start()


> = Signed-off-by: Yu Wenjun <yuwenjun_yewu@cmss.chinamobile.= com>

> ---

>  = ; drivers/net/bonding/rte_eth_bond_pmd.c | 5 +++++
= > 
>   1 file changed, 5 = insertions(+)


> diff --git&n= bsp;a/drivers/net/bonding/rte_eth_bond_pmd.c 
> b/drivers/= net/bonding/rte_eth_bond_pmd.c

> index 84f4= 900ee5..31bcee15cf 100644

> --- a/driv= ers/net/bonding/rte_eth_bond_pmd.c

> +++ b/= drivers/net/bonding/rte_eth_bond_pmd.c

> @@ = ;-3504,6 +3504,11 @@ bond_ethdev_configure(struct rte_e= th_dev *dev)

> if (dev->data->de= v_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS) {
>&nb= sp;
> struct rte_eth_rss_conf *rss_conf =3D
= > 
> &dev->data->dev_conf.rx_adv_conf.rss_con= f;

> +

> +if (in= ternals->rss_key_len =3D=3D 0) {

>&= nbsp;+internals->rss_key_len =3D sizeof(default_rss_key);
= > 
> +}

> +
> if (rss_conf->rss_key !=3D NULL) {
= > 
> if (internals->rss_key_len > = rss_conf->rss_key_len) {

> RTE_BOND_LOG(= ERR, "Invalid rss key length(%u)",
>&n= bsp;
> -- 

> 2.32.0.windows.1


Subject=EF=BC=9ARe: [PATCH] = ;net/bonding: fix RSS not work for bonding&nb= sp;in DPDK21.11

Hi,

=E5=9C=A8 2022/1/12 15= :29, =E4=BF=9E=E6=96=87=E4=BF=8A_yewu =E5=86=99=E9=81=93:
>= ;  From 85c4ffffe32996fc262dd6f69d0ce272ae8e8350 Mon&nb= sp;Sep 17 00:00:00 2001

> From:&n= bsp;Yu Wenjun <yuwenjun_yewu@cmss.chinamobile.com>
>=  
> Date: Wed, 12 Jan 2022 15:01:= 10 +0800

> Subject: [PATCH] net/b= onding: fix RSS not work for bonding
>=  

> RSS don't work when&= nbsp;upgrade to DPDK21.11.
Cannot get your mea= ning, Why RSS don't work?
As mq_mode = is not RTE_ETH_MQ_RX_RSS in rte_eth_conf, RSS = ;is off.
Please make it clearer, thanks.
<= br/>


> e.g.:

&= gt; examples/bond/main.c:

> conf:
>&= nbsp;
> static struct rte_eth_conf port_conf&nbs= p;=3D {

> .rxmode =3D {
>&= nbsp;
> .mq_mode =3D RTE_ETH_MQ_RX_NONE,
>&nbs= p;
> .split_hdr_size =3D 0,

>&n= bsp;},

> .rx_adv_conf =3D {
>&n= bsp;
> .rss_conf =3D {

> .= rss_key =3D NULL,

> .rss_hf =3D&n= bsp;RTE_ETH_RSS_IP,

> },

>=  },

> .txmode =3D {
> = ;
> .mq_mode =3D RTE_ETH_MQ_TX_NONE,
> },

> };

>&nbs= p;
> call chain:

> rte_eth_bond= _create()->rte_eth_dev_configure()->rte_eth_bond_slave_add()->rte_= eth_dev_start()


> Signed-off-by:&= nbsp;Yu Wenjun <yuwenjun_yewu@cmss.chinamobile.com>
>= ; 
> ---

>   drivers/= net/bonding/rte_eth_bond_pmd.c | 5 +++++

= >   1 file changed, 5 insertions(+)

> diff --git a/drivers/n= et/bonding/rte_eth_bond_pmd.c 
> b/drivers/net/bonding/rte= _eth_bond_pmd.c

> index 84f4900ee5..31bcee1= 5cf 100644

> --- a/drivers/net/bonding= /rte_eth_bond_pmd.c

> +++ b/drivers/net/bon= ding/rte_eth_bond_pmd.c

> @@ -3504,6 += 3504,11 @@ bond_ethdev_configure(struct rte_eth_dev *de= v)

> if (dev->data->dev_conf.rxmode.m= q_mode & RTE_ETH_MQ_RX_RSS) {

>&nb= sp;struct rte_eth_rss_conf *rss_conf =3D

= > &dev->data->dev_conf.rx_adv_conf.rss_conf;
>&nbs= p;
> +

> +if (internals->rss= _key_len =3D=3D 0) {

> +internals= ->rss_key_len =3D sizeof(default_rss_key);

= > +}

> +

> if=  (rss_conf->rss_key !=3D NULL) {

= > if (internals->rss_key_len > rss_conf->rs= s_key_len) {

> RTE_BOND_LOG(ERR, "= ;Invalid rss key length(%u)",

>&n= bsp;-- 

> 2.32.0.windows.1


------=_Part_19886_1921952870.1642144268503--