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 D861CA04DD; Tue, 20 Oct 2020 10:51:55 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 0D31FBBF0; Tue, 20 Oct 2020 10:49:17 +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 9F357AD31 for ; Tue, 20 Oct 2020 10:48:59 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.60]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 3231E6007D for ; Tue, 20 Oct 2020 08:48:58 +0000 (UTC) Received: from us4-mdac16-14.ut7.mdlocal (unknown [10.7.65.238]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 317DE2009A for ; Tue, 20 Oct 2020 08:48:58 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.66.33]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id B22241C0052 for ; Tue, 20 Oct 2020 08:48:57 +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 69166A80061 for ; Tue, 20 Oct 2020 08:48:57 +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 09:48:50 +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 09:48:50 +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 09K8mnHv030800; Tue, 20 Oct 2020 09:48:49 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id CDDAB161A22; Tue, 20 Oct 2020 09:48:48 +0100 (BST) From: Andrew Rybchenko To: CC: , Ivan Malov Date: Tue, 20 Oct 2020 09:47:48 +0100 Message-ID: <1603183709-23420-22-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1603183709-23420-1-git-send-email-arybchenko@solarflare.com> References: <1603183709-23420-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-0.344200-8.000000-10 X-TMASE-MatchedRID: 5A8hgJTIs0fbiFIWuP4ar6iUivh0j2Pv6VTG9cZxEjIGmHr1eMxt2UAc 6DyoS2rIEcE+LOiKuIt27cZtoykdFo9y28rShcKqcvVMncWChZnLvfc3C6SWwvYENPLTaMhvj78 +1uscT5Knpp75HenHO1SCmfT2v3te3qZ3A4FG8d0Pe5gzF3TVtxisibaaFAhmmyiLZetSf8mfop 0ytGwvXiq2rl3dzGQ1LyUV9bAUSPxiq5o2dm5vq4dBBnrMGv35arek3NZtcgYM3B3UjkTO20iUx Z5MSMJsl8ibHv3/cAp1BkkntnUIO7cEV2SxXhYSsaGCK1PGkPg4oGQUCbwY5Q+g7mdwjo656FtD ZCmYBJ3KTLw/lNgw8g== X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--0.344200-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25736.003 X-MDID: 1603183738-vRRAulXtT1eu X-PPE-DISP: 1603183738;vRRAulXtT1eu Subject: [dpdk-dev] [PATCH 21/62] net/sfc: support flow action PHY PORT in MAE backend 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 The action handler will use MAE action DELIVER with MPORT of a given physical port. Signed-off-by: Ivan Malov Signed-off-by: Andrew Rybchenko Reviewed-by: Andy Moreton --- doc/guides/nics/sfc_efx.rst | 4 ++++ drivers/net/sfc/sfc_mae.c | 40 +++++++++++++++++++++++++++++++++---- 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/doc/guides/nics/sfc_efx.rst b/doc/guides/nics/sfc_efx.rst index 65d52d5551..e367ddd6e6 100644 --- a/doc/guides/nics/sfc_efx.rst +++ b/doc/guides/nics/sfc_efx.rst @@ -194,6 +194,10 @@ Supported pattern items (***transfer*** rules): - ETH +Supported actions (***transfer*** rules): + +- PHY_PORT + Validating flow rules depends on the firmware variant. The :ref:`flow_isolated_mode` is supported. diff --git a/drivers/net/sfc/sfc_mae.c b/drivers/net/sfc/sfc_mae.c index 95f8cffc27..057eef537b 100644 --- a/drivers/net/sfc/sfc_mae.c +++ b/drivers/net/sfc/sfc_mae.c @@ -391,18 +391,50 @@ sfc_mae_rule_parse_pattern(struct sfc_adapter *sa, } static int -sfc_mae_rule_parse_action(const struct rte_flow_action *action, - __rte_unused efx_mae_actions_t *spec, +sfc_mae_rule_parse_action_phy_port(struct sfc_adapter *sa, + const struct rte_flow_action_phy_port *conf, + efx_mae_actions_t *spec) +{ + efx_mport_sel_t mport; + uint32_t phy_port; + int rc; + + if (conf->original != 0) + phy_port = efx_nic_cfg_get(sa->nic)->enc_assigned_port; + else + phy_port = conf->index; + + rc = efx_mae_mport_by_phy_port(phy_port, &mport); + if (rc != 0) + return rc; + + return efx_mae_action_set_populate_deliver(spec, &mport); +} + +static int +sfc_mae_rule_parse_action(struct sfc_adapter *sa, + const struct rte_flow_action *action, + efx_mae_actions_t *spec, struct rte_flow_error *error) { + int rc; + switch (action->type) { + case RTE_FLOW_ACTION_TYPE_PHY_PORT: + rc = sfc_mae_rule_parse_action_phy_port(sa, action->conf, spec); + break; default: return rte_flow_error_set(error, ENOTSUP, RTE_FLOW_ERROR_TYPE_ACTION, NULL, "Unsupported action"); } - return 0; + if (rc != 0) { + rc = rte_flow_error_set(error, rc, RTE_FLOW_ERROR_TYPE_ACTION, + NULL, "Failed to request the action"); + } + + return rc; } int @@ -427,7 +459,7 @@ sfc_mae_rule_parse_actions(struct sfc_adapter *sa, for (action = actions; action->type != RTE_FLOW_ACTION_TYPE_END; ++action) { - rc = sfc_mae_rule_parse_action(action, spec, error); + rc = sfc_mae_rule_parse_action(sa, action, spec, error); if (rc != 0) goto fail_rule_parse_action; } -- 2.17.1