From: Michal Krawczyk <mk@semihalf.com>
To: dev@dpdk.org
Cc: gtzalik@amazon.com, igorch@amazon.com,
Michal Krawczyk <mk@semihalf.com>,
Marcin Wojtas <mw@semihalf.com>,
Evgeny Schemeilin <evgenys@amazon.com>
Subject: [dpdk-dev] [PATCH 11/20] net/ena/base: check for RSS key configuration support
Date: Thu, 17 Sep 2020 07:30:26 +0200 [thread overview]
Message-ID: <20200917053035.1889989-12-mk@semihalf.com> (raw)
In-Reply-To: <20200917053035.1889989-1-mk@semihalf.com>
Setting RSS hash function could not be supported by the device. In that
situation there is no need to fill in default hash key or even allocate
hash key.
Signed-off-by: Michal Krawczyk <mk@semihalf.com>
Reviewed-by: Igor Chauskin <igorch@amazon.com>
Reviewed-by: Guy Tzalik <gtzalik@amazon.com>
---
drivers/net/ena/base/ena_com.c | 13 ++++++++++---
drivers/net/ena/base/ena_defs/ena_admin_defs.h | 15 ++++++++++++++-
2 files changed, 24 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ena/base/ena_com.c b/drivers/net/ena/base/ena_com.c
index ea7d6788c9..9764bd2f48 100644
--- a/drivers/net/ena/base/ena_com.c
+++ b/drivers/net/ena/base/ena_com.c
@@ -1083,6 +1083,9 @@ static int ena_com_hash_key_allocate(struct ena_com_dev *ena_dev)
{
struct ena_rss *rss = &ena_dev->rss;
+ if (!ena_com_check_supported_feature_id(ena_dev, ENA_ADMIN_RSS_HASH_FUNCTION))
+ return ENA_COM_UNSUPPORTED;
+
ENA_MEM_ALLOC_COHERENT(ena_dev->dmadev,
sizeof(*rss->hash_key),
rss->hash_key,
@@ -2719,12 +2722,16 @@ int ena_com_rss_init(struct ena_com_dev *ena_dev, u16 indr_tbl_log_size)
if (unlikely(rc))
goto err_indr_tbl;
+ /* The following function might return unsupported in case the
+ * device doesn't support setting the key / hash function. We can safely
+ * ignore this error and have indirection table support only.
+ */
rc = ena_com_hash_key_allocate(ena_dev);
- if (unlikely(rc))
+ if (likely(!rc))
+ ena_com_hash_key_fill_default_key(ena_dev);
+ else if (rc != ENA_COM_UNSUPPORTED)
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/ena/base/ena_defs/ena_admin_defs.h b/drivers/net/ena/base/ena_defs/ena_admin_defs.h
index 9cea1c3905..30e5eead71 100644
--- a/drivers/net/ena/base/ena_defs/ena_admin_defs.h
+++ b/drivers/net/ena/base/ena_defs/ena_admin_defs.h
@@ -873,7 +873,8 @@ struct ena_admin_host_info {
* 1 : rx_offset
* 2 : interrupt_moderation
* 3 : map_rx_buf_bidirectional
- * 31:4 : reserved
+ * 4 : rss_configurable_function_key
+ * 31:5 : reserved
*/
uint32_t driver_supported_features;
};
@@ -1198,6 +1199,8 @@ struct ena_admin_ena_mmio_req_read_less_resp {
#define ENA_ADMIN_HOST_INFO_INTERRUPT_MODERATION_MASK BIT(2)
#define ENA_ADMIN_HOST_INFO_MAP_RX_BUF_BIDIRECTIONAL_SHIFT 3
#define ENA_ADMIN_HOST_INFO_MAP_RX_BUF_BIDIRECTIONAL_MASK BIT(3)
+#define ENA_ADMIN_HOST_INFO_RSS_CONFIGURABLE_FUNCTION_KEY_SHIFT 4
+#define ENA_ADMIN_HOST_INFO_RSS_CONFIGURABLE_FUNCTION_KEY_MASK BIT(4)
/* feature_rss_ind_table */
#define ENA_ADMIN_FEATURE_RSS_IND_TABLE_ONE_ENTRY_UPDATE_MASK BIT(0)
@@ -1659,6 +1662,16 @@ static inline void set_ena_admin_host_info_map_rx_buf_bidirectional(struct ena_a
p->driver_supported_features |= (val << ENA_ADMIN_HOST_INFO_MAP_RX_BUF_BIDIRECTIONAL_SHIFT) & ENA_ADMIN_HOST_INFO_MAP_RX_BUF_BIDIRECTIONAL_MASK;
}
+static inline uint32_t get_ena_admin_host_info_rss_configurable_function_key(const struct ena_admin_host_info *p)
+{
+ return (p->driver_supported_features & ENA_ADMIN_HOST_INFO_RSS_CONFIGURABLE_FUNCTION_KEY_MASK) >> ENA_ADMIN_HOST_INFO_RSS_CONFIGURABLE_FUNCTION_KEY_SHIFT;
+}
+
+static inline void set_ena_admin_host_info_rss_configurable_function_key(struct ena_admin_host_info *p, uint32_t val)
+{
+ p->driver_supported_features |= (val << ENA_ADMIN_HOST_INFO_RSS_CONFIGURABLE_FUNCTION_KEY_SHIFT) & ENA_ADMIN_HOST_INFO_RSS_CONFIGURABLE_FUNCTION_KEY_MASK;
+}
+
static inline uint8_t get_ena_admin_feature_rss_ind_table_one_entry_update(const struct ena_admin_feature_rss_ind_table *p)
{
return p->flags & ENA_ADMIN_FEATURE_RSS_IND_TABLE_ONE_ENTRY_UPDATE_MASK;
--
2.25.1
next prev parent reply other threads:[~2020-09-17 5:32 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-17 5:30 [dpdk-dev] [PATCH 00/20] Upgrade HAL and add ENI metrics support Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 01/20] net/ena/base: use min/max macros with type conversion Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 02/20] net/ena/base: specify operations of rte_delay Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 03/20] net/ena/base: support 'resource busy' admin status Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 04/20] net/ena/base: exponential delay in polling functions Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 05/20] net/ena/base: fix release of wait event Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 06/20] net/ena/base: remove MMIOWB_NOT_DEFINED ifdef Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 07/20] net/ena/base: rework setup of accelerated LLQ mode Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 08/20] net/ena/base: add ENI stats Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 09/20] net/ena/base: split RSS function and hash getters Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 10/20] net/ena/base: do not use hardcoded RSS key buffer size Michal Krawczyk
2020-09-17 5:30 ` Michal Krawczyk [this message]
2020-09-17 5:30 ` [dpdk-dev] [PATCH 12/20] net/ena/base: minor style adjustments Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 13/20] net/ena/base: add missing unlikely Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 14/20] net/ena/base: store admin stats as u64 Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 15/20] net/ena/base: add check for meta desc being NULL Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 16/20] net/ena/base: convert values to u32 before shifting Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 17/20] net/ena/base: simplify loop copying Rx descs Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 18/20] net/ena/base: update generation date and commit Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 19/20] net/ena: lock dynamic usages of the admin queue Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 20/20] net/ena: expose ENI stats as additional xstats Michal Krawczyk
2020-09-17 17:02 ` [dpdk-dev] [PATCH 00/20] Upgrade HAL and add ENI metrics support Stephen Hemminger
2020-09-22 12:24 ` Ferruh Yigit
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=20200917053035.1889989-12-mk@semihalf.com \
--to=mk@semihalf.com \
--cc=dev@dpdk.org \
--cc=evgenys@amazon.com \
--cc=gtzalik@amazon.com \
--cc=igorch@amazon.com \
--cc=mw@semihalf.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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).