All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Arthur Kiyanovski <akiyano@amazon.com>,
	Sameeh Jubran <sameehj@amazon.com>,
	"David S . Miller" <davem@davemloft.net>,
	Sasha Levin <sashal@kernel.org>,
	netdev@vger.kernel.org
Subject: [PATCH AUTOSEL 4.19 16/25] net: ena: fix incorrect default RSS key
Date: Sat, 22 Feb 2020 21:23:30 -0500	[thread overview]
Message-ID: <20200223022339.1885-16-sashal@kernel.org> (raw)
In-Reply-To: <20200223022339.1885-1-sashal@kernel.org>

From: Arthur Kiyanovski <akiyano@amazon.com>

[ Upstream commit 0d1c3de7b8c78a5e44b74b62ede4a63629f5d811 ]

Bug description:
When running "ethtool -x <if_name>" the key shows up as all zeros.

When we use "ethtool -X <if_name> hfunc toeplitz hkey <some:random:key>" to
set the key and then try to retrieve it using "ethtool -x <if_name>" then
we return the correct key because we return the one we saved.

Bug cause:
We don't fetch the key from the device but instead return the key
that we have saved internally which is by default set to zero upon
allocation.

Fix:
This commit fixes the issue by initializing the key to a random value
using netdev_rss_key_fill().

Fixes: 1738cd3ed342 ("net: ena: Add a driver for Amazon Elastic Network Adapters (ENA)")
Signed-off-by: Sameeh Jubran <sameehj@amazon.com>
Signed-off-by: Arthur Kiyanovski <akiyano@amazon.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/amazon/ena/ena_com.c | 15 +++++++++++++++
 drivers/net/ethernet/amazon/ena/ena_com.h |  1 +
 2 files changed, 16 insertions(+)

diff --git a/drivers/net/ethernet/amazon/ena/ena_com.c b/drivers/net/ethernet/amazon/ena/ena_com.c
index c9b21306cf6c4..ebc36d15441ce 100644
--- a/drivers/net/ethernet/amazon/ena/ena_com.c
+++ b/drivers/net/ethernet/amazon/ena/ena_com.c
@@ -842,6 +842,19 @@ static int ena_com_get_feature(struct ena_com_dev *ena_dev,
 				      0);
 }
 
+static void ena_com_hash_key_fill_default_key(struct ena_com_dev *ena_dev)
+{
+	struct ena_admin_feature_rss_flow_hash_control *hash_key =
+		(ena_dev->rss).hash_key;
+
+	netdev_rss_key_fill(&hash_key->key, sizeof(hash_key->key));
+	/* The key is stored in the device in u32 array
+	 * as well as the API requires the key to be passed in this
+	 * format. Thus the size of our array should be divided by 4
+	 */
+	hash_key->keys_num = sizeof(hash_key->key) / sizeof(u32);
+}
+
 static int ena_com_hash_key_allocate(struct ena_com_dev *ena_dev)
 {
 	struct ena_rss *rss = &ena_dev->rss;
@@ -2409,6 +2422,8 @@ int ena_com_rss_init(struct ena_com_dev *ena_dev, u16 indr_tbl_log_size)
 	if (unlikely(rc))
 		goto err_hash_key;
 
+	ena_com_hash_key_fill_default_key(ena_dev);
+
 	rc = ena_com_hash_ctrl_init(ena_dev);
 	if (unlikely(rc))
 		goto err_hash_ctrl;
diff --git a/drivers/net/ethernet/amazon/ena/ena_com.h b/drivers/net/ethernet/amazon/ena/ena_com.h
index 7b784f8a06a66..90fce5c0ca48a 100644
--- a/drivers/net/ethernet/amazon/ena/ena_com.h
+++ b/drivers/net/ethernet/amazon/ena/ena_com.h
@@ -42,6 +42,7 @@
 #include <linux/spinlock.h>
 #include <linux/types.h>
 #include <linux/wait.h>
+#include <linux/netdevice.h>
 
 #include "ena_common_defs.h"
 #include "ena_admin_defs.h"
-- 
2.20.1


  parent reply	other threads:[~2020-02-23  2:24 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-23  2:23 [PATCH AUTOSEL 4.19 01/25] ipmi:ssif: Handle a possible NULL pointer reference Sasha Levin
2020-02-23  2:23 ` [PATCH AUTOSEL 4.19 02/25] drm/msm: Set dma maximum segment size for mdss Sasha Levin
2020-02-23  2:23   ` Sasha Levin
2020-02-23  2:23 ` [PATCH AUTOSEL 4.19 03/25] sched/core: Don't skip remote tick for idle CPUs Sasha Levin
2020-02-23  2:23 ` [PATCH AUTOSEL 4.19 04/25] dax: pass NOWAIT flag to iomap_apply Sasha Levin
2020-02-23  2:23   ` Sasha Levin
2020-02-23  2:23 ` [PATCH AUTOSEL 4.19 05/25] mac80211: consider more elements in parsing CRC Sasha Levin
2020-02-23  2:23 ` [PATCH AUTOSEL 4.19 06/25] cfg80211: check wiphy driver existence for drvinfo report Sasha Levin
2020-02-23  2:23 ` [PATCH AUTOSEL 4.19 07/25] s390/zcrypt: fix card and queue total counter wrap Sasha Levin
2020-02-23  2:23 ` [PATCH AUTOSEL 4.19 08/25] qmi_wwan: re-add DW5821e pre-production variant Sasha Levin
2020-02-23  2:23 ` [PATCH AUTOSEL 4.19 09/25] qmi_wwan: unconditionally reject 2 ep interfaces Sasha Levin
2020-02-23  2:23 ` [PATCH AUTOSEL 4.19 10/25] arm/ftrace: Fix BE text poking Sasha Levin
2020-02-23  2:23   ` Sasha Levin
2020-02-23  2:23 ` [PATCH AUTOSEL 4.19 11/25] ARM: dts: sti: fixup sound frame-inversion for stihxxx-b2120.dtsi Sasha Levin
2020-02-23  2:23   ` Sasha Levin
2020-02-23  2:23 ` [PATCH AUTOSEL 4.19 12/25] soc/tegra: fuse: Fix build with Tegra194 configuration Sasha Levin
2020-02-23  2:23 ` [PATCH AUTOSEL 4.19 13/25] net: ena: fix potential crash when rxfh key is NULL Sasha Levin
2020-02-23  2:23 ` [PATCH AUTOSEL 4.19 14/25] net: ena: fix uses of round_jiffies() Sasha Levin
2020-02-23  2:23 ` [PATCH AUTOSEL 4.19 15/25] net: ena: add missing ethtool TX timestamping indication Sasha Levin
2020-02-23  2:23 ` Sasha Levin [this message]
2020-02-23  2:23 ` [PATCH AUTOSEL 4.19 17/25] net: ena: rss: fix failure to get indirection table Sasha Levin
2020-02-23  2:23 ` [PATCH AUTOSEL 4.19 18/25] net: ena: rss: store hash function as values and not bits Sasha Levin
2020-02-23  2:23 ` [PATCH AUTOSEL 4.19 19/25] net: ena: fix incorrectly saving queue numbers when setting RSS indirection table Sasha Levin
2020-02-23  2:23 ` [PATCH AUTOSEL 4.19 20/25] net: ena: ethtool: use correct value for crc32 hash Sasha Levin
2020-02-23  2:23 ` [PATCH AUTOSEL 4.19 21/25] net: ena: ena-com.c: prevent NULL pointer dereference Sasha Levin
2020-02-23  2:23 ` [PATCH AUTOSEL 4.19 22/25] enic: prevent waking up stopped tx queues over watchdog reset Sasha Levin
2020-02-23  2:23 ` [PATCH AUTOSEL 4.19 23/25] cifs: Fix mode output in debugging statements Sasha Levin
2020-02-23  2:23 ` [PATCH AUTOSEL 4.19 24/25] bcache: ignore pending signals when creating gc and allocator thread Sasha Levin
2020-02-23  2:23 ` [PATCH AUTOSEL 4.19 25/25] cfg80211: add missing policy for NL80211_ATTR_STATUS_CODE Sasha Levin

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=20200223022339.1885-16-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=akiyano@amazon.com \
    --cc=davem@davemloft.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=sameehj@amazon.com \
    --cc=stable@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.