From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id E9A15A0543; Fri, 7 Oct 2022 22:03:22 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DABD4400D5; Fri, 7 Oct 2022 22:03:22 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id AF30240042 for ; Fri, 7 Oct 2022 22:03:21 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 297FCidK016019 for ; Fri, 7 Oct 2022 13:03:21 -0700 Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2104.outbound.protection.outlook.com [104.47.70.104]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3k1d7gsne7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 07 Oct 2022 13:03:20 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hkzyBZcLwQOFkeI1bFX21o6RtapPWxuq1RAErwxGwmRN3Ndaw9Rkz01O/piv6NApb+EkgeQhOMo9RRSbsAxIWgL30WesvSR3EM1nuM8ZwfOGupWAIs7Egs/KvHgBMBEJ5IPH8ycIvm1IjnFiZQN9u8HeD2U1z5a47HNIw76ysVtVBQu4ShjzksOt277gzCXIQfL5PjQxfev+lI5nGiGsQiziFVuqCLKvu3w+0FYsshG65cNH6AoeWFf7zTC/9ruvjlKx+/IfJ+JoXwb5W6n1vFYgti6GHNYXA0aSxqGXycON9LSG27ESmigtyQYH4lqm+6ziLnd+i3eaqTrU8hUvuQ== 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=0RT+gimtbHYX3TbsqZNF6H6M5O/E3L1qeGX/hWvkNmI=; b=hYmEh5SEfoQeJNkzvCwjBAgsKqjazOuPTqtfOPK3tgCCiznsJaKFWXSLFf8FIPV9I8+qaCDPSjGe2ZfptmplXunGAQ8rqG1RckctYiik8Cj2noJkQxMi4mUNQfVMayugR02SZZFKKeBaVrZRNX24FHHCclxn88J8PJj4FEiJBM5wBKqoAwsqIjeyRZ8b6ptrde5grmDap6cs8GnP0NpIgADfVaORV40VQsd6XPth+anCgR2z9i2zY6VzbrKPNrIclVQv0T7fpGHIrSfGTKirMqIcOfkpind66sl92SY94SsGq8LcaySAM0hg409BjoQa0X9yHdsB4W7rlyX90kviTg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0RT+gimtbHYX3TbsqZNF6H6M5O/E3L1qeGX/hWvkNmI=; b=tMxOfHW6qeDqmF3QN2asCIQzVAPEcA4pKvbMokHQ2U3LvwABax1FUP8EvW8lHkZid/Z1c8gAMteGnXo8rc1kQtLUYNkDAmaPOYptisVSlXGLTPoBJ0tmKZnjzRJiG1CKADw9uoPrIFpWh6a8pg6vn3yFTm49SW7cbdpw8IOwbOQ= Received: from PH0PR18MB4425.namprd18.prod.outlook.com (2603:10b6:510:ef::13) by CH0PR18MB4257.namprd18.prod.outlook.com (2603:10b6:610:b8::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.15; Fri, 7 Oct 2022 20:03:18 +0000 Received: from PH0PR18MB4425.namprd18.prod.outlook.com ([fe80::16f8:9275:a441:cfec]) by PH0PR18MB4425.namprd18.prod.outlook.com ([fe80::16f8:9275:a441:cfec%6]) with mapi id 15.20.5676.028; Fri, 7 Oct 2022 20:03:18 +0000 From: Shijith Thotton To: Pavan Nikhilesh Bhagavatula , Jerin Jacob Kollanukkaran CC: "dev@dpdk.org" , Pavan Nikhilesh Bhagavatula Subject: RE: [EXT] [PATCH v3 4/5] examples/l3fwd: fix event vector processing in fib Thread-Topic: [EXT] [PATCH v3 4/5] examples/l3fwd: fix event vector processing in fib Thread-Index: AQHYxgouWjoAdcIrMEGxcBEtFoK5cK4Dg3xA Date: Fri, 7 Oct 2022 20:03:18 +0000 Message-ID: References: <20220902091833.9074-1-pbhagavatula@marvell.com> <20220911181250.2286-1-pbhagavatula@marvell.com> <20220911181250.2286-4-pbhagavatula@marvell.com> In-Reply-To: <20220911181250.2286-4-pbhagavatula@marvell.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH0PR18MB4425:EE_|CH0PR18MB4257:EE_ x-ms-office365-filtering-correlation-id: 5bb5e4e4-b104-4920-729d-08daa89efa40 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Olio19+z0lF5q4k6vXm07LfEljX1atW4YGT5z/iWUn1QczMML3i/3QuxyD5fe1igHs/SAA5jaGxwsSpsm8cQX1uW6omfvSUF7pV0K8BqeMqn9XTicLAWzJXP7IwQgL7DfOjtcxvvvjwJn7m8dHj/T1a1Ws4rSFRquBrLWm1yUT1AuJiPORwHv3aN6Zd75eonxvmxD75amxUZPtknJcdDkPrdFkCilyWsk6K3qC5431dXCGYwPwClkzg4kXVbVkuCDxuu2x08orau24bUM3qkYCa4j7UPQsYfBc7zkzPRU+9mh1BgHRHDq68XChxEcP9PcIEMQW5HbdKWdM5KqJDLSBlPWWC93U4YnUr0jirFxerTg11l0HwtUDZgz8ngDBxEWziwvdNerjPlF8wSKGToxEfTMx4gsRDUkAGaMgOo46fmtA3O88CPJ+DX6SsiNkqDHJ3b1beEipndvnb8zWgtGy+EfWt9riQE2ndoi0+vP0BSudTcpWNiRLUVA+hq6NXQff2xDAGRAlNpHs6sagr2zrgYP55zTezajrynBOf0j8RrK4oIye2xE3E4KxPSnHlUz3OtwhJPSc87fnkXFNN5x7gGVoMwRWxHOaCXQzMSTzq/ds8kXp6fgWXb8NUi2KMbv5YMQy/rC/JKYV6QDdHUa/9v7c92C0sdG7MTsT3RkDqWt3pysUjyWeHg1x5j5fpNsi/V8RO2ycnxyfG8LWAljTQjSZbFXMebUa7iOOeAyCAGSJmgGvcXmRRh6xt5/LkrXP//cbX6/oWHIQGs28Q/7A== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR18MB4425.namprd18.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(4636009)(136003)(346002)(39860400002)(376002)(366004)(396003)(451199015)(66446008)(110136005)(66476007)(6636002)(4326008)(66946007)(66556008)(8676002)(64756008)(107886003)(8936002)(38070700005)(33656002)(83380400001)(52536014)(54906003)(26005)(76116006)(41300700001)(122000001)(7696005)(6506007)(478600001)(38100700002)(86362001)(55016003)(2906002)(71200400001)(9686003)(316002)(5660300002)(186003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?Rk1m4u//ijmVjTOrjHXCy7Seu44RpBufnNIgfpHnpL1KwG9TUwEXX8LYEzsY?= =?us-ascii?Q?YbHWDlz74o6jssNc7wvy52F5wUidBZK6UVORO8G/lU3ostM1dlZTu3cB/SzL?= =?us-ascii?Q?UC7zZ7as55DwuWLfUw3eiR8oh6Vx87YMY8tnT/LDJ4wScxxwuVQTEQHQFykj?= =?us-ascii?Q?p4OyWnd9780YARmjFaDwKoYfYBTri0vudRrdriXFnlgslYZPx5/oCi0fHj9k?= =?us-ascii?Q?vw3/VPI7pjqwwEL1d6UpHUYzb6pEUbLRT1bxdGL+gNN2k6Pxs6bzYhfS9VYz?= =?us-ascii?Q?xBuAhZwCJ0H9g70MP/wXoTxLGmctsHaGhr8KLfooGUwRWXSflkUANa8CZJU7?= =?us-ascii?Q?silbnlWKUuwXhQhH1CiqEyWwACZWFR85/3+wSlDeBkglcczba4Rbv3xnH91E?= =?us-ascii?Q?SntadMgCo5VjP2uF05OZoS6khFRz81l1BSsf1jcSf/QHgdbio+a6Cy7DeR22?= =?us-ascii?Q?vedDWeSOiWSxcawLNZw7F60XsXuIVmn6F/gA0jT0wy+7wzW3y8o6Qt70jUdq?= =?us-ascii?Q?Olfwg2M1di7YHKxMW8uajJl7GuH3w4CBCoeuvzwJVWTm8YHuccfqSXrq2kaB?= =?us-ascii?Q?G3LLX509/qsP3KOgxdxkpFeU4zfYvXjQNFi2ZB2LHYNccOHzct8x83SHyTkd?= =?us-ascii?Q?FI3qUyYSum4QmQgC/3diiAQKtV9otQtiq2NsbEX82WV6FFaXIqawmS0ped8x?= =?us-ascii?Q?hs8pFlENGFBoQUr4SP1x0RS8DksrHOxhSi0p37vJZC8/WNfMNJOJpr3zp7pI?= =?us-ascii?Q?tRr2z2IBFE6ZXJLbInQAmrDg14fyGv94e1H/hFLnNtK+vgsW97Sfa+lJ6PEF?= =?us-ascii?Q?HEOFlg4OmIafN+NdPPf78cL/E7VvQdEqDTS8+IOG9pFHc8X+oLjeKO2HfHBY?= =?us-ascii?Q?uQFcZdaLt93g57+EMzP0C2rPEZDIOy6FLFWHv7ufj1L1MHSmxSkK5MY1HDEE?= =?us-ascii?Q?sqecQhv52ZlRKGGYrpLpYQsIJGlGeXq+xONGJN09cpp4WHEQ0Z5zR4NzHW+g?= =?us-ascii?Q?wR73p9q3JtBmHqLmip/TJ/OKv9ebI+XzpYqc+PdpGMwN3zkAfHbhLNmmgXkI?= =?us-ascii?Q?TIN5x+4p3hGqkxGu5IyNgXObI+D4adoxTym79cvr/84KbF+rEpnsUiqkrzJT?= =?us-ascii?Q?X4znBlIoudiw/1URfHtKfobm/o7K52qYORZ17mxDBJEpd4sEHVTn2ykMGQPf?= =?us-ascii?Q?ieww6CN2dsbslquEeCq+a2aQLYOmlapQDxY6M3Db1vPZVMSsyEw3za35MX4C?= =?us-ascii?Q?PhNfMF2wjiRE8dhlYcW/M0J6bwXxATV/nOT/61mzdLD9n5YtLpz62dHdyH7a?= =?us-ascii?Q?t2L4LJlWyYJAUBMm1j1/OqEDxGGfkTCsDnY7Y1G6ckS7bSYJQaK0/9XAHHff?= =?us-ascii?Q?z2CAvd/AduFJ3mQ+pMmUyLxLdeqdjG3yvyC0AgAWJPKXifaGqPgucOMxeJo3?= =?us-ascii?Q?i6MVLxIYhNnbIAKW/lh+IPzZJYXbSndzH6L5lmzUFoWaOscbTqpxxBEBPs+t?= =?us-ascii?Q?xrTHq34wgz9PE2MgeYfHw9hRP24T82EJyqmiUlGFAAZ5XBkYdGAsbNASF+t9?= =?us-ascii?Q?Ry1vobk5WHW3GQQVPEhK+Ml/3kRVREVMVaFqjB2F?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: marvell.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR18MB4425.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5bb5e4e4-b104-4920-729d-08daa89efa40 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Oct 2022 20:03:18.3017 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: QmTqonuG3QUdRA/p2ePvd80H//YZVRMZqDdFtmHEjh3o+gJ6bvZBUwPVuDwzCPQQ+TP/xe9n7oMEoC/PSZO3Zg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR18MB4257 X-Proofpoint-GUID: F8p6u_LdvRse_U_91uizSvKx65eTkKgu X-Proofpoint-ORIG-GUID: F8p6u_LdvRse_U_91uizSvKx65eTkKgu X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.528,FMLib:17.11.122.1 definitions=2022-10-07_04,2022-10-07_01,2022-06-22_01 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 > >Fix stack overflow when event vector size is greater than >MAX_BURST_SIZE. >Add missing mac swap and rfc1812 stage. > >Fixes: e8adca1951d4 ("examples/l3fwd: support event vector") > >Signed-off-by: Pavan Nikhilesh >--- > examples/l3fwd/l3fwd_fib.c | 123 ++++++++++++++++++++++++++----------- > 1 file changed, 86 insertions(+), 37 deletions(-) > >diff --git a/examples/l3fwd/l3fwd_fib.c b/examples/l3fwd/l3fwd_fib.c >index e02e4b3f5a..c4a45bc7f3 100644 >--- a/examples/l3fwd/l3fwd_fib.c >+++ b/examples/l3fwd/l3fwd_fib.c >@@ -77,27 +77,37 @@ fib_parse_packet(struct rte_mbuf *mbuf, > */ > #if !defined FIB_SEND_MULTI > static inline void >-fib_send_single(int nb_tx, struct lcore_conf *qconf, >- struct rte_mbuf **pkts_burst, uint16_t hops[nb_tx]) >+process_packet(struct rte_mbuf *pkt, uint16_t *hop) > { >- int32_t j; > struct rte_ether_hdr *eth_hdr; > >- for (j =3D 0; j < nb_tx; j++) { >- /* Run rfc1812 if packet is ipv4 and checks enabled. */ >+ /* Run rfc1812 if packet is ipv4 and checks enabled. */ > #if defined DO_RFC_1812_CHECKS >- rfc1812_process((struct rte_ipv4_hdr *)(rte_pktmbuf_mtod( >- pkts_burst[j], struct rte_ether_hdr *) + 1), >- &hops[j], pkts_burst[j]->packet_type); >+ rfc1812_process( >+ (struct rte_ipv4_hdr *)(rte_pktmbuf_mtod( >+ pkt, struct rte_ether_hdr *) + >+ 1), >+ hop, pkt->packet_type); > #endif > >- /* Set MAC addresses. */ >- eth_hdr =3D rte_pktmbuf_mtod(pkts_burst[j], >- struct rte_ether_hdr *); >- *(uint64_t *)ð_hdr->dst_addr =3D dest_eth_addr[hops[j]]; >- rte_ether_addr_copy(&ports_eth_addr[hops[j]], >- ð_hdr->src_addr); >+ /* Set MAC addresses. */ >+ eth_hdr =3D rte_pktmbuf_mtod(pkt, struct rte_ether_hdr *); >+ *(uint64_t *)ð_hdr->dst_addr =3D dest_eth_addr[*hop]; >+ rte_ether_addr_copy(&ports_eth_addr[*hop], ð_hdr->src_addr); >+} >+ >+static inline void >+fib_send_single(int nb_tx, struct lcore_conf *qconf, >+ struct rte_mbuf **pkts_burst, uint16_t hops[nb_tx]) >+{ >+ int32_t j; > >+ for (j =3D 0; j < nb_tx; j++) { >+ process_packet(pkts_burst[j], &hops[j]); >+ if (hops[j] =3D=3D BAD_PORT) { >+ rte_pktmbuf_free(pkts_burst[j]); >+ continue; >+ } > /* Send single packet. */ > send_single_packet(qconf, pkts_burst[j], hops[j]); > } >@@ -261,7 +271,7 @@ fib_event_loop(struct l3fwd_event_resources *evt_rsrc, > uint32_t ipv4_arr[MAX_PKT_BURST]; > uint8_t ipv6_arr[MAX_PKT_BURST][RTE_FIB6_IPV6_ADDR_SIZE]; > uint64_t hopsv4[MAX_PKT_BURST], hopsv6[MAX_PKT_BURST]; >- uint16_t nh; >+ uint16_t nh, hops[MAX_PKT_BURST]; > uint8_t type_arr[MAX_PKT_BURST]; > uint32_t ipv4_cnt, ipv6_cnt; > uint32_t ipv4_arr_assem, ipv6_arr_assem; >@@ -350,7 +360,13 @@ fib_event_loop(struct l3fwd_event_resources *evt_rsrc= , > else > nh =3D (uint16_t)hopsv6[ipv6_arr_assem++]; > if (nh !=3D FIB_DEFAULT_HOP) >- events[i].mbuf->port =3D nh; >+ hops[i] =3D nh !=3D FIB_DEFAULT_HOP ? >+ nh : >+ events[i].mbuf->port; >+ process_packet(events[i].mbuf, &hops[i]); >+ events[i].mbuf->port =3D hops[i] !=3D BAD_PORT ? >+ hops[i] : >+ events[i].mbuf->port; > } > > if (flags & L3FWD_EVENT_TX_ENQ) { >@@ -418,14 +434,12 @@ fib_event_main_loop_tx_q_burst(__rte_unused void >*dummy) > } > > static __rte_always_inline void >-fib_process_event_vector(struct rte_event_vector *vec) >+fib_process_event_vector(struct rte_event_vector *vec, uint8_t *type_arr, >+ uint8_t **ipv6_arr, uint64_t *hopsv4, uint64_t *hopsv6, >+ uint32_t *ipv4_arr, uint16_t *hops) > { >- uint8_t ipv6_arr[MAX_PKT_BURST][RTE_FIB6_IPV6_ADDR_SIZE]; >- uint64_t hopsv4[MAX_PKT_BURST], hopsv6[MAX_PKT_BURST]; > uint32_t ipv4_arr_assem, ipv6_arr_assem; > struct rte_mbuf **mbufs =3D vec->mbufs; >- uint32_t ipv4_arr[MAX_PKT_BURST]; >- uint8_t type_arr[MAX_PKT_BURST]; > uint32_t ipv4_cnt, ipv6_cnt; > struct lcore_conf *lconf; > uint16_t nh; >@@ -463,16 +477,10 @@ fib_process_event_vector(struct rte_event_vector >*vec) > > /* Lookup IPv6 hops if IPv6 packets are present. */ > if (ipv6_cnt > 0) >- rte_fib6_lookup_bulk(lconf->ipv6_lookup_struct, ipv6_arr, >- hopsv6, ipv6_cnt); >- >- if (vec->attr_valid) { >- nh =3D type_arr[0] ? (uint16_t)hopsv4[0] : (uint16_t)hopsv6[0]; >- if (nh !=3D FIB_DEFAULT_HOP) >- vec->port =3D nh; >- else >- vec->attr_valid =3D 0; >- } >+ rte_fib6_lookup_bulk( >+ lconf->ipv6_lookup_struct, >+ (uint8_t(*)[RTE_FIB6_IPV6_ADDR_SIZE])ipv6_arr, hopsv6, >+ ipv6_cnt); > > /* Assign ports looked up in fib depending on IPv4 or IPv6 */ > for (i =3D 0; i < vec->nb_elem; i++) { >@@ -481,9 +489,26 @@ fib_process_event_vector(struct rte_event_vector *vec= ) > else > nh =3D (uint16_t)hopsv6[ipv6_arr_assem++]; > if (nh !=3D FIB_DEFAULT_HOP) >- mbufs[i]->port =3D nh; >- event_vector_attr_validate(vec, mbufs[i]); >+ hops[i] =3D nh; >+ else >+ hops[i] =3D vec->attr_valid ? vec->port : >+ vec->mbufs[i]->port; > } >+ >+#if defined FIB_SEND_MULTI >+ uint16_t k; >+ k =3D RTE_ALIGN_FLOOR(vec->nb_elem, FWDSTEP); >+ >+ for (i =3D 0; i !=3D k; i +=3D FWDSTEP) >+ processx4_step3(&vec->mbufs[i], &hops[i]); >+ for (; i < vec->nb_elem; i++) >+ process_packet(vec->mbufs[i], &hops[i]); >+#else >+ for (i =3D 0; i < vec->nb_elem; i++) >+ process_packet(vec->mbufs[i], &hops[i]); >+#endif >+ >+ process_event_vector(vec, hops); > } > > static __rte_always_inline void >@@ -496,7 +521,32 @@ fib_event_loop_vector(struct l3fwd_event_resources >*evt_rsrc, > const uint8_t event_d_id =3D evt_rsrc->event_d_id; > const uint16_t deq_len =3D evt_rsrc->deq_depth; > struct rte_event events[MAX_PKT_BURST]; >+ uint8_t *type_arr, **ipv6_arr, *ptr; > int nb_enq =3D 0, nb_deq =3D 0, i; >+ uint64_t *hopsv4, *hopsv6; >+ uint32_t *ipv4_arr; >+ uint16_t *hops; >+ uintptr_t mem; >+ >+ mem =3D (uintptr_t)rte_zmalloc( >+ "vector_fib", >+ (sizeof(uint32_t) + sizeof(uint8_t) + sizeof(uint64_t) + >+ sizeof(uint64_t) + sizeof(uint16_t) + sizeof(uint8_t *) + >+ (sizeof(uint8_t) * RTE_FIB6_IPV6_ADDR_SIZE)) * >+ evt_rsrc->vector_size, >+ RTE_CACHE_LINE_SIZE); =20 Free missing. >+ if (mem =3D=3D 0) >+ return; >+ ipv4_arr =3D (uint32_t *)mem; >+ type_arr =3D (uint8_t *)&ipv4_arr[evt_rsrc->vector_size]; >+ hopsv4 =3D (uint64_t *)&type_arr[evt_rsrc->vector_size]; >+ hopsv6 =3D (uint64_t *)&hopsv4[evt_rsrc->vector_size]; >+ hops =3D (uint16_t *)&hopsv6[evt_rsrc->vector_size]; >+ ipv6_arr =3D (uint8_t **)&hops[evt_rsrc->vector_size]; >+ >+ ptr =3D (uint8_t *)&ipv6_arr[evt_rsrc->vector_size]; >+ for (i =3D 0; i < evt_rsrc->vector_size; i++) >+ ipv6_arr[i] =3D &ptr[RTE_FIB6_IPV6_ADDR_SIZE + i]; > > if (event_p_id < 0) > return; >@@ -519,10 +569,9 @@ fib_event_loop_vector(struct l3fwd_event_resources >*evt_rsrc, > events[i].op =3D RTE_EVENT_OP_FORWARD; > } > >- fib_process_event_vector(events[i].vec); >- >- if (flags & L3FWD_EVENT_TX_DIRECT) >- event_vector_txq_set(events[i].vec, 0); >+ fib_process_event_vector(events[i].vec, type_arr, >+ ipv6_arr, hopsv4, hopsv6, >+ ipv4_arr, hops); > } > > if (flags & L3FWD_EVENT_TX_ENQ) { >-- >2.25.1