From patchwork Wed Jun 7 01:57:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 128238 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 B45CA42C45; Wed, 7 Jun 2023 03:58:17 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id F3B49410F6; Wed, 7 Jun 2023 03:57:59 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2138.outbound.protection.outlook.com [40.107.220.138]) by mails.dpdk.org (Postfix) with ESMTP id 93280406B6 for ; Wed, 7 Jun 2023 03:57:58 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Y2WyFqnW+Q0efrozzn9NUCGJOKqaNAl5viKwDExgdsClRtatHz+kxBdisLmybMLSDJEb84PuyEUWnbivgpkdcgZkYOauET4BSiJnqeObeQpAUnV8K80IthPiixolLnk4VJLf16mahvRP0cFtCPgFEfXhdbwm7MJJs3ByXq1WMTMr5wF7SSI4OYAtWLxmT6CqgGZYal5rkyqq2J1tmRAwdKqPeXeZUEptwza5W7skFfGMSaFI0qgjq442fstA80JeRIVamb1Apley3zpwmxal4IkI4+MbdIDf6SmRmiyAVBWNxyhMWvLDVy8drE7SaUhZIiNTBUxHBuAQOn4eRJZFeQ== 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=6LMOINbcu8xOomInaX26cUMN/wImon5Nbg5MDyhEVNI=; b=S54legLqNHJwtiWzNW+YoSEv5KPR+mKo8cDm5f5it+SAwTIGXHq7MX/u2JUbJqizinpxcDbTrH+hEIATn4JvFMbtIG6VUOBYn16j5isGY86Xk99a2dmbuULFN5+NC1N9QIE/E6/ggsUHn27OWEEbLF6LzCAzqgAu35UDvm369HCeVud0NCoLYE3bwuah4hWhAZzuiwBc7aUYCYn4Q4ul31pl/a+uNkmrGKehN1QVOh4/qkG1g1Ml/1KriSQIe8mANjZVlm6fY9tk8QtlBO8hGX16xjTWRMNqh5nYg0V3o+nSDNcnJE3b8RjqyIwS8yuEB+UrnvL2aCHhKTAXE5ZR2Q== 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=6LMOINbcu8xOomInaX26cUMN/wImon5Nbg5MDyhEVNI=; b=hUQthDIPTsZonjpxTChH/vMDQdIm+OLhdrxK9Y17MPkcZXIa4jgjmJc+H/Svb637yN/OSiMnyKafb6b1qohD/sCqtlGEoJvSFMEvendQdConKmj6NiDJUXipYlsZ7+W9rOd5xdfP7C2cl1i456eXjhkWwPUrcGmlPjlcpCBEbAg= 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 PH7PR13MB5453.namprd13.prod.outlook.com (2603:10b6:510:138::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6455.33; Wed, 7 Jun 2023 01:57:56 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::d2cb:a650:e1ce:2174]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::d2cb:a650:e1ce:2174%3]) with mapi id 15.20.6455.030; Wed, 7 Jun 2023 01:57:56 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, niklas.soderlund@corigine.com, Chaoyong He Subject: [PATCH 03/10] net/nfp: refactor the insert metadata logic of NFD3 Date: Wed, 7 Jun 2023 09:57:02 +0800 Message-Id: <20230607015709.336420-4-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230607015709.336420-1-chaoyong.he@corigine.com> References: <20230607015709.336420-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SG2PR02CA0131.apcprd02.prod.outlook.com (2603:1096:4:188::6) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|PH7PR13MB5453:EE_ X-MS-Office365-Filtering-Correlation-Id: b9b627a3-f080-46d8-deea-08db66fa9d01 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: RY+R+Y/xA/kS2ZnkIBH9WnkfFR2fyPjaZs/yBCRiflaDDAdW2BEVrJKhkDBAwRByksvHgdDfpi8pnaMmjJuEOWrIDiyYxfZdwXDv1tmIFaTGuNL9YtHzj2tn3t9RaPkJPTEA40/Va82jDifPzKx3fhbILoBEkR1Ferx8UjSSOMMWcdQtwNUmwd9SaD2Fno4Qb/q1t/xk2lgO3yLHpKjlIyu5dEVwm2UlqsT+fJvA6vtjN8tRQoEcqUrYTWJ2G3Ya9xDZqFv8VZO4oxDeh1yZVYiVbNc5gdkCZzpLHC0By3GuAzzVH2PHrjooJyRGLJPRZNOLHwL2KsRVKi+T3q8VJstWjbjCqhJtm2pM3Vjb1WucGCvoyoP/RsIM0zHs0m4/xl/Pc9p8r6MSQUzrFVCui7f9AzIrK+omx5AF9GIQM2+11TkwG3f6CpiSu9RfUdixkCYsdPsuJb5ekUpWLXCD7yP1iiS0/ywKcu5zpg3C/BG5VjAZUpsN9W/G2p2Kq/dUr6E9w7FD0/TP4YPT0O/yAOxfKz/1BOrcK9euiPe4z9bKImDNodJhA+sfB5JqAPLo22Uvg2E987O+v9rRvm6rrmXKkrqadBZ1IrUnEig25Sb7eT3bCihQyKqQw4e6h0Sa 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:(13230028)(4636009)(346002)(396003)(376002)(136003)(366004)(39840400004)(451199021)(107886003)(1076003)(6506007)(26005)(6512007)(36756003)(66574015)(83380400001)(38350700002)(86362001)(38100700002)(186003)(2616005)(8676002)(4326008)(41300700001)(44832011)(30864003)(6916009)(478600001)(66946007)(66476007)(2906002)(316002)(8936002)(5660300002)(6486002)(52116002)(66556008)(6666004); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?B4peIA2hAVOKZqXGTdJ5VakCoFXT?= =?utf-8?q?CvqVBxQzr/8wkojoY2GqjdWuaq2MRmd+MdYwYhcld/dlOdXDgVDEdatVX78u0Le9h?= =?utf-8?q?JdStBKISws8x54IoIZxnu03T7yftNJ0441d4vng9kyuMttk07DpQvUsBVhr6D+ynY?= =?utf-8?q?xb8zv9dDa7Z+n0s8JhI5FbEinXUjHehadAoBY/xzvHXZLhlzS0i1XzlBPB3iWbeJR?= =?utf-8?q?zjHfhlZZTf9sdTu3fVgZwTXU/uN5kddNtXv6r2sltPHk+uKhSsHoH71C6nE9ym9Fg?= =?utf-8?q?r8FJaeNHp5ioU66tXlEnUKSEcVRR0qr27V/XzabwBWLvEyzPKTnXms4M19ZVm5mVW?= =?utf-8?q?PGJNbJVVydKoVCtypBBoBZK7hILieGvt5AbiNNtdp90CdVyCamuR5RWP20uPoNWrO?= =?utf-8?q?2o3rIA9uIFwC/ybXqt3yflb1vCqhaoKC9ZBUS/5+EqVcrP8jNJQ0CO1+AVcECUyY/?= =?utf-8?q?cCYg5IejyoJ4errUi+gr14qRJz1fmamGe21gJNEbcr9tCTV+ec0F/Ihgq8ibcLQ+7?= =?utf-8?q?dxgS240DegEICXtBqjX+JNBN4QTrytcUGQrAmiXAr2L/dQ1oj86Mp/GstEPfA2leC?= =?utf-8?q?lqlcZBGD7XQeC4SrdXNnT4Hzshftv/ZSRTW+uFwTWJCjMN05syUmIMJ9KL2JVoEYF?= =?utf-8?q?SHCfghSB6JARyrvGYvuLTnrkmxlPr7kRoHebaOmnlUFEzyRMiIb4BrqtybvhdxpdM?= =?utf-8?q?3sSpGAP8j8SASyaRvN/SabhRJsNAMcWvJbMw9Tj6TtoNofzBzH/ltEX3wZj8nj3eJ?= =?utf-8?q?9OX2OuPlYIz8MugYUCG8fRCt2JBFZExiJbLW6BapgF10W7O59r6/bRNVvNJU9gsI8?= =?utf-8?q?8cNc1TvfCfPMbzN0qi7jo/PFRhIIF8LWfpPeNe8BeJi0RB8iNzm+wyCya3faWeS3E?= =?utf-8?q?V52fpwMJvKJWHnAT6HVJ6HXF9X8XHkLi9Neu+5BqoPd4ia/S+6/23Hd8t1xyMxX2S?= =?utf-8?q?UYDGYZwf0GDeQUnk9sF6hQE8s/6TSyC2JSxN4RsSs8W1smzvhxMOuxsky3dVehtB1?= =?utf-8?q?S/UGcerg32AxHajYLhKb40Knzvz7USRFVho3q41GPpcfF1l3G8cQGGjMgFTtOh0gS?= =?utf-8?q?FwO00W0rEHld0wdewZX3Ujg3yRGNnkGZWtsCJDV2zeX1a1P4/ykVHSNRf0RNNEp+y?= =?utf-8?q?brsSInAbmXQSBigejf50fRtXMqq55Aku4xmYHb/DCnILtMRDScPB3QrEeZLoKqS/f?= =?utf-8?q?M+6w7xQshtx6zJSlowDC9tAoSJsTC97H/jMmLl1ryU7reVWFCTVkYkOFBR3WUR764?= =?utf-8?q?aIninYdOTP+3SZq98Nv+MSkJna/BuaQA70f5AQMFQ4XDLlI+tK8l0X+97UDnol4zK?= =?utf-8?q?+/Rw+GwrZVA6Mv/ql38Aswh9dCrQtOHeMJCsi1igwNVbjBUKlhwekDfvSgFM7osX7?= =?utf-8?q?AEtR2BwPudDJDXBS/aiYCBMhJinfzp3L+AcJo/+6UBdQCQW3gk1OkDFVWYa0rd5ii?= =?utf-8?q?/U7XdLYaNHEX5wRIGVDZkfCP35PNDlJ6pe6+/U+Q0oIPiMVqgjAZWdcxbC3l+yNsc?= =?utf-8?q?RWoCdsHHi7z7U0KDHSqRy5dF9wKgjcCctg=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: b9b627a3-f080-46d8-deea-08db66fa9d01 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jun 2023 01:57:56.7735 (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: 8hlBZtpTA5gYp02+p3TI7L5KGzCNaZVD9CClQXs9FvENUB6tpUigfcVfiOd5Y7LRIrXSy76QG5X2EVLVjXkHHt9irT1wOMJqDRGSLNH7ky0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR13MB5453 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 Extract the insert metadata logic of NFD3 into a single function to simplify the logics. Add the data structure aims to hold all the different function pointers which related to different NFD version. Also add a register function to initialize the function pointers. Signed-off-by: Chaoyong He Reviewed-by: Niklas Söderlund --- drivers/net/nfp/flower/nfp_flower.c | 26 ++++++++ drivers/net/nfp/flower/nfp_flower.h | 16 ++++- drivers/net/nfp/flower/nfp_flower_cmsg.c | 63 ++++++++++--------- .../net/nfp/flower/nfp_flower_representor.c | 10 +-- drivers/net/nfp/nfd3/nfp_nfd3.h | 2 + drivers/net/nfp/nfd3/nfp_nfd3_dp.c | 16 +++++ 6 files changed, 97 insertions(+), 36 deletions(-) diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c index afb4e5b344..3636c347bb 100644 --- a/drivers/net/nfp/flower/nfp_flower.c +++ b/drivers/net/nfp/flower/nfp_flower.c @@ -1058,6 +1058,30 @@ nfp_flower_enable_services(struct nfp_app_fw_flower *app_fw_flower) return 0; } +static void +nfp_flower_pkt_add_metadata_register(struct nfp_app_fw_flower *app_fw_flower) +{ + struct nfp_flower_nfd_func *nfd_func; + + nfd_func = &app_fw_flower->nfd_func; + + nfd_func->pkt_add_metadata_t = nfp_flower_nfd3_pkt_add_metadata; +} + +uint32_t +nfp_flower_pkt_add_metadata(struct nfp_app_fw_flower *app_fw_flower, + struct rte_mbuf *mbuf, + uint32_t port_id) +{ + return app_fw_flower->nfd_func.pkt_add_metadata_t(mbuf, port_id); +} + +static void +nfp_flower_nfd_func_register(struct nfp_app_fw_flower *app_fw_flower) +{ + nfp_flower_pkt_add_metadata_register(app_fw_flower); +} + int nfp_init_app_fw_flower(struct nfp_pf_dev *pf_dev) { @@ -1135,6 +1159,8 @@ nfp_init_app_fw_flower(struct nfp_pf_dev *pf_dev) goto pf_cpp_area_cleanup; } + nfp_flower_nfd_func_register(app_fw_flower); + /* The ctrl vNIC struct comes directly after the PF one */ app_fw_flower->ctrl_hw = pf_hw + 1; ctrl_hw = app_fw_flower->ctrl_hw; diff --git a/drivers/net/nfp/flower/nfp_flower.h b/drivers/net/nfp/flower/nfp_flower.h index 0ce5f7bd9e..3bc5924b71 100644 --- a/drivers/net/nfp/flower/nfp_flower.h +++ b/drivers/net/nfp/flower/nfp_flower.h @@ -29,11 +29,20 @@ * to the correct packet data offset after metadata has * been added */ -#define FLOWER_PKT_DATA_OFFSET 8 +#define FLOWER_PKT_DATA_OFFSET (NFP_NET_META_HEADER_SIZE + NFP_NET_META_FIELD_SIZE) #define MAX_FLOWER_PHYPORTS 8 #define MAX_FLOWER_VFS 64 +struct nfp_app_fw_flower; + +/* The function pointers for different NFD version */ +struct nfp_flower_nfd_func { + /** Function used to add metadata into pkt. */ + uint32_t (*pkt_add_metadata_t)(struct rte_mbuf *mbuf, + uint32_t port_id); +}; + /* The flower application's private structure */ struct nfp_app_fw_flower { /* switch domain for this app */ @@ -77,6 +86,9 @@ struct nfp_app_fw_flower { struct nfp_flow_priv *flow_priv; struct nfp_mtr_priv *mtr_priv; + + /* Function pointers for different NFD version */ + struct nfp_flower_nfd_func nfd_func; }; static inline bool @@ -93,5 +105,7 @@ uint16_t nfp_flower_pf_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts); int nfp_flower_pf_start(struct rte_eth_dev *dev); int nfp_flower_pf_stop(struct rte_eth_dev *dev); +uint32_t nfp_flower_pkt_add_metadata(struct nfp_app_fw_flower *app_fw_flower, + struct rte_mbuf *mbuf, uint32_t port_id); #endif /* _NFP_FLOWER_H_ */ diff --git a/drivers/net/nfp/flower/nfp_flower_cmsg.c b/drivers/net/nfp/flower/nfp_flower_cmsg.c index 430dd9c316..00f94c7492 100644 --- a/drivers/net/nfp/flower/nfp_flower_cmsg.c +++ b/drivers/net/nfp/flower/nfp_flower_cmsg.c @@ -12,28 +12,19 @@ #include "nfp_flower_representor.h" static void * -nfp_flower_cmsg_init(struct rte_mbuf *m, +nfp_flower_cmsg_init(struct nfp_app_fw_flower *app_fw_flower, + struct rte_mbuf *m, enum nfp_flower_cmsg_type type, uint32_t size) { char *pkt; - uint32_t data; uint32_t new_size = size; struct nfp_flower_cmsg_hdr *hdr; pkt = rte_pktmbuf_mtod(m, char *); PMD_DRV_LOG(DEBUG, "flower_cmsg_init using pkt at %p", pkt); - data = rte_cpu_to_be_32(NFP_NET_META_PORTID); - rte_memcpy(pkt, &data, 4); - pkt += 4; - new_size += 4; - - /* First the metadata as flower requires it */ - data = rte_cpu_to_be_32(NFP_META_PORT_ID_CTRL); - rte_memcpy(pkt, &data, 4); - pkt += 4; - new_size += 4; + new_size += nfp_flower_pkt_add_metadata(app_fw_flower, m, NFP_META_PORT_ID_CTRL); /* Now the ctrl header */ hdr = (struct nfp_flower_cmsg_hdr *)pkt; @@ -51,14 +42,17 @@ nfp_flower_cmsg_init(struct rte_mbuf *m, } static void -nfp_flower_cmsg_mac_repr_init(struct rte_mbuf *mbuf, int num_ports) +nfp_flower_cmsg_mac_repr_init(struct rte_mbuf *mbuf, + struct nfp_app_fw_flower *app_fw_flower) { uint32_t size; + uint8_t num_ports; struct nfp_flower_cmsg_mac_repr *msg; enum nfp_flower_cmsg_type type = NFP_FLOWER_CMSG_TYPE_MAC_REPR; + num_ports = app_fw_flower->num_phyport_reprs; size = sizeof(*msg) + (num_ports * sizeof(msg->ports[0])); - msg = nfp_flower_cmsg_init(mbuf, type, size); + msg = nfp_flower_cmsg_init(app_fw_flower, mbuf, type, size); memset(msg->reserved, 0, sizeof(msg->reserved)); msg->num_ports = num_ports; } @@ -96,7 +90,7 @@ nfp_flower_cmsg_mac_repr(struct nfp_app_fw_flower *app_fw_flower) return -ENOMEM; } - nfp_flower_cmsg_mac_repr_init(mbuf, app_fw_flower->num_phyport_reprs); + nfp_flower_cmsg_mac_repr_init(mbuf, app_fw_flower); /* Fill in the mac repr cmsg */ nfp_eth_table = app_fw_flower->pf_hw->pf_dev->nfp_eth_table; @@ -133,7 +127,8 @@ nfp_flower_cmsg_repr_reify(struct nfp_app_fw_flower *app_fw_flower, return -ENOMEM; } - msg = nfp_flower_cmsg_init(mbuf, NFP_FLOWER_CMSG_TYPE_PORT_REIFY, sizeof(*msg)); + msg = nfp_flower_cmsg_init(app_fw_flower, mbuf, + NFP_FLOWER_CMSG_TYPE_PORT_REIFY, sizeof(*msg)); msg->portnum = rte_cpu_to_be_32(repr->port_id); msg->reserved = 0; msg->info = rte_cpu_to_be_16(1); @@ -162,7 +157,8 @@ nfp_flower_cmsg_port_mod(struct nfp_app_fw_flower *app_fw_flower, return -ENOMEM; } - msg = nfp_flower_cmsg_init(mbuf, NFP_FLOWER_CMSG_TYPE_PORT_MOD, sizeof(*msg)); + msg = nfp_flower_cmsg_init(app_fw_flower, mbuf, + NFP_FLOWER_CMSG_TYPE_PORT_MOD, sizeof(*msg)); msg->portnum = rte_cpu_to_be_32(port_id); msg->reserved = 0; msg->info = carrier_ok; @@ -199,7 +195,8 @@ nfp_flower_cmsg_flow_delete(struct nfp_app_fw_flower *app_fw_flower, msg_len = (nfp_flow_meta->key_len + nfp_flow_meta->mask_len + nfp_flow_meta->act_len) << NFP_FL_LW_SIZ; msg_len += sizeof(struct nfp_fl_rule_metadata); - msg = nfp_flower_cmsg_init(mbuf, NFP_FLOWER_CMSG_TYPE_FLOW_DEL, msg_len); + msg = nfp_flower_cmsg_init(app_fw_flower, mbuf, + NFP_FLOWER_CMSG_TYPE_FLOW_DEL, msg_len); rte_memcpy(msg, flow->payload.meta, msg_len); cnt = nfp_flower_ctrl_vnic_xmit(app_fw_flower, mbuf); @@ -233,7 +230,8 @@ nfp_flower_cmsg_flow_add(struct nfp_app_fw_flower *app_fw_flower, msg_len = (nfp_flow_meta->key_len + nfp_flow_meta->mask_len + nfp_flow_meta->act_len) << NFP_FL_LW_SIZ; msg_len += sizeof(struct nfp_fl_rule_metadata); - msg = nfp_flower_cmsg_init(mbuf, NFP_FLOWER_CMSG_TYPE_FLOW_ADD, msg_len); + msg = nfp_flower_cmsg_init(app_fw_flower, mbuf, + NFP_FLOWER_CMSG_TYPE_FLOW_ADD, msg_len); rte_memcpy(msg, flow->payload.meta, msg_len); cnt = nfp_flower_ctrl_vnic_xmit(app_fw_flower, mbuf); @@ -264,7 +262,8 @@ nfp_flower_cmsg_tun_neigh_v4_rule(struct nfp_app_fw_flower *app_fw_flower, msg_len = sizeof(struct nfp_flower_cmsg_tun_neigh_v4); if (!nfp_flower_support_decap_v2(app_fw_flower)) msg_len -= sizeof(struct nfp_flower_tun_neigh_ext); - msg = nfp_flower_cmsg_init(mbuf, NFP_FLOWER_CMSG_TYPE_TUN_NEIGH, msg_len); + msg = nfp_flower_cmsg_init(app_fw_flower, mbuf, + NFP_FLOWER_CMSG_TYPE_TUN_NEIGH, msg_len); memcpy(msg, payload, msg_len); cnt = nfp_flower_ctrl_vnic_xmit(app_fw_flower, mbuf); @@ -295,7 +294,8 @@ nfp_flower_cmsg_tun_neigh_v6_rule(struct nfp_app_fw_flower *app_fw_flower, msg_len = sizeof(struct nfp_flower_cmsg_tun_neigh_v6); if (!nfp_flower_support_decap_v2(app_fw_flower)) msg_len -= sizeof(struct nfp_flower_tun_neigh_ext); - msg = nfp_flower_cmsg_init(mbuf, NFP_FLOWER_CMSG_TYPE_TUN_NEIGH_V6, msg_len); + msg = nfp_flower_cmsg_init(app_fw_flower, mbuf, + NFP_FLOWER_CMSG_TYPE_TUN_NEIGH_V6, msg_len); memcpy(msg, payload, msg_len); cnt = nfp_flower_ctrl_vnic_xmit(app_fw_flower, mbuf); @@ -324,7 +324,8 @@ nfp_flower_cmsg_tun_off_v4(struct nfp_app_fw_flower *app_fw_flower) return -ENOMEM; } - msg = nfp_flower_cmsg_init(mbuf, NFP_FLOWER_CMSG_TYPE_TUN_IPS, sizeof(*msg)); + msg = nfp_flower_cmsg_init(app_fw_flower, mbuf, + NFP_FLOWER_CMSG_TYPE_TUN_IPS, sizeof(*msg)); priv = app_fw_flower->flow_priv; rte_spinlock_lock(&priv->ipv4_off_lock); @@ -366,7 +367,8 @@ nfp_flower_cmsg_tun_off_v6(struct nfp_app_fw_flower *app_fw_flower) return -ENOMEM; } - msg = nfp_flower_cmsg_init(mbuf, NFP_FLOWER_CMSG_TYPE_TUN_IPS_V6, sizeof(*msg)); + msg = nfp_flower_cmsg_init(app_fw_flower, mbuf, + NFP_FLOWER_CMSG_TYPE_TUN_IPS_V6, sizeof(*msg)); priv = app_fw_flower->flow_priv; rte_spinlock_lock(&priv->ipv6_off_lock); @@ -409,7 +411,8 @@ nfp_flower_cmsg_pre_tunnel_rule(struct nfp_app_fw_flower *app_fw_flower, return -ENOMEM; } - msg = nfp_flower_cmsg_init(mbuf, NFP_FLOWER_CMSG_TYPE_PRE_TUN_RULE, sizeof(*msg)); + msg = nfp_flower_cmsg_init(app_fw_flower, mbuf, + NFP_FLOWER_CMSG_TYPE_PRE_TUN_RULE, sizeof(*msg)); meta_tci = (struct nfp_flower_meta_tci *)((char *)nfp_flow_meta + sizeof(struct nfp_fl_rule_metadata)); @@ -450,7 +453,8 @@ nfp_flower_cmsg_tun_mac_rule(struct nfp_app_fw_flower *app_fw_flower, return -ENOMEM; } - msg = nfp_flower_cmsg_init(mbuf, NFP_FLOWER_CMSG_TYPE_TUN_MAC, sizeof(*msg)); + msg = nfp_flower_cmsg_init(app_fw_flower, mbuf, + NFP_FLOWER_CMSG_TYPE_TUN_MAC, sizeof(*msg)); msg->count = rte_cpu_to_be_16(1); msg->index = rte_cpu_to_be_16(mac_idx); @@ -484,7 +488,8 @@ nfp_flower_cmsg_qos_add(struct nfp_app_fw_flower *app_fw_flower, } len = sizeof(struct nfp_profile_conf); - msg = nfp_flower_cmsg_init(mbuf, NFP_FLOWER_CMSG_TYPE_QOS_MOD, len); + msg = nfp_flower_cmsg_init(app_fw_flower, mbuf, + NFP_FLOWER_CMSG_TYPE_QOS_MOD, len); rte_memcpy(msg, conf, len); cnt = nfp_flower_ctrl_vnic_xmit(app_fw_flower, mbuf); @@ -513,7 +518,8 @@ nfp_flower_cmsg_qos_delete(struct nfp_app_fw_flower *app_fw_flower, } len = sizeof(struct nfp_profile_conf); - msg = nfp_flower_cmsg_init(mbuf, NFP_FLOWER_CMSG_TYPE_QOS_DEL, len); + msg = nfp_flower_cmsg_init(app_fw_flower, mbuf, + NFP_FLOWER_CMSG_TYPE_QOS_DEL, len); rte_memcpy(msg, conf, len); cnt = nfp_flower_ctrl_vnic_xmit(app_fw_flower, mbuf); @@ -542,7 +548,8 @@ nfp_flower_cmsg_qos_stats(struct nfp_app_fw_flower *app_fw_flower, } len = sizeof(struct nfp_cfg_head); - msg = nfp_flower_cmsg_init(mbuf, NFP_FLOWER_CMSG_TYPE_QOS_STATS, len); + msg = nfp_flower_cmsg_init(app_fw_flower, mbuf, + NFP_FLOWER_CMSG_TYPE_QOS_STATS, len); rte_memcpy(msg, head, len); cnt = nfp_flower_ctrl_vnic_xmit(app_fw_flower, mbuf); diff --git a/drivers/net/nfp/flower/nfp_flower_representor.c b/drivers/net/nfp/flower/nfp_flower_representor.c index 607625d204..eb318f66df 100644 --- a/drivers/net/nfp/flower/nfp_flower_representor.c +++ b/drivers/net/nfp/flower/nfp_flower_representor.c @@ -465,7 +465,6 @@ nfp_flower_repr_tx_burst(void *tx_queue, { uint16_t i; uint16_t sent; - char *meta_offset; void *pf_tx_queue; struct nfp_net_txq *txq; struct nfp_net_hw *pf_hw; @@ -483,12 +482,9 @@ nfp_flower_repr_tx_burst(void *tx_queue, repr_dev = &rte_eth_devices[txq->port_id]; repr = repr_dev->data->dev_private; - for (i = 0; i < nb_pkts; i++) { - meta_offset = rte_pktmbuf_prepend(tx_pkts[i], FLOWER_PKT_DATA_OFFSET); - *(uint32_t *)meta_offset = rte_cpu_to_be_32(NFP_NET_META_PORTID); - meta_offset += 4; - *(uint32_t *)meta_offset = rte_cpu_to_be_32(repr->port_id); - } + for (i = 0; i < nb_pkts; i++) + nfp_flower_pkt_add_metadata(repr->app_fw_flower, + tx_pkts[i], repr->port_id); /* This points to the PF vNIC that owns this representor */ pf_hw = txq->hw; diff --git a/drivers/net/nfp/nfd3/nfp_nfd3.h b/drivers/net/nfp/nfd3/nfp_nfd3.h index e772bc4711..5bf89868fc 100644 --- a/drivers/net/nfp/nfd3/nfp_nfd3.h +++ b/drivers/net/nfp/nfd3/nfp_nfd3.h @@ -153,6 +153,8 @@ nfp_net_nfd3_tx_cksum(struct nfp_net_txq *txq, txd->flags |= NFD3_DESC_TX_CSUM; } +uint32_t nfp_flower_nfd3_pkt_add_metadata(struct rte_mbuf *mbuf, + uint32_t port_id); uint16_t nfp_net_nfd3_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts); diff --git a/drivers/net/nfp/nfd3/nfp_nfd3_dp.c b/drivers/net/nfp/nfd3/nfp_nfd3_dp.c index 1a960fbe63..2ad098a699 100644 --- a/drivers/net/nfp/nfd3/nfp_nfd3_dp.c +++ b/drivers/net/nfp/nfd3/nfp_nfd3_dp.c @@ -10,8 +10,24 @@ #include "../nfp_logs.h" #include "../nfp_common.h" #include "../nfp_rxtx.h" +#include "../flower/nfp_flower.h" +#include "../flower/nfp_flower_cmsg.h" #include "nfp_nfd3.h" +uint32_t +nfp_flower_nfd3_pkt_add_metadata(struct rte_mbuf *mbuf, + uint32_t port_id) +{ + char *meta_offset; + + meta_offset = rte_pktmbuf_prepend(mbuf, FLOWER_PKT_DATA_OFFSET); + *(rte_be32_t *)meta_offset = rte_cpu_to_be_32(NFP_NET_META_PORTID); + meta_offset += NFP_NET_META_HEADER_SIZE; + *(rte_be32_t *)meta_offset = rte_cpu_to_be_32(port_id); + + return FLOWER_PKT_DATA_OFFSET; +} + /* * nfp_net_nfd3_tx_vlan() - Set vlan info in the nfd3 tx desc *