DPDK patches and discussions
 help / color / mirror / Atom feed
From: 俞文俊_yewu <yuwenjun_yewu@cmss.chinamobile.com>
To: "Min Hu (Connor)" <humin29@huawei.com>,
	 tangchengchang <tangchengchang@huawei.com>,
	 "ferruh.yigit" <ferruh.yigit@intel.com>
Cc: dev <dev@dpdk.org>, stable <stable@dpdk.org>
Subject: Re:Re: [PATCH] net/bonding: fix RSS not work for bonding in DPDK21.11
Date: Fri, 14 Jan 2022 15:11:08 +0800 (CST)	[thread overview]
Message-ID: <2afc61e1200b486-00003.Richmail.00008071009648883857@cmss.chinamobile.com> (raw)
In-Reply-To: <2b7a133a-3111-e814-d92c-d2252f9bd5e3@huawei.com>

[-- Attachment #1: Type: text/plain, Size: 5737 bytes --]

Sorry,mq_mode is RTE_ETH_MQ_RX_RSS in rte_eth_conf.



call chain: 

rte_eth_bond_create()->rte_eth_dev_configure()->rte_eth_bond_slave_add()->rte_eth_dev_start()



Consider this call chain, internals->rss_key_len is 0 in bond_ethdev_configure() 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)

{

	const char *name = dev->device->name

	struct bond_dev_private *internals = dev->data->dev_private

...



	/*

	 * If RSS is enabled, fill table with default values and

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

	 * Fall back to default RSS key if the key is not specified

	 */

	if (dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS) {

		struct rte_eth_rss_conf *rss_conf =

			&dev->data->dev_conf.rx_adv_conf.rss_conf



		if (rss_conf->rss_key != NULL) {

			if (internals->rss_key_len > rss_conf->rss_key_len) {

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

						rss_conf->rss_key_len)

				return -EINVAL

			}



			memcpy(internals->rss_key, rss_conf->rss_key,

			       internals->rss_key_len)

		} else {

			if (internals->rss_key_len > sizeof(default_rss_key)) {

				RTE_BOND_LOG(ERR,

				       "There is no suitable default hash key")

				return -EINVAL

			}



			memcpy(internals->rss_key, default_rss_key,

			       internals->rss_key_len)

		}



----Origin----From:"Min Hu (Connor)" <humin29@huawei.com>To:"yuwenjun_yewu" <yuwenjun_yewu@cmss.chinamobile.com>,tangchengchang  <tangchengchang@huawei.com>,"ferruh.yigit" <ferruh.yigit@intel.com>Cc: dev  <dev@dpdk.org>,stable  <stable@dpdk.org>Date:2022-01-14 08:59:21Subject:Re: [PATCH] net/bonding: fix RSS not work for bonding in DPDK21.11Hi,在 2022/1/12 15:29, 俞文俊_yewu 写道:>  From 85c4ffffe32996fc262dd6f69d0ce272ae8e8350 Mon Sep 17 00:00:00 2001> > From: Yu Wenjun <yuwenjun_yewu@cmss.chinamobile.com>> > Date: Wed, 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 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 = {> > .rxmode = {> > .mq_mode = RTE_ETH_MQ_RX_NONE,> > .split_hdr_size = 0,> > },> > .rx_adv_conf = {> > .rss_conf = {> > .rss_key = NULL,> > .rss_hf = RTE_ETH_RSS_IP,> > },> > },> > .txmode = {> > .mq_mode = 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 <yuwenjun_yewu@cmss.chinamobile.com>> > ---> >   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 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 => > &dev->data->dev_conf.rx_adv_conf.rss_conf> > +> > +if (internals->rss_key_len == 0) {> > +internals->rss_key_len = sizeof(default_rss_key)> > +}> > +> > if (rss_conf->rss_key != 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:Re: [PATCH] net/bonding: fix RSS not work for bonding in DPDK21.11Hi,在 2022/1/12 15:29, 俞文俊_yewu 写道:>  From 85c4ffffe32996fc262dd6f69d0ce272ae8e8350 Mon Sep 17 00:00:00 2001> > From: Yu Wenjun <yuwenjun_yewu@cmss.chinamobile.com>> > Date: Wed, 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 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 = {> > .rxmode = {> > .mq_mode = RTE_ETH_MQ_RX_NONE,> > .split_hdr_size = 0,> > },> > .rx_adv_conf = {> > .rss_conf = {> > .rss_key = NULL,> > .rss_hf = RTE_ETH_RSS_IP,> > },> > },> > .txmode = {> > .mq_mode = 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 <yuwenjun_yewu@cmss.chinamobile.com>> > ---> >   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 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 => > &dev->data->dev_conf.rx_adv_conf.rss_conf> > +> > +if (internals->rss_key_len == 0) {> > +internals->rss_key_len = sizeof(default_rss_key)> > +}> > +> > if (rss_conf->rss_key != 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> > 


[-- Attachment #2: Type: text/html, Size: 11578 bytes --]

  reply	other threads:[~2022-01-14  8:59 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-12  7:29 俞文俊_yewu
2022-01-14  0:59 ` Min Hu (Connor)
2022-01-14  7:11   ` 俞文俊_yewu [this message]
2022-01-14  8:50     ` Min Hu (Connor)
2022-01-14 11:14       ` 俞文俊_yewu
2022-01-15  1:06         ` Min Hu (Connor)
2022-01-17 10:15           ` Ferruh Yigit
2022-01-17 10:23             ` Ferruh Yigit
2022-01-15  1:07 ` Min Hu (Connor)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2afc61e1200b486-00003.Richmail.00008071009648883857@cmss.chinamobile.com \
    --to=yuwenjun_yewu@cmss.chinamobile.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=humin29@huawei.com \
    --cc=stable@dpdk.org \
    --cc=tangchengchang@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).