From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 79BA6A04DB; Thu, 15 Oct 2020 18:05:25 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id EF6291DE32; Thu, 15 Oct 2020 18:05:22 +0200 (CEST) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 8B2AA1DC63 for ; Thu, 15 Oct 2020 18:05:19 +0200 (CEST) IronPort-SDR: lEwXjSswK3c0lpw3LaqZHXhKiAJCg642tskBYWs2cDCLGf/BcwfuEpCHmtCgb652rTAVYUe0/A aAbxhp1RwjKQ== X-IronPort-AV: E=McAfee;i="6000,8403,9775"; a="153320659" X-IronPort-AV: E=Sophos;i="5.77,379,1596524400"; d="scan'208";a="153320659" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Oct 2020 09:05:09 -0700 IronPort-SDR: Fh6vAV7HSM3xDh7TLyvPqyE5/mlZuFe5N6vBxJ6Rp+81PxtsC2uvlU7YGftVw7OZ5ElsTyKjHw 7L/xgTmVQVjQ== X-IronPort-AV: E=Sophos;i="5.77,379,1596524400"; d="scan'208";a="464349747" Received: from fyigit-mobl1.ger.corp.intel.com (HELO [10.251.84.112]) ([10.251.84.112]) by orsmga004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Oct 2020 09:05:07 -0700 From: Ferruh Yigit To: oulijun , wenzhuo.lu@intel.com, beilei.xing@intel.com, adrien.mazarguil@6wind.com Cc: dev@dpdk.org, linuxarm@huawei.com, Ophir Munk , Ori Kam References: <1600955105-53176-2-git-send-email-oulijun@huawei.com> <1602765662-43299-1-git-send-email-oulijun@huawei.com> <1b2b0e11-1458-e2d9-5fde-91db35b8bc73@intel.com> <51676746-ec95-aff2-dc00-b76480ab6cba@huawei.com> <8c543941-e881-aa88-b52a-a70bfe8f6fcf@intel.com> Message-ID: Date: Thu, 15 Oct 2020 17:05:02 +0100 MIME-Version: 1.0 In-Reply-To: <8c543941-e881-aa88-b52a-a70bfe8f6fcf@intel.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Subject: Re: [dpdk-dev] [PATCH v5] app/testpmd: fix the default RSS key configuration X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 10/15/2020 3:43 PM, Ferruh Yigit wrote: > On 10/15/2020 3:04 PM, oulijun wrote: >> >> >> 在 2020/10/15 21:52, Ferruh Yigit 写道: >>> On 10/15/2020 1:41 PM, Lijun Ou wrote: >>>> When start the testpmd, the pmd driver initializes the RSS >>>> configuration. Generally, the recommended RSS hash key is >>>> used as the default key in the driver. In addition, the >>>> default key is different from the default RSS flow in testpmd >>>> without specifying RSS hash key. So. if you do not specify >>>> the RSS key when creating an RSS rule, the testpmd uses the >>>> default key as the default RSS key of the RSS rule. As a result, >>>> you may mistakenly consider that the RSS key in use is the valid >>>> default key of the NIC, actually, the key and the valid default >>>> key of the NIC are two values. >>>> >>>> Consider the follow 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: >>>> -74657374706D6427732064656661756C74205253532068617368206B65792C206F >>>> -76657272696465 >>>> >>>> In order to solve the above problems, it use the NIC valid default >>>> RSS key instead of the testpmd dummy RSS key in the flow configuration >>>> when the RSS key is not specified in the flow rule. If the NIC RSS key >>>> is invalid, it will use testpmd dummy RSS key as the default key. >>>> >>>> Fixes: ac8d22de2394 ("ethdev: flatten RSS configuration in flow API") >>>> Cc: stable@dpdk.org >>>> >>>> Signed-off-by: Lijun Ou >>>> Reviewed-by: Phil Yang >>>> --- >>>> V4->V5: >>>> -rewrite the commit log >>>> -add reviewed-by >>> >>> Hi Lijun, >>> >>> There were multiple other comments, it seems they are not addressed but only >>> updated the commit log, can you please check comments to prev versions. >>> >>> Before going into the details, my question was what happens if default key >>> not provided at all? >>> It seems this has been already tried by Ophir [1], later reverted back [2] >>> bringing the initial issue back. >>> >>> According commit, the reason of revert is to support following command: >>> "flow create 0 actions rss queues 0 1 end key_len 40 / end" >>> >>> @Ophir, @Lijun, >>> Can we ignore the 'key_len' if the 'key' is not supported and solve current >>> issue as initially intended ([1])? >>> >> Hi, Ferruh >>    I have discussed with Phil Yang about the problem in [1]. I think there may >> be other problems with the idea and there is no better solution. and we need >> to remove key_len definition from rte_rss_conf structure. They don't have a >> plan. And [1] was eventually reverted. >> > > Why ignoring 'key_len' (set it to zero) when there is no 'key' provided doesn't > work? > What do you think [1] + following update, will it work? diff --git a/lib/librte_ethdev/rte_flow.c b/lib/librte_ethdev/rte_flow.c index ee4f3464fe..e7789c87b3 100644 --- a/lib/librte_ethdev/rte_flow.c +++ b/lib/librte_ethdev/rte_flow.c @@ -535,7 +535,7 @@ rte_flow_conv_action_conf(void *buf, const size_t size, }), size > sizeof(*dst.rss) ? sizeof(*dst.rss) : size); off = sizeof(*dst.rss); - if (src.rss->key_len) { + if (src.rss->key_len && src.rss->key) { off = RTE_ALIGN_CEIL(off, sizeof(*dst.rss->key)); tmp = sizeof(*src.rss->key) * src.rss->key_len; if (size >= off + tmp) >> Thanks >> Lijun Ou >>> >>> [1] https://git.dpdk.org/dpdk/commit/?id=a4391f8bae8 >>> >>> [2] https://git.dpdk.org/dpdk/commit/?id=f3698c3d09a >>> . >>> >