From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 5AF9FA04DD; Tue, 20 Oct 2020 11:40:47 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id CCA54FCE3; Tue, 20 Oct 2020 11:16:10 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id C11C7C30F for ; Tue, 20 Oct 2020 11:14:21 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.62]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id BAA2D60090 for ; Tue, 20 Oct 2020 09:14:19 +0000 (UTC) Received: from us4-mdac16-8.ut7.mdlocal (unknown [10.7.65.76]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id B9E0F8009E for ; Tue, 20 Oct 2020 09:14:19 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.66.34]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 40825280053 for ; Tue, 20 Oct 2020 09:14:19 +0000 (UTC) Received: from webmail.solarflare.com (uk.solarflare.com [193.34.186.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id E94F760005C for ; Tue, 20 Oct 2020 09:14:18 +0000 (UTC) Received: from ukex01.SolarFlarecom.com (10.17.10.4) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 20 Oct 2020 10:14:02 +0100 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Tue, 20 Oct 2020 10:14:02 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (ukv-loginhost.uk.solarflarecom.com [10.17.10.39]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id 09K9E1m4028554; Tue, 20 Oct 2020 10:14:01 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id C7D411613A9; Tue, 20 Oct 2020 10:14:01 +0100 (BST) From: Andrew Rybchenko To: CC: Ivan Malov Date: Tue, 20 Oct 2020 10:13:35 +0100 Message-ID: <1603185222-14831-56-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1603185222-14831-1-git-send-email-arybchenko@solarflare.com> References: <1603183709-23420-1-git-send-email-arybchenko@solarflare.com> <1603185222-14831-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 Content-Type: text/plain X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25736.003 X-TM-AS-Result: No-4.153800-8.000000-10 X-TMASE-MatchedRID: 4jdN4RfSnnzxpWQFmQ4/MhYZoKAPfQ6CHS44sLaHAPLyN+XEEoySvlt/ rcvvwuMBuKjr7On4ANqCfAAkLV8ZpH/BjdQS1Tt2BytCIW2H3sdKRaXN2yYjHnCR0itW3xfVUNM prKLZkXoqjtfrxHD0XnDlPghqPnfyYlldA0POS1LHmyDJSEsI28wx7VbZgGmKR2YNIFh+clFcmx XymrkPkPN+XKhORaFFgDLqnrRlXrZ8nn9tnqel2MZW5ai5WKlyZrcHqz4ma7qkiv9e1njxcJW5+ voW4STCkNG0hyFkD4Y6Zd7tBWMUnjo44vflLzuVpTHdnTkqPPIGOl0WvKNVtdrEgHosDUI48Oyc cFNBL2TKhETi2//sjuP9Cb59K8ACZrS+A8PszW/U9h9N881NSQ== X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--4.153800-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25736.003 X-MDID: 1603185259-Swn3ksn-YBC4 X-PPE-DISP: 1603185259;Swn3ksn-YBC4 Subject: [dpdk-dev] [PATCH v2 55/62] common/sfc_efx/base: indicate MAE support for encapsulation 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" From: Ivan Malov MAE provides support for encapsulation. One needs to insert a so-called outer rule, which can match outer packet fields, to require that matching packets be parsed as tunnel frames of a given type (VXLAN, Geneve, NVGRE). Then it is possible to chain this rule with an action rule in order to match on inner fields and carry out some actions on matching packets. Report to clients what encapsulation types are supported by MAE. Indicate the number of priority levels for outer rules. Signed-off-by: Ivan Malov Signed-off-by: Andrew Rybchenko Reviewed-by: Andy Moreton --- drivers/common/sfc_efx/base/efx.h | 2 ++ drivers/common/sfc_efx/base/efx_impl.h | 2 ++ drivers/common/sfc_efx/base/efx_mae.c | 22 ++++++++++++++++++++++ 3 files changed, 26 insertions(+) diff --git a/drivers/common/sfc_efx/base/efx.h b/drivers/common/sfc_efx/base/efx.h index b84a43336a..dea1fe3979 100644 --- a/drivers/common/sfc_efx/base/efx.h +++ b/drivers/common/sfc_efx/base/efx.h @@ -4068,6 +4068,8 @@ efx_mae_fini( typedef struct efx_mae_limits_s { uint32_t eml_max_n_action_prios; + uint32_t eml_max_n_outer_prios; + uint32_t eml_encap_types_supported; } efx_mae_limits_t; LIBEFX_API diff --git a/drivers/common/sfc_efx/base/efx_impl.h b/drivers/common/sfc_efx/base/efx_impl.h index db68cc7b24..900a8c9c6a 100644 --- a/drivers/common/sfc_efx/base/efx_impl.h +++ b/drivers/common/sfc_efx/base/efx_impl.h @@ -798,6 +798,8 @@ typedef struct efx_mae_s { /** Action rule match field capabilities. */ efx_mae_field_cap_t *em_action_rule_field_caps; size_t em_action_rule_field_caps_size; + uint32_t em_max_n_outer_prios; + uint32_t em_encap_types_supported; } efx_mae_t; #endif /* EFSYS_OPT_MAE */ diff --git a/drivers/common/sfc_efx/base/efx_mae.c b/drivers/common/sfc_efx/base/efx_mae.c index 7958504963..4e51c7b69b 100644 --- a/drivers/common/sfc_efx/base/efx_mae.c +++ b/drivers/common/sfc_efx/base/efx_mae.c @@ -39,9 +39,29 @@ efx_mae_get_capabilities( goto fail2; } + maep->em_max_n_outer_prios = + MCDI_OUT_DWORD(req, MAE_GET_CAPS_OUT_OUTER_PRIOS); + maep->em_max_n_action_prios = MCDI_OUT_DWORD(req, MAE_GET_CAPS_OUT_ACTION_PRIOS); + maep->em_encap_types_supported = 0; + + if (MCDI_OUT_DWORD(req, MAE_GET_CAPS_OUT_ENCAP_TYPE_VXLAN) == 1) { + maep->em_encap_types_supported |= + (1U << EFX_TUNNEL_PROTOCOL_VXLAN); + } + + if (MCDI_OUT_DWORD(req, MAE_GET_CAPS_OUT_ENCAP_TYPE_GENEVE) == 1) { + maep->em_encap_types_supported |= + (1U << EFX_TUNNEL_PROTOCOL_GENEVE); + } + + if (MCDI_OUT_DWORD(req, MAE_GET_CAPS_OUT_ENCAP_TYPE_NVGRE) == 1) { + maep->em_encap_types_supported |= + (1U << EFX_TUNNEL_PROTOCOL_NVGRE); + } + maep->em_max_nfields = MCDI_OUT_DWORD(req, MAE_GET_CAPS_OUT_MATCH_FIELD_COUNT); @@ -225,7 +245,9 @@ efx_mae_get_limits( goto fail1; } + emlp->eml_max_n_outer_prios = maep->em_max_n_outer_prios; emlp->eml_max_n_action_prios = maep->em_max_n_action_prios; + emlp->eml_encap_types_supported = maep->em_encap_types_supported; return (0); -- 2.17.1