On 3/10/2023 9:35 AM, Dongdong Liu wrote: > From: Huisong Li <lihuis...@huawei.com> > > The hash key length of hns3 driver is obtained from firmware. If the > length isn't a multiple of HNS3_RSS_HASH_KEY_NUM (16), the last part > of hash key will be truncated. >
I am not sure if the explanation is correct, according below code last part of the key is truncated if key_len *is* multiple of HNS3_RSS_HASH_KEY_NUM. Because code assumes "key_len % HNS3_RSS_HASH_KEY_NUM" will give the remaining part of the key, but when key_len is multiple of HNS3_RSS_HASH_KEY_NUM it gives 0, causing last HNS3_RSS_HASH_KEY_NUM chunk truncated. If above understanding correct, I can fix commit log while merging. > Fixes: 4a7384e3c34d ("net/hns3: refactor set RSS hash algorithm and key > interface") > Fixes: c37ca66f2b27 ("net/hns3: support RSS") > Cc: sta...@dpdk.org > I am not sure if `c37ca66f2b27 ("net/hns3: support RSS")` is needed here, issue seems because of commit 4a7384e3c34d, so this should be: Fixes: 4a7384e3c34d ("net/hns3: refactor set RSS hash algorithm and key interface") Cc: sta...@dpdk.org > Signed-off-by: Huisong Li <lihuis...@huawei.com> > Signed-off-by: Dongdong Liu <liudongdo...@huawei.com> > --- > drivers/net/hns3/hns3_rss.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/hns3/hns3_rss.c b/drivers/net/hns3/hns3_rss.c > index d6e0754273..2011c18b9b 100644 > --- a/drivers/net/hns3/hns3_rss.c > +++ b/drivers/net/hns3/hns3_rss.c > @@ -301,7 +301,8 @@ hns3_rss_set_algo_key(struct hns3_hw *hw, uint8_t > hash_algo, > req->hash_config |= (hash_algo & HNS3_RSS_HASH_ALGO_MASK); > req->hash_config |= (idx << HNS3_RSS_HASH_KEY_OFFSET_B); > > - if (idx == max_bd_num - 1) > + if (idx == max_bd_num - 1 && > + (key_len % HNS3_RSS_HASH_KEY_NUM) != 0) > cur_key_size = key_len % HNS3_RSS_HASH_KEY_NUM; > else > cur_key_size = HNS3_RSS_HASH_KEY_NUM;