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 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
DPDK patches and discussions This inbox may be cloned and mirrored by anyone: git clone --mirror https://inbox.dpdk.org/dev/0 dev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 dev dev/ https://inbox.dpdk.org/dev \ dev@dpdk.org public-inbox-index dev Example config snippet for mirrors. Newsgroup available over NNTP: nntp://inbox.dpdk.org/inbox.dpdk.dev AGPL code for this site: git clone https://public-inbox.org/public-inbox.git