From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id 297981B654 for ; Sun, 24 Dec 2017 11:47:04 +0100 (CET) X-Virus-Scanned: Proofpoint Essentials engine Received: from webmail.solarflare.com (webmail.solarflare.com [12.187.104.26]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1-us4.ppe-hosted.com (Proofpoint Essentials ESMTP Server) with ESMTPS id EA3A1BC005A for ; Sun, 24 Dec 2017 10:47:02 +0000 (UTC) Received: from ocex03.SolarFlarecom.com (10.20.40.36) by ocex03.SolarFlarecom.com (10.20.40.36) with Microsoft SMTP Server (TLS) id 15.0.1044.25; Sun, 24 Dec 2017 02:47:00 -0800 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ocex03.SolarFlarecom.com (10.20.40.36) with Microsoft SMTP Server (TLS) id 15.0.1044.25 via Frontend Transport; Sun, 24 Dec 2017 02:46:59 -0800 Received: from uklogin.uk.solarflarecom.com (uklogin.uk.solarflarecom.com [10.17.10.10]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id vBOAkwYK014782 for ; Sun, 24 Dec 2017 10:46:58 GMT Received: from uklogin.uk.solarflarecom.com (localhost.localdomain [127.0.0.1]) by uklogin.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id vBOAkwhK013494 for ; Sun, 24 Dec 2017 10:46:58 GMT From: Andrew Rybchenko To: Date: Sun, 24 Dec 2017 10:46:37 +0000 Message-ID: <1514112404-13398-8-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.2.3 In-Reply-To: <1514112404-13398-1-git-send-email-arybchenko@solarflare.com> References: <1514112404-13398-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 Content-Type: text/plain X-MDID: 1514112423-nEDcMZtk9Lfp Subject: [dpdk-dev] [PATCH 07/14] net/sfc/base: allow to request inner classes for Rx packets 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: , X-List-Received-Date: Sun, 24 Dec 2017 10:47:04 -0000 If HW/FW supports tunnel encapsulations, Rx event may contain either inner or outer packet classes. By default outer classes are requested. Make it possible to request inner classes to have more information about packet type and allow to interpret inner frame checksum validation results correctly. Signed-off-by: Andrew Rybchenko Reviewed-by: Andy Moreton Reviewed-by: Mark Spender --- drivers/net/sfc/base/ef10_rx.c | 13 +++++++++++-- drivers/net/sfc/base/efx.h | 9 +++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/drivers/net/sfc/base/ef10_rx.c b/drivers/net/sfc/base/ef10_rx.c index 17b1652..80f779e 100644 --- a/drivers/net/sfc/base/ef10_rx.c +++ b/drivers/net/sfc/base/ef10_rx.c @@ -44,6 +44,7 @@ efx_mcdi_init_rxq( __in uint32_t instance, __in efsys_mem_t *esmp, __in boolean_t disable_scatter, + __in boolean_t want_inner_classes, __in uint32_t ps_bufsize) { efx_nic_cfg_t *encp = &(enp->en_nic_cfg); @@ -65,7 +66,8 @@ efx_mcdi_init_rxq( else dma_mode = MC_CMD_INIT_RXQ_EXT_IN_SINGLE_PACKET; - if (encp->enc_tunnel_encapsulations_supported != 0) { + if (encp->enc_tunnel_encapsulations_supported != 0 && + !want_inner_classes) { /* * WANT_OUTER_CLASSES can only be specified on hardware which * supports tunnel encapsulation offloads, even though it is @@ -959,6 +961,7 @@ ef10_rx_qcreate( efx_nic_cfg_t *encp = &(enp->en_nic_cfg); efx_rc_t rc; boolean_t disable_scatter; + boolean_t want_inner_classes; unsigned int ps_buf_size; _NOTE(ARGUNUSED(id, erp)) @@ -1037,8 +1040,14 @@ ef10_rx_qcreate( else disable_scatter = encp->enc_rx_disable_scatter_supported; + if (flags & EFX_RXQ_FLAG_INNER_CLASSES) + want_inner_classes = B_TRUE; + else + want_inner_classes = B_FALSE; + if ((rc = efx_mcdi_init_rxq(enp, ndescs, eep->ee_index, label, index, - esmp, disable_scatter, ps_buf_size)) != 0) + esmp, disable_scatter, want_inner_classes, + ps_buf_size)) != 0) goto fail7; erp->er_eep = eep; diff --git a/drivers/net/sfc/base/efx.h b/drivers/net/sfc/base/efx.h index d4e0bc5..ec65dcf 100644 --- a/drivers/net/sfc/base/efx.h +++ b/drivers/net/sfc/base/efx.h @@ -2012,6 +2012,15 @@ typedef enum efx_rxq_type_e { */ #define EFX_RXQ_FLAG_NONE 0x0 #define EFX_RXQ_FLAG_SCATTER 0x1 +/* + * If tunnels are supported and Rx event can provide information about + * either outer or inner packet classes (e.g. SFN8xxx adapters with + * full-feature firmware variant running), outer classes are requested by + * default. However, if the driver supports tunnels, the flag allows to + * request inner classes which are required to be able to interpret inner + * Rx checksum offload results. + */ +#define EFX_RXQ_FLAG_INNER_CLASSES 0x2 extern __checkReturn efx_rc_t efx_rx_qcreate( -- 2.7.4