From patchwork Thu Sep 17 05:30:26 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Krawczyk X-Patchwork-Id: 77971 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 56136A04B6; Thu, 17 Sep 2020 07:32:35 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C5E361D578; Thu, 17 Sep 2020 07:31:10 +0200 (CEST) Received: from mail-lj1-f195.google.com (mail-lj1-f195.google.com [209.85.208.195]) by dpdk.org (Postfix) with ESMTP id 81C0B1D562 for ; Thu, 17 Sep 2020 07:31:04 +0200 (CEST) Received: by mail-lj1-f195.google.com with SMTP id u4so868854ljd.10 for ; Wed, 16 Sep 2020 22:31:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=semihalf-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=pPz5rk69Z1WDGziL93wwtAdevqXIqIizmEoVab55TrU=; b=TvxaKJEm1GuJxQa2hdj3joIjEF1glicqvdUkB8d+RGba0YrqfxJplGpfmXhstCftEC ptJh3qd67ZX9R+MG/24hOGB1XXLtyJVYFHEcEq1KMDmas80tQ4tFZ7wrGtWI1xIlVvPV zsIpoJRYTkzVthBxSKCICvsy8eZxZwJ6MidaYwH0ixyiMSFx9b1h43pySSYbdGaO+bcr dDzkXaRQJjL1qbxEWNcejUYqDMYFhUwrHDqAdmNF4hecm3fpE5+LUrfdDQUGiFs6Havd JeJgcTwrypPNAykU9BOwOkGnff1guty7dJFEbKQr8HZMLcdXLINxxuBX6sb7BODD7pMr tM8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=pPz5rk69Z1WDGziL93wwtAdevqXIqIizmEoVab55TrU=; b=mEV0dJIkHj/4+76RV15c9snGEf1VYTdq4vxWjWuqACnQGcMzd+26TD6LaHIsMhcVa6 0sGE028pB14NGeXQrmLFNcMy0cNmz/QPlZOyK4gZPiJB5dT1R42DHJQ6qkeY11Rg7Nyf R5ktSsglbVRcfJs89Tunzo18FEp2E2UTO7rsTft3p1hkxK2X54NJAnwI/OyE9/UCRNMm MDyl739+TCdHZ/WGCbd2tzcWu+6kQsmqvyPv7CZ1pPimokRHuye6cghvMIWgzOkrgFeT 4o6HX8FcfO0LIfiaws54aTCti0OVMUZsJym+BdFDFnrnUjx/CSpE09fI2LwBR6GaSnRV AtqQ== X-Gm-Message-State: AOAM532OTdDBkEo6IXw2Oxr8SgIRJlh+KRq0foHivq9K2nGzk4+aMon3 DG2k0Hoy9SoSLMK1dQDYQX+OeElBulXUO8p/ X-Google-Smtp-Source: ABdhPJz8ssND71oY508yJlvGsE7Y8a+3974LAksbfRh6K7P8/31NUYoSGpqSL00G1J6RgKV30+ZFkA== X-Received: by 2002:a2e:2286:: with SMTP id i128mr10405128lji.288.1600320663867; Wed, 16 Sep 2020 22:31:03 -0700 (PDT) Received: from mkPC.semihalf.local (193-106-246-138.noc.fibertech.net.pl. [193.106.246.138]) by smtp.gmail.com with ESMTPSA id j3sm5033686lfb.185.2020.09.16.22.31.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2020 22:31:03 -0700 (PDT) From: Michal Krawczyk To: dev@dpdk.org Cc: gtzalik@amazon.com, igorch@amazon.com, Michal Krawczyk , Marcin Wojtas , Evgeny Schemeilin Date: Thu, 17 Sep 2020 07:30:26 +0200 Message-Id: <20200917053035.1889989-12-mk@semihalf.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200917053035.1889989-1-mk@semihalf.com> References: <20200917053035.1889989-1-mk@semihalf.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH 11/20] net/ena/base: check for RSS key configuration support 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" 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 Reviewed-by: Igor Chauskin Reviewed-by: Guy Tzalik --- 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;