From patchwork Mon Nov 28 06:53:58 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 120188 X-Patchwork-Delegate: ferruh.yigit@amd.com 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 301E4A0093; Mon, 28 Nov 2022 07:55:14 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 341C342D38; Mon, 28 Nov 2022 07:54:37 +0100 (CET) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2097.outbound.protection.outlook.com [40.107.244.97]) by mails.dpdk.org (Postfix) with ESMTP id E11A942D38 for ; Mon, 28 Nov 2022 07:54:35 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=H1XRwg5zv/mmOT0q+9S334p1ANu5ur+epmigUCukgjG7pkrZIKWznvwLM3Zm/C7rntnFLXPxgzguWyCDqxnxkupcBUUiHqT0l83q4rNbki4I8gSEwYL2p3U+sikXwKslwgG2VQrLpx0XXpST864o5vU4aw1vKmyEy3U7tYEwMb3noi68kqtI86sxhEZWdm3llcF02mT28/qTPtBDYlLyRYWKCf8TFMMr1f3ejqP9FyJHEmjLXpHAv8zL4ewt2XmuaXIlxAg9cLFBfIVqgfPZh/vgCql5IVOmD52/5SJX783ytLO06NmV2wHJPP5KokO09WM9hE6ysn23xTQ3blmTrg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=2f5i2XfbRSBdadBdXfsuDrOEyI0wLyhO8Ph/nJHadfM=; b=eMqywu4HnqV9bxyTlGsZGU1HTRp/1bM3pGJILDFNZQCEgLnx9SzMp4LcjTQ+JJhUgWuz3komDlmp4GVO+N8axlCyKUd0mp1dFmr5qrBDGZxxKnzkG7ZYZ1uHQPdXr/OtxTQkUi94S6MFKFNJaBGg9n7ykMSffTs8BxMqxkMv3YVmeDBc+RJglw+hwlQIdwFa4f0LZGC1dxEe/c41Tbs7QaDZOLsvLVeqzrjtU7wLbIOZv/hZf8c2eYf/FmtnnI7rCRy/Ko84BQUyyt+zFFDWf1Zg1bX881idhdXfd50cyfORhUiceUZ2/PmMbRJMW7J8qV+o/WdkQ4J786B3wR+Qgw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2f5i2XfbRSBdadBdXfsuDrOEyI0wLyhO8Ph/nJHadfM=; b=hv8GCcqkOmMAtC09RL6R4ZoFU4dXpl3fv77lDwOSQTbHu/G6JTPOzclnNHRcmT8u4HZBHY9GiW3dFnXbtlrIsR8WzwciTciV167MMgBIRAS7AJ85iPlI0d9StaobGlKPc9dyM+BBMtVl/cZxTDV4wGDlDn7+mK1D+M6WPfnXZfw= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) by CO1PR13MB4952.namprd13.prod.outlook.com (2603:10b6:303:d9::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5857.23; Mon, 28 Nov 2022 06:54:34 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::5122:8c31:51f3:4ee7]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::5122:8c31:51f3:4ee7%4]) with mapi id 15.20.5857.021; Mon, 28 Nov 2022 06:54:34 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, niklas.soderlund@corigine.com, Peng Zhang , Chaoyong He Subject: [PATCH 7/8] net/nfp: add support for VLAN insert V2 with NFD3 Date: Mon, 28 Nov 2022 14:53:58 +0800 Message-Id: <20221128065359.12737-8-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.29.3 In-Reply-To: <20221128065359.12737-1-chaoyong.he@corigine.com> References: <20221128065359.12737-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SG3P274CA0019.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::31) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|CO1PR13MB4952:EE_ X-MS-Office365-Filtering-Correlation-Id: e60363ca-5ce6-43a1-a7ae-08dad10d6861 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: YFbEkEdoBVyYGeNkcL8Pc8aob3Gphb/PER2JCGrW7VWT+9r3R1KekdYA+yrCnBsAjfEVsZXCzZMbmMXBiog0m5xRvEkeZymvHhZKl8hLeSwQJZ86pnxha2glt1sQrxBTuEawWjUBEscX5h++Yn0ufFxRT//8lEnuq2ZhQonpuTLnxILutz7+8xDI09Z7TdMPZBxjmYIRR6zyQzUUUkufmm6WUsJbTAt9bNg9RftFcEoU00EvPKLxbz3TNwc0Nmcs6jz8O3NHc7uhYW67iuSCNQVRMSwDRIkc6/5g4gMhHu8OtH54Q0L86Z+QRTsoS2AnjxSx/bvtgGTUOZ9sJVV1Bv6K4Mrc2TFFR4hIJiTE39ixo2/FFQ+kB2LwyFZ9eYWxcg645SkADn1iLbU6Rf/nywBf4WgyUxRaYD6JkWMDxdRtaAYerQ35kNQLYe01UjDr7qdVowxDgyHMCj6+4aezEztDQWgbZQRK31b7XOwA4Klha1gR826A6rG+5Rx4k56dr1SP8fPRkED7D2tMmtOmVmRpgk7bsLTdqAeLM0IyU+1fywLRjgXKgxmJ74LwX7hoHKuPE6EAlFwPOspm0/RNvoAJyVqBEA4mAf5Z1kTJ/qQ9jRDteslg2ZL8JxzH/vu7GY5zUQ9pkUeKED/0uuMdLBQha/Ur2pzrbGanP0B+w5fhRv3MJRaeGVOV+rEW6iWHWNDOUWRjQ1DX4h4jefddioqQ5K7PVj0ilNYQ+cveLUdBP8AF7ltaJ2ssxFqCUKXa X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(4636009)(39830400003)(366004)(346002)(396003)(136003)(376002)(451199015)(38350700002)(6486002)(38100700002)(66556008)(66476007)(66946007)(4326008)(41300700001)(107886003)(6666004)(478600001)(36756003)(8676002)(2906002)(54906003)(316002)(6916009)(8936002)(5660300002)(86362001)(44832011)(2616005)(83380400001)(1076003)(186003)(26005)(6512007)(52116002)(6506007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?c8lZ2S8m4tr3R0QBIi4dZbdeWGvn?= =?utf-8?q?wkoDkZuinxTdAjXPHQ4CteYXhJaC77yioyXCS6/nkpEoaIoWtKBPM3/+3VV2Lp78r?= =?utf-8?q?3f3kYqoBHAWCdO0gzgeiq8BQkyyZg1gHPmgb2OytuNNLc/K9df0/REItXFQVprIca?= =?utf-8?q?w5i4KHF0d+MMXO1uratIDN7dnFSn8ksMBzysDVPVb9smDcATt0gc6Er3agZd0e9AQ?= =?utf-8?q?u7cmEIJ1ykIpeoUv7C0fsE8enLQvgq+PgMk38yQ/dA07YJ2Q2dVFyT1/SLFcSZFO4?= =?utf-8?q?lA81N7pSu3R2dt9OyJuSS0bPka6Ct0uS19bVaymjNnmnFVwviJM0kcvCB7Ze8P0tV?= =?utf-8?q?f6VR8pUAkbrf117ASaH0yn/Xszrvb9P/rQ165v4bplTk20Nlo/OmMj4icEcU83rLL?= =?utf-8?q?7pw9DuJsSXNljjztzZVHxg9fUejxDWFbktELaAW6JHIgw1bZG/hK28UI6sOM5Pza9?= =?utf-8?q?A2MoVszPXgXokoOGd6heS+7EM2TlctXL3BfDOwKZouHP1Us8Jy/v6biQHaLsCas6X?= =?utf-8?q?s7VKfCp6mwKp4JjaDgZDLq97ZJScGQWn6MXCfph9LlnPYlmU8ZIJEGTBXv94DrRqN?= =?utf-8?q?Bw8H77sAx6C31f3ZlUyBX6SuE+Qgkra4EGIfVszzw7eKBnKr3JzwFSEa81cZLPFez?= =?utf-8?q?o9Cq2DTohwbP4iiHFuBMQiR5R9+vFqKrcBdRBhJ2jBj3soGT/vdwL9u8fuWTLCZcj?= =?utf-8?q?eaGR4mCZecDMgGQLWqRtsspRBjD+MVdFDXnJuwtbleKOn/alJUo1JAPIQEjJdvH9t?= =?utf-8?q?r2QKSAMxEBef5NQUnwb/gNBTmktY/MngAhgY0VF7pVBO5KMh7rhoB/KwvojAuHc5d?= =?utf-8?q?FEURfRSe37gbGND9DZe78d7aA1W1bNM5NqFDwAwhU3nRbVYoWvP1KkI/ReLABm8mG?= =?utf-8?q?XYBAPyFsUy7cVmz0mSllZZtc0q2r8AB/62o7MB6knaabd4HvCSsSVuSNYaBfg5qZa?= =?utf-8?q?OGiGUejRS9TmXgHzWwfz8uMizjlVImJZyN4pFBZc2+sxzDBg4Pkb+jyB4DPq3ZRhB?= =?utf-8?q?SmF8agTQ6V3OmeYzm3KQMtSqJNiWu9RGUxVbmqwEnD0NrPV8ldk3LQB4gvmi+lXSx?= =?utf-8?q?n5tnFnmtJv0JPrp2ccrLcFCUesrOxh37qw6E5eP8Vg1CCOYRLoB418aXTyWp/aZG0?= =?utf-8?q?MkT7MRz6gvG0CJgua7iFJjFa7p3I1jc0VAd0RFtehMFt8Moj1jSil62jcagAJW92a?= =?utf-8?q?SnTlJtX+Gj2rxy/tNafEiUfCBo3YTPd8ZhBrynLfuWKcOQgURE4VmEUh5GuG09fjR?= =?utf-8?q?PFtVJaYXFpg/VPTfD8NJgA1ZjuUx2K7bsimVbEm5vO8xMRcRoajGYEKnSK61MWIdQ?= =?utf-8?q?g6lBS2LHYUFYYboTN3ctOV26H+UELdwHfCUgZam5KuVCNP01y42I7sLgKpvlB+7NT?= =?utf-8?q?B8xnFjIItO/yz/aVJ9djP9VPjcvp/rKykQHSJ4ZAyLqFPMiMuLBqxxOkOMzRmiXtJ?= =?utf-8?q?9CQ8c9/G7tXQrhdSbPyQ++wtqU+VPIdEXsdPpY/J4pGOYgg7ngZCpDMrBdzbPthc8?= =?utf-8?q?cj7FBwxkv5izmxbbZCKU1O7L6CapHIzhkQ=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: e60363ca-5ce6-43a1-a7ae-08dad10d6861 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Nov 2022 06:54:34.5169 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fe128f2c-073b-4c20-818e-7246a585940c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: rkb+CNSKxjsVxqBfQhctnMRJD+yEYIGFRKcoCt579w32iq6HHjLfXJJ0oAfK/Ck3iMt+3CLbvQnfmU3YxcNnJbvRvCsfGMluJ+oL7KIUWIE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR13MB4952 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 From: Peng Zhang The firmware support VLAN insert with the descriptor or the metadata. So adding a NFP_NET_CFG_CTRL_RXVLAN_V2 bit to distinguish them. When VLAN insert is set, sending the vlan information with the descriptor. When VLAN insert V2 is set, sending it with the metadata. Now NFP_NET_CFG_CTRL_L2SWITCH_LOCAL isn't used, so 0x1 << 23 is used by NFP_NET_CFG_CTRL_RXVLAN_V2. Signed-off-by: Peng Zhang Reviewed-by: Chaoyong He Reviewed-by: Niklas Söderlund --- drivers/net/nfp/nfp_common.c | 9 ++++++--- drivers/net/nfp/nfp_ctrl.h | 2 +- drivers/net/nfp/nfp_rxtx.c | 30 +++++++++++++++++++++++++++++- 3 files changed, 36 insertions(+), 5 deletions(-) diff --git a/drivers/net/nfp/nfp_common.c b/drivers/net/nfp/nfp_common.c index 9c740ee9b5..853eb4a3f7 100644 --- a/drivers/net/nfp/nfp_common.c +++ b/drivers/net/nfp/nfp_common.c @@ -195,7 +195,7 @@ nfp_net_log_device_information(const struct nfp_net_hw *hw) NFD_CFG_MAJOR_VERSION_of(hw->ver), NFD_CFG_MINOR_VERSION_of(hw->ver), hw->max_mtu); - PMD_INIT_LOG(INFO, "CAP: %#x, %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", hw->cap, + PMD_INIT_LOG(INFO, "CAP: %#x, %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", hw->cap, hw->cap & NFP_NET_CFG_CTRL_PROMISC ? "PROMISC " : "", hw->cap & NFP_NET_CFG_CTRL_L2BC ? "L2BCFILT " : "", hw->cap & NFP_NET_CFG_CTRL_L2MC ? "L2MCFILT " : "", @@ -204,6 +204,7 @@ nfp_net_log_device_information(const struct nfp_net_hw *hw) hw->cap & NFP_NET_CFG_CTRL_RXVLAN ? "RXVLAN " : "", hw->cap & NFP_NET_CFG_CTRL_TXVLAN ? "TXVLAN " : "", hw->cap & NFP_NET_CFG_CTRL_RXVLAN_V2 ? "RXVLANv2 " : "", + hw->cap & NFP_NET_CFG_CTRL_TXVLAN_V2 ? "TXVLANv2 " : "", hw->cap & NFP_NET_CFG_CTRL_RXQINQ ? "RXQINQ " : "", hw->cap & NFP_NET_CFG_CTRL_SCATTER ? "SCATTER " : "", hw->cap & NFP_NET_CFG_CTRL_GATHER ? "GATHER " : "", @@ -418,7 +419,9 @@ nfp_check_offloads(struct rte_eth_dev *dev) hw->mtu = dev->data->mtu; if (txmode->offloads & RTE_ETH_TX_OFFLOAD_VLAN_INSERT) { - if (hw->cap & NFP_NET_CFG_CTRL_TXVLAN) + if (hw->cap & NFP_NET_CFG_CTRL_TXVLAN_V2) + ctrl |= NFP_NET_CFG_CTRL_TXVLAN_V2; + else if (hw->cap & NFP_NET_CFG_CTRL_TXVLAN) ctrl |= NFP_NET_CFG_CTRL_TXVLAN; } @@ -775,7 +778,7 @@ nfp_net_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) RTE_ETH_RX_OFFLOAD_UDP_CKSUM | RTE_ETH_RX_OFFLOAD_TCP_CKSUM; - if (hw->cap & NFP_NET_CFG_CTRL_TXVLAN) + if (hw->cap & (NFP_NET_CFG_CTRL_TXVLAN | NFP_NET_CFG_CTRL_TXVLAN_V2)) dev_info->tx_offload_capa = RTE_ETH_TX_OFFLOAD_VLAN_INSERT; if (hw->cap & NFP_NET_CFG_CTRL_TXCSUM) diff --git a/drivers/net/nfp/nfp_ctrl.h b/drivers/net/nfp/nfp_ctrl.h index bffdd8345e..6e2601d174 100644 --- a/drivers/net/nfp/nfp_ctrl.h +++ b/drivers/net/nfp/nfp_ctrl.h @@ -103,7 +103,7 @@ #define NFP_NET_CFG_CTRL_MSIXAUTO (0x1 << 20) /* MSI-X auto-masking */ #define NFP_NET_CFG_CTRL_TXRWB (0x1 << 21) /* Write-back of TX ring*/ #define NFP_NET_CFG_CTRL_L2SWITCH (0x1 << 22) /* L2 Switch */ -#define NFP_NET_CFG_CTRL_L2SWITCH_LOCAL (0x1 << 23) /* Switch to local */ +#define NFP_NET_CFG_CTRL_TXVLAN_V2 (0x1 << 23) /* Enable VLAN insert with metadata */ #define NFP_NET_CFG_CTRL_VXLAN (0x1 << 24) /* Enable VXLAN */ #define NFP_NET_CFG_CTRL_NVGRE (0x1 << 25) /* Enable NVGRE */ #define NFP_NET_CFG_CTRL_MSIX_TX_OFF (0x1 << 26) /* Disable MSIX for TX */ diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c index 200886111e..293769f240 100644 --- a/drivers/net/nfp/nfp_rxtx.c +++ b/drivers/net/nfp/nfp_rxtx.c @@ -833,6 +833,33 @@ nfp_net_nfd3_tx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx, return 0; } +/* + * nfp_net_nfd3_tx_vlan() - Set vlan info in the nfd3 tx desc + * + * If enable NFP_NET_CFG_CTRL_TXVLAN_V2 + * Vlan_info is stored in the meta and + * is handled in the nfp_net_nfd3_set_meta_vlan + * else if enable NFP_NET_CFG_CTRL_TXVLAN + * Vlan_info is stored in the tx_desc and + * is handled in the nfp_net_nfd3_tx_vlan + */ +static void +nfp_net_nfd3_tx_vlan(struct nfp_net_txq *txq, + struct nfp_net_nfd3_tx_desc *txd, + struct rte_mbuf *mb) +{ + struct nfp_net_hw *hw = txq->hw; + + if ((hw->cap & NFP_NET_CFG_CTRL_TXVLAN_V2) != 0 || + (hw->cap & NFP_NET_CFG_CTRL_TXVLAN) == 0) + return; + + if ((mb->ol_flags & RTE_MBUF_F_TX_VLAN) != 0) { + txd->flags |= PCIE_DESC_TX_VLAN; + txd->vlan = mb->vlan_tci; + } +} + static void nfp_net_set_meta_vlan(struct nfp_net_meta_raw *meta_data, struct rte_mbuf *pkt, @@ -861,7 +888,7 @@ nfp_net_nfd3_set_meta_data(struct nfp_net_meta_raw *meta_data, hw = txq->hw; if ((pkt->ol_flags & RTE_MBUF_F_TX_VLAN) != 0 && - (hw->ctrl & NFP_NET_CFG_CTRL_TXVLAN) != 0) { + (hw->ctrl & NFP_NET_CFG_CTRL_TXVLAN_V2) != 0) { if (meta_data->length == 0) meta_data->length = NFP_NET_META_HEADER_SIZE; meta_data->length += NFP_NET_META_FIELD_SIZE; @@ -960,6 +987,7 @@ nfp_net_nfd3_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pk txd.data_len = pkt->pkt_len; nfp_net_nfd3_tx_tso(txq, &txd, pkt); nfp_net_nfd3_tx_cksum(txq, &txd, pkt); + nfp_net_nfd3_tx_vlan(txq, &txd, pkt); /* * mbuf data_len is the data in one segment and pkt_len data