From patchwork Thu May 27 15:24:57 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 93506 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 33921A0546; Thu, 27 May 2021 17:26:40 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A1F6841122; Thu, 27 May 2021 17:26:02 +0200 (CEST) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id 6D6FD41111 for ; Thu, 27 May 2021 17:26:00 +0200 (CEST) Received: by shelob.oktetlabs.ru (Postfix, from userid 122) id 43CD27F5FC; Thu, 27 May 2021 18:26:00 +0300 (MSK) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on shelob.oktetlabs.ru X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=ALL_TRUSTED, DKIM_ADSP_DISCARD, URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.2 Received: from aros.oktetlabs.ru (aros.oktetlabs.ru [192.168.38.17]) by shelob.oktetlabs.ru (Postfix) with ESMTP id 584937F600; Thu, 27 May 2021 18:25:42 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru 584937F600 Authentication-Results: shelob.oktetlabs.ru/584937F600; dkim=none; dkim-atps=neutral From: Andrew Rybchenko To: dev@dpdk.org Cc: Igor Romanov , Andy Moreton , Ivan Malov Date: Thu, 27 May 2021 18:24:57 +0300 Message-Id: <20210527152510.1551026-8-andrew.rybchenko@oktetlabs.ru> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210527152510.1551026-1-andrew.rybchenko@oktetlabs.ru> References: <20210527152510.1551026-1-andrew.rybchenko@oktetlabs.ru> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH 07/20] common/sfc_efx/base: add ingress m-port RxQ flag X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 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" From: Igor Romanov Add a flag to request support for ingress m-port on an RxQ. Implement it only for Riverhead, other families will return an error if the flag is set. Signed-off-by: Igor Romanov Signed-off-by: Andrew Rybchenko Reviewed-by: Andy Moreton Reviewed-by: Ivan Malov --- drivers/common/sfc_efx/base/ef10_rx.c | 9 ++++++++- drivers/common/sfc_efx/base/efx.h | 5 +++++ drivers/common/sfc_efx/base/efx_rx.c | 14 +++++++++----- drivers/common/sfc_efx/base/rhead_rx.c | 3 +++ 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/drivers/common/sfc_efx/base/ef10_rx.c b/drivers/common/sfc_efx/base/ef10_rx.c index cfa60bd324..0e140645a5 100644 --- a/drivers/common/sfc_efx/base/ef10_rx.c +++ b/drivers/common/sfc_efx/base/ef10_rx.c @@ -1031,6 +1031,11 @@ ef10_rx_qcreate( EFSYS_ASSERT(params.es_bufs_per_desc == 0); #endif /* EFSYS_OPT_RX_ES_SUPER_BUFFER */ + if (flags & EFX_RXQ_FLAG_INGRESS_MPORT) { + rc = ENOTSUP; + goto fail12; + } + /* Scatter can only be disabled if the firmware supports doing so */ if (flags & EFX_RXQ_FLAG_SCATTER) params.disable_scatter = B_FALSE; @@ -1044,7 +1049,7 @@ ef10_rx_qcreate( if ((rc = efx_mcdi_init_rxq(enp, ndescs, eep, label, index, esmp, ¶ms)) != 0) - goto fail12; + goto fail13; erp->er_eep = eep; erp->er_label = label; @@ -1057,6 +1062,8 @@ ef10_rx_qcreate( return (0); +fail13: + EFSYS_PROBE(fail13); fail12: EFSYS_PROBE(fail12); #if EFSYS_OPT_RX_ES_SUPER_BUFFER diff --git a/drivers/common/sfc_efx/base/efx.h b/drivers/common/sfc_efx/base/efx.h index 6a99099ad2..72ab4af01c 100644 --- a/drivers/common/sfc_efx/base/efx.h +++ b/drivers/common/sfc_efx/base/efx.h @@ -2925,6 +2925,7 @@ typedef enum efx_rx_prefix_field_e { EFX_RX_PREFIX_FIELD_USER_MARK_VALID, EFX_RX_PREFIX_FIELD_CSUM_FRAME, EFX_RX_PREFIX_FIELD_INGRESS_VPORT, + EFX_RX_PREFIX_FIELD_INGRESS_MPORT = EFX_RX_PREFIX_FIELD_INGRESS_VPORT, EFX_RX_PREFIX_NFIELDS } efx_rx_prefix_field_t; @@ -2998,6 +2999,10 @@ typedef enum efx_rxq_type_e { * the driver. */ #define EFX_RXQ_FLAG_RSS_HASH 0x4 +/* + * Request ingress mport field in the Rx prefix of a queue. + */ +#define EFX_RXQ_FLAG_INGRESS_MPORT 0x8 LIBEFX_API extern __checkReturn efx_rc_t diff --git a/drivers/common/sfc_efx/base/efx_rx.c b/drivers/common/sfc_efx/base/efx_rx.c index 7c6fecf925..7e63363be7 100644 --- a/drivers/common/sfc_efx/base/efx_rx.c +++ b/drivers/common/sfc_efx/base/efx_rx.c @@ -1743,14 +1743,20 @@ siena_rx_qcreate( goto fail2; } - if (flags & EFX_RXQ_FLAG_SCATTER) { #if EFSYS_OPT_RX_SCATTER - jumbo = B_TRUE; +#define SUPPORTED_RXQ_FLAGS EFX_RXQ_FLAG_SCATTER #else +#define SUPPORTED_RXQ_FLAGS EFX_RXQ_FLAG_NONE +#endif + /* Reject flags for unsupported queue features */ + if ((flags & ~SUPPORTED_RXQ_FLAGS) != 0) { rc = EINVAL; goto fail3; -#endif /* EFSYS_OPT_RX_SCATTER */ } +#undef SUPPORTED_RXQ_FLAGS + + if (flags & EFX_RXQ_FLAG_SCATTER) + jumbo = B_TRUE; /* Set up the new descriptor queue */ EFX_POPULATE_OWORD_7(oword, @@ -1769,10 +1775,8 @@ siena_rx_qcreate( return (0); -#if !EFSYS_OPT_RX_SCATTER fail3: EFSYS_PROBE(fail3); -#endif fail2: EFSYS_PROBE(fail2); fail1: diff --git a/drivers/common/sfc_efx/base/rhead_rx.c b/drivers/common/sfc_efx/base/rhead_rx.c index b2dacbab32..f1d46f7c70 100644 --- a/drivers/common/sfc_efx/base/rhead_rx.c +++ b/drivers/common/sfc_efx/base/rhead_rx.c @@ -629,6 +629,9 @@ rhead_rx_qcreate( fields_mask |= 1U << EFX_RX_PREFIX_FIELD_RSS_HASH_VALID; } + if (flags & EFX_RXQ_FLAG_INGRESS_MPORT) + fields_mask |= 1U << EFX_RX_PREFIX_FIELD_INGRESS_MPORT; + /* * LENGTH is required in EF100 host interface, as receive events * do not include the packet length.