From patchwork Fri Oct 7 02:18:37 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 117520 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 6AE17A0093; Fri, 7 Oct 2022 04:21:02 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 463F042BB4; Fri, 7 Oct 2022 04:19:43 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2109.outbound.protection.outlook.com [40.107.220.109]) by mails.dpdk.org (Postfix) with ESMTP id 2917A42B9F for ; Fri, 7 Oct 2022 04:19:41 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=e+W8aNhQAPQAFTfguzl4ESqjo+9Hmu1And7880iYBRLenNIpOvzMAT3S/ve+B0lH58ltuM//wuLwbFIqBuznHOIyA4UBMT8JilkJ0d8KU82KVadTgGqV0ew+qc55l5bnKd0K8GiMY55aePkRpSQ4vSfSkCFRW0ETnBstkTNOzE00lKQPcrLsNDysOuwMf5DYtNOqOUb3IpPMOUzbcEuoSN6xANipWL92LNUmAs5PVhDP+sDrGFFsMlwfYhHNAS1Dp/vOa2x4P8mhg9fqwrsmKSMZhwYLOl+pDELrRzB62s1i+lQX3MIRBZAeG2utrBdQ4Zd2VBR8AwXHleL2cgDlPw== 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=kgSMKVb/OSWiRjeljUmOahYKefeSXKJjaJtfkQyUL7E=; b=CQXCSRO0Q0uxJX+UzcKKWc19WapVfe7LRsBoY4ZPeMbEiwqTp+bUFf5vZlWue1G1SUOVRL35oTM9fko3W2hd5gRoUnwntHUhBo2nF0uBPZWwfDk0EKLg+rodWxwV9+1pd6y+eBAYC2zmZO6oD9xFJWlkdSVbEv74HSGfyjHdiVUr8t2ej+9Q/pgz8JLDy++nqzJxw1wjEkWlXRRHOxwzlr6bfWANHaMIoFy7IlZ0+tBNPP9SWsIT+evQ7f0dLK9IA3/5uUY8phA9l7ApA8CH4hamR41P88h6PKb6YQ6+AKwTKpLoG/TRzrnThQr6gfMgS3nRnBATRvzEsZzrkI4ubw== 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=kgSMKVb/OSWiRjeljUmOahYKefeSXKJjaJtfkQyUL7E=; b=qZL/x1Wz3i+AXpb6+Piunx/OwkSle/NQNwp2uGp1aK5y8KLcXfEJWqFOjwKOvvbZDGRf442uk0Ie2iXs00STdy7oPywfLGzjIN4Cpbt7Qdi7rykFBAerLW74yLTc6fmGrz1gXU5ip4FIHyyQjezPwwzX1pg6BxMZEP6Bw2JL7BM= 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 SA1PR13MB5465.namprd13.prod.outlook.com (2603:10b6:806:230::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.10; Fri, 7 Oct 2022 02:19:39 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::a192:2720:1ef8:2773]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::a192:2720:1ef8:2773%4]) with mapi id 15.20.5723.010; Fri, 7 Oct 2022 02:19:39 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, niklas.soderlund@corigine.com, Chaoyong He Subject: [PATCH 15/24] net/nfp: add the offload support of push VLAN action Date: Fri, 7 Oct 2022 10:18:37 +0800 Message-Id: <1665109126-16201-16-git-send-email-chaoyong.he@corigine.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1665109126-16201-1-git-send-email-chaoyong.he@corigine.com> References: <1665109126-16201-1-git-send-email-chaoyong.he@corigine.com> X-ClientProxiedBy: SG2P153CA0043.APCP153.PROD.OUTLOOK.COM (2603:1096:4:c6::12) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SA1PR13MB5465:EE_ X-MS-Office365-Filtering-Correlation-Id: 1f4e9f73-d0f6-4ce8-28ca-08daa80a6329 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: lyWRMtliZ841C3zXrxk/Xu1NZyv1696SMrpTRFgqq0ewnK2s7Oqv275AF1o0SqytkDWmWWIcc3+Gsx4uQEPVPctAbswAe6KxYCxiOz+gbvrKcx6vf2dbm44pQ4jJKlzwij460Pl7D61cPtC1IZSz38mJ6dAcmAFQaiPBGWFSeUL2oNx0aS6EUMCvsncMObjj+1zerdEd5OS52u053xfcK4Okg6ixAlFd6/nq68chXGhb2XrA2XcV56JO/L49SKl3ciohAEzo1fkffvlcgPAM6WaqMGwG6eCZMYQXOAi+ahUtTPDcSsOt14fvfrsbilToh3KaziJunD68yLNInm/5TW4GettB8z2CqCIPQvNHEnj9zxxerQzKZMtSsQYUytNPXH4kXqvOOL+XExgGjBZlOvaNvbQwlYK3sixIKEwZjN8Qytw678dCHB6ZzxVzJ7fsuOqgd/rtXBBNngYJk/D/ZPWhB3qDLC4V0RAfhXQBPty6QyJszQs2Z9tuJuoGlvsIiSV4dmNVKdzUt4AiXbvXXbGwHznv4LHDrH1oWmaHSIwiQxckaVlXSlSqhqJsvzg8cDrohXFUWm9Q6iImZCUhmOIao2XyCU1UCH86YaLYBjUgO3mDG18y9/yONn0zSH2O7zdQ0eXcSLefmicbwYIiSYt2RJbTWa2hRgihQ/kkbY5tMp5fyTo5G2JFHc1D4uyElKmQSerLDKY8XuNs21qzfe3Ee63wQusaQE2q8pwp3KLlz8jFT22CTLF1waMq3NfE 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)(136003)(346002)(376002)(396003)(451199015)(36756003)(86362001)(66946007)(44832011)(38350700002)(38100700002)(8936002)(6486002)(6916009)(83380400001)(52116002)(478600001)(41300700001)(6512007)(4326008)(107886003)(26005)(2616005)(6506007)(316002)(5660300002)(66476007)(66556008)(2906002)(186003)(8676002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?Sh2yroQl26XJuKqEOpBe5b1KG+1N?= =?utf-8?q?9fas5RHAMgf8sxRIl9fABC9lUT8mqES4ofMWyhR2wWiD4I+N4a8CJD2n26hBdWFiR?= =?utf-8?q?dobl5yA4QhV6P8oKvuVAQRGSF31t03dBwPPUuOgIOoGPM+DV9z37oxvWjIxC1VyFI?= =?utf-8?q?MhZzuMtCsuIz8Q3TXgyhEhytXePr+Az0NzsWE8uinXf+PnWNk9m/gnH4Vgp7SMXa7?= =?utf-8?q?WmBrCJBEUbHNg8PSA0r4HfPTVIwb7tvX1JLcSRTrG4H/4A9TC+DXgRrAbZNcVtl1w?= =?utf-8?q?iarJGHFsoT78AVQBxMYD7P94oVgpAXXE5NEdYZ5xwzjMIs5D5GOluRe2onlgAE36E?= =?utf-8?q?kJSZ9KaROEclLeqsYGr3PM2n8syle0AASEg9EmW4Rlso4QbB96vEvCXB3q+j8YFEJ?= =?utf-8?q?L/xF5jyWmJiA3oZ1sJjnTVb1jZEiaLJrOqwa8gm+Rg2re4u97wCAad7FPlKbrSc3G?= =?utf-8?q?6kd9YDL6wqDV1o3R8BfW/c2UyyNIk241NSFyDH+7mf/6P6PGAMN9du0oYkhBw47Kf?= =?utf-8?q?NMAKBvcq8+Jc6HbBX4mA07bbDuvZaMTw6wsRoNm3ZKWKtvkUva0XQee1RJ46QvwIE?= =?utf-8?q?bjizoV0DuRnWJakzaK8aBUSJk3o/qkJ059Xzi22hqAaSVitP6XUE4ZR1EYxseL+K+?= =?utf-8?q?ke+O+P6ZLtlAU8ZPNqHjr8xjm1dA9k+mGXhIhb/IQUNeBEtdtegCCCJdexPukZ1oM?= =?utf-8?q?NBeCVXp1jXd/BwZJ1jam0So343IjVggie7ztj4Jay+K8LTe3d8NYPQ/5awlYB3Ztt?= =?utf-8?q?nACLTOab0ed1Fd/I7VttShiqW1jMPucPc2SnuP7sxQdBsjDQHCb2fiZKXVEHOB8fj?= =?utf-8?q?89Z5IwQ3Rws+M/G5XuLSdWdZC8dSeGKXlqC6g5CotaJNSjuHZeg8DdadzO5EXyLGh?= =?utf-8?q?iJi8zk1Eo8q25Cao4XvmwJmfLVNqaOIyoGZ+rYaFvN3e33Y3dxTFXWFKDLd4CnpkT?= =?utf-8?q?FN6SVKWFRRquc8HkCdNQcmWSym6VhtpfgnydEN8NMMKYRYoxRoq7m0VkiXtnCHDYX?= =?utf-8?q?Tcn+PEz+i5cN0PDwF39Z0zwhwBqsMfaSpCdiX9OKCDnRs7W6TUKxX+OwrTfWvSQmq?= =?utf-8?q?eIIp44dkUpXRQs1kdud40KJcpbdpF9PsPkSuofwDx+4552OCXNScs+sD/jfRVptkV?= =?utf-8?q?k/SmezFOqYHSvjvcdB351lb5gCARSLUuWISZjpqOVom60zFb+0Xoku9Im9vQvQFlB?= =?utf-8?q?YP03qEg3mXr8e1xzw0CixjVqWAhqeUMDQwmxUlwGJ71lWVc0+HEc46htW/CFxf/Ww?= =?utf-8?q?Jp+wwHA8CEcjrQ09JAQ+7w6D0/pwDiVUqmCShKN8OcVYue7zpKXWlOqvHo+Pz0/2I?= =?utf-8?q?NtrmDtCMQrEs7Z5ue4NZ+0vFfLfRVOK3Fl176uS6jaDpfVB9sIxw9p4iD4BLMyPJ+?= =?utf-8?q?OtA87pIecaj+vePAY5Yef7E40qAHWX5y49KFlC4mIkLAQFtVwwK4UfMwaqBDw/Tsc?= =?utf-8?q?6wk7ARRoO/0Xyx9C/XNtDXO+Z/YMZuSLdjVNrS1EihabZtaBIjpJvQd6y9XNppa6o?= =?utf-8?q?qraKnFmZWhIOfiLKRtZYeyhbXbslt/ueYg=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1f4e9f73-d0f6-4ce8-28ca-08daa80a6329 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 02:19:39.4846 (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: Q54TAUc04XT2wudZso30lGj904j/hMVrcWsB9VxQRF4Tkut0dfSdhese9tGTNH0Y0yPs2rD2nc1pmxqM1IIzCYG87CJuWtijl0tppdnVo7k= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR13MB5465 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 Add the corresponding data structure and logics, to support the offload of push_vlan action. Signed-off-by: Chaoyong He Reviewed-by: Niklas Söderlund --- doc/guides/nics/features/nfp.ini | 3 ++ doc/guides/rel_notes/release_22_11.rst | 1 + drivers/net/nfp/flower/nfp_flower_cmsg.h | 7 ++++ drivers/net/nfp/nfp_flow.c | 60 ++++++++++++++++++++++++++++++++ 4 files changed, 71 insertions(+) diff --git a/doc/guides/nics/features/nfp.ini b/doc/guides/nics/features/nfp.ini index 95d1779..514e0ba 100644 --- a/doc/guides/nics/features/nfp.ini +++ b/doc/guides/nics/features/nfp.ini @@ -42,6 +42,9 @@ count = Y dec_ttl = Y drop = Y of_pop_vlan = Y +of_push_vlan = Y +of_set_vlan_pcp = Y +of_set_vlan_vid = Y port_id = Y set_mac_dst = Y set_mac_src = Y diff --git a/doc/guides/rel_notes/release_22_11.rst b/doc/guides/rel_notes/release_22_11.rst index 94a6ccf..b636ebb 100644 --- a/doc/guides/rel_notes/release_22_11.rst +++ b/doc/guides/rel_notes/release_22_11.rst @@ -121,6 +121,7 @@ New Features * Drop * TTL decrement * Set the MAC address + * POP and PUSH VLAN * **Updated NXP dpaa2 driver.** diff --git a/drivers/net/nfp/flower/nfp_flower_cmsg.h b/drivers/net/nfp/flower/nfp_flower_cmsg.h index 4ce03da..30a9ff5 100644 --- a/drivers/net/nfp/flower/nfp_flower_cmsg.h +++ b/drivers/net/nfp/flower/nfp_flower_cmsg.h @@ -367,6 +367,13 @@ struct nfp_fl_act_pop_vlan { rte_be16_t reserved; }; +struct nfp_fl_act_push_vlan { + struct nfp_fl_act_head head; + rte_be16_t reserved; + rte_be16_t vlan_tpid; + rte_be16_t vlan_tci; +}; + int nfp_flower_cmsg_mac_repr(struct nfp_app_fw_flower *app_fw_flower); int nfp_flower_cmsg_repr_reify(struct nfp_app_fw_flower *app_fw_flower, struct nfp_flower_representor *repr); diff --git a/drivers/net/nfp/nfp_flow.c b/drivers/net/nfp/nfp_flow.c index fb06085..d66bcca 100644 --- a/drivers/net/nfp/nfp_flow.c +++ b/drivers/net/nfp/nfp_flow.c @@ -622,6 +622,16 @@ struct nfp_mask_id_entry { PMD_DRV_LOG(DEBUG, "RTE_FLOW_ACTION_TYPE_OF_POP_VLAN detected"); key_ls->act_size += sizeof(struct nfp_fl_act_pop_vlan); break; + case RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN: + PMD_DRV_LOG(DEBUG, "RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN detected"); + key_ls->act_size += sizeof(struct nfp_fl_act_push_vlan); + break; + case RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_VID: + PMD_DRV_LOG(DEBUG, "RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_VID detected"); + break; + case RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_PCP: + PMD_DRV_LOG(DEBUG, "RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_PCP detected"); + break; default: PMD_DRV_LOG(ERR, "Action type %d not supported.", action->type); return -ENOTSUP; @@ -1287,6 +1297,39 @@ struct nfp_mask_id_entry { } static int +nfp_flow_action_push_vlan(char *act_data, + const struct rte_flow_action *action) +{ + size_t act_size; + struct nfp_fl_act_push_vlan *push_vlan; + const struct rte_flow_action_of_push_vlan *push_vlan_conf; + const struct rte_flow_action_of_set_vlan_pcp *vlan_pcp_conf; + const struct rte_flow_action_of_set_vlan_vid *vlan_vid_conf; + + if (((action + 1)->type != RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_PCP) || + ((action + 2)->type != RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_VID)) + return -EINVAL; + + act_size = sizeof(struct nfp_fl_act_push_vlan); + push_vlan = (struct nfp_fl_act_push_vlan *)act_data; + push_vlan->head.jump_id = NFP_FL_ACTION_OPCODE_PUSH_VLAN; + push_vlan->head.len_lw = act_size >> NFP_FL_LW_SIZ; + push_vlan->reserved = 0; + + push_vlan_conf = (const struct rte_flow_action_of_push_vlan *) + action->conf; + vlan_pcp_conf = (const struct rte_flow_action_of_set_vlan_pcp *) + (action + 1)->conf; + vlan_vid_conf = (const struct rte_flow_action_of_set_vlan_vid *) + (action + 2)->conf; + push_vlan->vlan_tpid = push_vlan_conf->ethertype; + push_vlan->vlan_tci = ((vlan_pcp_conf->vlan_pcp & 0x07) << 13) | + (vlan_vid_conf->vlan_vid & 0x0fff); + + return 0; +} + +static int nfp_flow_compile_action(__rte_unused struct nfp_flower_representor *representor, const struct rte_flow_action actions[], struct rte_flow *nfp_flow) @@ -1353,6 +1396,23 @@ struct nfp_mask_id_entry { nfp_flow_action_pop_vlan(position, nfp_flow_meta); position += sizeof(struct nfp_fl_act_pop_vlan); break; + case RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN: + PMD_DRV_LOG(DEBUG, "Process RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN"); + ret = nfp_flow_action_push_vlan(position, action); + if (ret != 0) { + PMD_DRV_LOG(ERR, "Failed when process" + " RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN"); + return ret; + } + + /* + * RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_PCP and + * RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_VID + * have also been processed. + */ + action += 2; + position += sizeof(struct nfp_fl_act_push_vlan); + break; default: PMD_DRV_LOG(ERR, "Unsupported action type: %d", action->type); return -ENOTSUP;