On 10/21/2020 11:07 AM, Lijun Ou wrote:
From: Ophir Munk <ophi...@mellanox.com>

When creating an RSS rule without specifying a key (see [1]) it is
expected that the device will use the default key.
A NULL key is used to indicate to a PMD it should use
its default key, however testpmd assigns a non-NULL dummy key
(see [2]) instead.
This does not enable testing any PMD behavior when the RSS key is not
specified. This commit fixes this limitation by setting key to NULL.
Also, it fixes the Scenario [3] that enable default RSS action by
setting key=NULL and key_len!=0.
[1]
RSS rule example without specifying a key:
flow create 0 ingress <pattern> / end actions rss queues 0 1 end / end
[2]
Testpmd default key assignment:
.key= "testpmd's default RSS hash key, "
"override it for better balancing"
[3]
flow create 0 <pattern> actions rss queues 0 1 end key_len 40 / end

fixes refer to the link: https://patches.dpdk.org/patch/80898/

Signed-off-by: Ophir Munk <ophi...@mellanox.com>
Signed-off-by: Ferruh Yigit <ferruh.yi...@intel.com>
Signed-off-by: Lijun Ou <ouli...@huawei.com>

Applied to dpdk-next-net/main, thanks.


Updated the commit log as below:

Author: Lijun Ou <ouli...@huawei.com>
Date:   Wed Oct 21 18:07:10 2020 +0800

    app/testpmd: fix RSS key for flow API RSS rule

    When a flow API RSS rule is issued in testpmd, device RSS key is changed
    unexpectedly, device RSS key is changed to the testpmd default RSS key.

    Consider the following usage with testpmd:
    1. first, startup testpmd:
     testpmd> show port 0 rss-hash key
     RSS functions: all ipv4-frag ipv4-other ipv6-frag ipv6-other ip
     RSS key: 6D5A56DA255B0EC24167253D43A38FB0D0CA2BCBAE7B30B477CB2DA38030F
              20C6A42B73BBEAC01FA
    2. create a rss rule
     testpmd> flow create 0 ingress pattern eth / ipv4 / udp / end \
              actions rss types ipv4-udp end queues end / end

    3. show rss-hash key
     testpmd> show port 0 rss-hash key
     RSS functions: all ipv4-udp udp
     RSS key: 74657374706D6427732064656661756C74205253532068617368206B65792
              C206F76657272696465

    This is because testpmd always sends a key with the RSS rule,
    if user provides a key as part of the rule that key is used, if user
    doesn't provide a key, testpmd default key is sent to the PMDs, which is
    causing device programmed RSS key to be changed.

    There was a previous attempt to fix the same issue [1], but it has been
    reverted back [2] because of the crash when 'key_len' is provided
    without 'key'.

    This patch follows the same approach with the initial fix [1] but also
    addresses the crash.

    After change, testpmd RSS key is 'NULL' by default, if user provides a
    key as part of rule it is used, if not no key is sent to the PMDs at all

    [1]
    Commit a4391f8bae85 ("app/testpmd: set default RSS key as null")

    [2]
    Commit f3698c3d09a6 ("app/testpmd: revert setting default RSS")

    Fixes: d0ad8648b1c5 ("app/testpmd: fix RSS flow action configuration")
    Cc: sta...@dpdk.org

    Signed-off-by: Lijun Ou <ouli...@huawei.com>
    Signed-off-by: Ophir Munk <ophi...@mellanox.com>
    Signed-off-by: Ferruh Yigit <ferruh.yi...@intel.com>

Reply via email to