From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 091B2A0C4C; Tue, 5 Oct 2021 17:57:22 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 831C94140D; Tue, 5 Oct 2021 17:56:59 +0200 (CEST) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id A449A413E7 for ; Tue, 5 Oct 2021 17:56:54 +0200 (CEST) Received: from localhost.localdomain (unknown [5.144.121.98]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by shelob.oktetlabs.ru (Postfix) with ESMTPSA id 344EB7F6D6; Tue, 5 Oct 2021 18:56:54 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru 344EB7F6D6 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=oktetlabs.ru; s=default; t=1633449414; bh=FYFAy2q8aTX04sYVV8zbCFD+wk4hhkWDUgz1hm8ivM4=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=SnKAzmP/d+oIZ9XxzkM5r4XMMuRzsicnl47EXDG1gJosl7Sr4vSXUYgSTkjJesHv1 jM6cDUU1b74H/vuWN2/wL3ZAQK3RqOjk3PZ88SBNELPY6fc5vHh7iRx/pJgDPt09vN mLlnTPbPoY1jcYuAgZI2MEjunqymoU69jVj0LER8= From: Ivan Malov To: dev@dpdk.org Cc: Ray Kinsella , Jerin Jacob , Thomas Monjalon , Ori Kam , Ajit Khaparde , Andrew Rybchenko , Andy Moreton Date: Tue, 5 Oct 2021 18:56:38 +0300 Message-Id: <20211005155639.12277-5-ivan.malov@oktetlabs.ru> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20211005155639.12277-1-ivan.malov@oktetlabs.ru> References: <20210923112012.14595-1-ivan.malov@oktetlabs.ru> <20211005155639.12277-1-ivan.malov@oktetlabs.ru> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH v5 4/5] common/sfc_efx/base: add RxQ flag to use Rx prefix user 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" Add an RxQ flag to request support for user flag field of Rx prefix. The feature is supported only on EF100 and EF10 ESSB. Signed-off-by: Ivan Malov Reviewed-by: Andrew Rybchenko Reviewed-by: Andy Moreton --- drivers/common/sfc_efx/base/ef10_rx.c | 54 ++++++++++++++++---------- drivers/common/sfc_efx/base/efx.h | 4 ++ drivers/common/sfc_efx/base/rhead_rx.c | 3 ++ 3 files changed, 40 insertions(+), 21 deletions(-) diff --git a/drivers/common/sfc_efx/base/ef10_rx.c b/drivers/common/sfc_efx/base/ef10_rx.c index 0c3f9413cf..a658e0dba2 100644 --- a/drivers/common/sfc_efx/base/ef10_rx.c +++ b/drivers/common/sfc_efx/base/ef10_rx.c @@ -930,6 +930,10 @@ ef10_rx_qcreate( rc = ENOTSUP; goto fail2; } + if (flags & EFX_RXQ_FLAG_USER_FLAG) { + rc = ENOTSUP; + goto fail3; + } /* * Ignore EFX_RXQ_FLAG_RSS_HASH since if RSS hash is calculated * it is always delivered from HW in the pseudo-header. @@ -940,7 +944,7 @@ ef10_rx_qcreate( erpl = &ef10_packed_stream_rx_prefix_layout; if (type_data == NULL) { rc = EINVAL; - goto fail3; + goto fail4; } switch (type_data->ertd_packed_stream.eps_buf_size) { case EFX_RXQ_PACKED_STREAM_BUF_SIZE_1M: @@ -960,17 +964,21 @@ ef10_rx_qcreate( break; default: rc = ENOTSUP; - goto fail4; + goto fail5; } erp->er_buf_size = type_data->ertd_packed_stream.eps_buf_size; /* Packed stream pseudo header does not have RSS hash value */ if (flags & EFX_RXQ_FLAG_RSS_HASH) { rc = ENOTSUP; - goto fail5; + goto fail6; } if (flags & EFX_RXQ_FLAG_USER_MARK) { rc = ENOTSUP; - goto fail6; + goto fail7; + } + if (flags & EFX_RXQ_FLAG_USER_FLAG) { + rc = ENOTSUP; + goto fail8; } break; #endif /* EFSYS_OPT_RX_PACKED_STREAM */ @@ -979,7 +987,7 @@ ef10_rx_qcreate( erpl = &ef10_essb_rx_prefix_layout; if (type_data == NULL) { rc = EINVAL; - goto fail7; + goto fail9; } params.es_bufs_per_desc = type_data->ertd_es_super_buffer.eessb_bufs_per_desc; @@ -997,7 +1005,7 @@ ef10_rx_qcreate( #endif /* EFSYS_OPT_RX_ES_SUPER_BUFFER */ default: rc = ENOTSUP; - goto fail8; + goto fail10; } #if EFSYS_OPT_RX_PACKED_STREAM @@ -1005,13 +1013,13 @@ ef10_rx_qcreate( /* Check if datapath firmware supports packed stream mode */ if (encp->enc_rx_packed_stream_supported == B_FALSE) { rc = ENOTSUP; - goto fail9; + goto fail11; } /* Check if packed stream allows configurable buffer sizes */ if ((params.ps_buf_size != MC_CMD_INIT_RXQ_EXT_IN_PS_BUFF_1M) && (encp->enc_rx_var_packed_stream_supported == B_FALSE)) { rc = ENOTSUP; - goto fail10; + goto fail12; } } #else /* EFSYS_OPT_RX_PACKED_STREAM */ @@ -1022,17 +1030,17 @@ ef10_rx_qcreate( if (params.es_bufs_per_desc > 0) { if (encp->enc_rx_es_super_buffer_supported == B_FALSE) { rc = ENOTSUP; - goto fail11; + goto fail13; } if (!EFX_IS_P2ALIGNED(uint32_t, params.es_max_dma_len, EFX_RX_ES_SUPER_BUFFER_BUF_ALIGNMENT)) { rc = EINVAL; - goto fail12; + goto fail14; } if (!EFX_IS_P2ALIGNED(uint32_t, params.es_buf_stride, EFX_RX_ES_SUPER_BUFFER_BUF_ALIGNMENT)) { rc = EINVAL; - goto fail13; + goto fail15; } } #else /* EFSYS_OPT_RX_ES_SUPER_BUFFER */ @@ -1041,7 +1049,7 @@ ef10_rx_qcreate( if (flags & EFX_RXQ_FLAG_INGRESS_MPORT) { rc = ENOTSUP; - goto fail14; + goto fail16; } /* Scatter can only be disabled if the firmware supports doing so */ @@ -1057,7 +1065,7 @@ ef10_rx_qcreate( if ((rc = efx_mcdi_init_rxq(enp, ndescs, eep, label, index, esmp, ¶ms)) != 0) - goto fail15; + goto fail17; erp->er_eep = eep; erp->er_label = label; @@ -1070,40 +1078,44 @@ ef10_rx_qcreate( return (0); +fail17: + EFSYS_PROBE(fail15); +fail16: + EFSYS_PROBE(fail14); +#if EFSYS_OPT_RX_ES_SUPER_BUFFER fail15: EFSYS_PROBE(fail15); fail14: EFSYS_PROBE(fail14); -#if EFSYS_OPT_RX_ES_SUPER_BUFFER fail13: EFSYS_PROBE(fail13); +#endif /* EFSYS_OPT_RX_ES_SUPER_BUFFER */ +#if EFSYS_OPT_RX_PACKED_STREAM fail12: EFSYS_PROBE(fail12); fail11: EFSYS_PROBE(fail11); -#endif /* EFSYS_OPT_RX_ES_SUPER_BUFFER */ -#if EFSYS_OPT_RX_PACKED_STREAM +#endif /* EFSYS_OPT_RX_PACKED_STREAM */ fail10: EFSYS_PROBE(fail10); +#if EFSYS_OPT_RX_ES_SUPER_BUFFER fail9: EFSYS_PROBE(fail9); -#endif /* EFSYS_OPT_RX_PACKED_STREAM */ +#endif /* EFSYS_OPT_RX_ES_SUPER_BUFFER */ +#if EFSYS_OPT_RX_PACKED_STREAM fail8: EFSYS_PROBE(fail8); -#if EFSYS_OPT_RX_ES_SUPER_BUFFER fail7: EFSYS_PROBE(fail7); -#endif /* EFSYS_OPT_RX_ES_SUPER_BUFFER */ -#if EFSYS_OPT_RX_PACKED_STREAM fail6: EFSYS_PROBE(fail6); fail5: EFSYS_PROBE(fail5); fail4: EFSYS_PROBE(fail4); +#endif /* EFSYS_OPT_RX_PACKED_STREAM */ fail3: EFSYS_PROBE(fail3); -#endif /* EFSYS_OPT_RX_PACKED_STREAM */ fail2: EFSYS_PROBE(fail2); fail1: diff --git a/drivers/common/sfc_efx/base/efx.h b/drivers/common/sfc_efx/base/efx.h index 24e1314cc3..bed1029f59 100644 --- a/drivers/common/sfc_efx/base/efx.h +++ b/drivers/common/sfc_efx/base/efx.h @@ -3007,6 +3007,10 @@ typedef enum efx_rxq_type_e { * Request user mark field in the Rx prefix of a queue. */ #define EFX_RXQ_FLAG_USER_MARK 0x10 +/* + * Request user flag field in the Rx prefix of a queue. + */ +#define EFX_RXQ_FLAG_USER_FLAG 0x20 LIBEFX_API extern __checkReturn efx_rc_t diff --git a/drivers/common/sfc_efx/base/rhead_rx.c b/drivers/common/sfc_efx/base/rhead_rx.c index 76b8ce302a..9d3258b503 100644 --- a/drivers/common/sfc_efx/base/rhead_rx.c +++ b/drivers/common/sfc_efx/base/rhead_rx.c @@ -635,6 +635,9 @@ rhead_rx_qcreate( if (flags & EFX_RXQ_FLAG_USER_MARK) fields_mask |= 1U << EFX_RX_PREFIX_FIELD_USER_MARK; + if (flags & EFX_RXQ_FLAG_USER_FLAG) + fields_mask |= 1U << EFX_RX_PREFIX_FIELD_USER_FLAG; + /* * LENGTH is required in EF100 host interface, as receive events * do not include the packet length. -- 2.20.1