DPDK-dev Archive on lore.kernel.org
 help / color / Atom feed
From: Yong Wang <yongwang@vmware.com>
To: Eduard Serra Miralles <eserra@vmware.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH] net/vmxnet3: fix RSS setting on v4
Date: Mon, 16 Sep 2019 19:01:14 +0000
Message-ID: <8FBE8D68-AB07-4E50-BD9E-53700207A0CD@vmware.com> (raw)
In-Reply-To: <MWHPR05MB3472618EE9747D381D78BFA0BDB30@MWHPR05MB3472.namprd05.prod.outlook.com>


From: Eduard Serra Miralles <eserra@vmware.com>
Date: Friday, September 13, 2019 at 1:10 PM
To: Yong Wang <yongwang@vmware.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: RE: [PATCH] net/vmxnet3: fix RSS setting on v4


I think so too. Apparently however, ESX is mandatorily expecting that underneath. If not set, config will fail.





________________________________
From: Yong Wang <yongwang@vmware.com>
Sent: Friday, September 13, 2019 11:44:38 AM
To: Eduard Serra Miralles <eserra@vmware.com>
Cc: dev@dpdk.org <dev@dpdk.org>
Subject: Re: [PATCH] net/vmxnet3: fix RSS setting on v4

-----Original Message-----
From: Eduard Serra Miralles <eserra@vmware.com>
Date: Wednesday, August 21, 2019 at 9:37 AM
To: Yong Wang <yongwang@vmware.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: [PATCH] net/vmxnet3: fix RSS setting on v4

    When calling to setup RSS on v4 API, ESX will expect
    IPv4/6 TCP RSS to be set/requested mandatorily.

    This patch will:
    - Set IPv4/6 TCP RSS when these have not been set. A warning
    message is thrown to make sure we warn the application we are
    setting IPv4/6 TCP RSS when not set.

Why we are enforcing TCP RSS?  I would think it's up to the user to decide what to request based on their specific needs and we should support RSS even when it does not request TCP RSS.

    - An additional check has been added to dodge RSS configuration
    altogether unless MQ_RSS has been requested, similar to v3.

    The alternative (returning error) was considered, the intent
    is to ease the task of setting up and running vmxnet3 in situations
    where it's supposted to be most strightforward (testpmd, pktgen).

    Signed-off-by: Eduard Serra <eserra@vmware.com>
    ---
Acked-by: Yong Wang <yongwang@vmware.com>

     drivers/net/vmxnet3/vmxnet3_ethdev.c | 3 ++-
     drivers/net/vmxnet3/vmxnet3_ethdev.h | 4 ++++
     drivers/net/vmxnet3/vmxnet3_rxtx.c   | 8 ++++++++
     3 files changed, 14 insertions(+), 1 deletion(-)

    diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c b/drivers/net/vmxnet3/vmxnet3_ethdev.c
    index 57feb37..0a7047e 100644
    --- a/drivers/net/vmxnet3/vmxnet3_ethdev.c
    +++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c
    @@ -769,7 +769,8 @@ vmxnet3_dev_start(struct rte_eth_dev *dev)
                 PMD_INIT_LOG(DEBUG, "Failed to setup memory region\n");
         }

    -   if (VMXNET3_VERSION_GE_4(hw)) {
    +   if (VMXNET3_VERSION_GE_4(hw) &&
    +       dev->data->dev_conf.rxmode.mq_mode == ETH_MQ_RX_RSS) {
                 /* Check for additional RSS  */
                 ret = vmxnet3_v4_rss_configure(dev);
                 if (ret != VMXNET3_SUCCESS) {
    diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.h b/drivers/net/vmxnet3/vmxnet3_ethdev.h
    index 8c2b6f8..6e3ce7d 100644
    --- a/drivers/net/vmxnet3/vmxnet3_ethdev.h
    +++ b/drivers/net/vmxnet3/vmxnet3_ethdev.h
    @@ -38,6 +38,10 @@
         ETH_RSS_NONFRAG_IPV4_UDP | \
         ETH_RSS_NONFRAG_IPV6_UDP)

    +#define VMXNET3_MANDATORY_V4_RSS ( \
    +   ETH_RSS_NONFRAG_IPV4_TCP | \
    +   ETH_RSS_NONFRAG_IPV6_TCP)
    +
     /* RSS configuration structure - shared with device through GPA */
     typedef struct VMXNET3_RSSConf {
         uint16_t   hashType;
    diff --git a/drivers/net/vmxnet3/vmxnet3_rxtx.c b/drivers/net/vmxnet3/vmxnet3_rxtx.c
    index 7794d74..dd99684 100644
    --- a/drivers/net/vmxnet3/vmxnet3_rxtx.c
    +++ b/drivers/net/vmxnet3/vmxnet3_rxtx.c
    @@ -1311,6 +1311,14 @@ vmxnet3_v4_rss_configure(struct rte_eth_dev *dev)

         cmdInfo->setRSSFields = 0;
         port_rss_conf = &dev->data->dev_conf.rx_adv_conf.rss_conf;
    +
    +   if ((port_rss_conf->rss_hf & VMXNET3_MANDATORY_V4_RSS) !=
    +       VMXNET3_MANDATORY_V4_RSS) {
    +           PMD_INIT_LOG(WARNING, "RSS: IPv4/6 TCP is required for vmxnet3 v4 RSS,"
    +                        "automatically setting it");
    +           port_rss_conf->rss_hf |= VMXNET3_MANDATORY_V4_RSS;
    +   }
    +
         rss_hf = port_rss_conf->rss_hf &
                 (VMXNET3_V4_RSS_MASK | VMXNET3_RSS_OFFLOAD_ALL);

    --
    2.7.4



  reply index

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-21 16:37 Eduard Serra Miralles
2019-09-13 18:44 ` Yong Wang
2019-09-13 20:10   ` Eduard Serra Miralles
2019-09-16 19:01     ` Yong Wang [this message]
2019-10-08 17:55       ` Ferruh Yigit

Reply instructions:

You may reply publically 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=8FBE8D68-AB07-4E50-BD9E-53700207A0CD@vmware.com \
    --to=yongwang@vmware.com \
    --cc=dev@dpdk.org \
    --cc=eserra@vmware.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

DPDK-dev Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/dpdk-dev/0 dpdk-dev/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 dpdk-dev dpdk-dev/ https://lore.kernel.org/dpdk-dev \
		dev@dpdk.org dpdk-dev@archiver.kernel.org
	public-inbox-index dpdk-dev

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.dpdk.dev


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