From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
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 <dev@dpdk.org>; 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 <dev@dpdk.org>; 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 <dev@dpdk.org>; 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 <sthotton@marvell.com>
To: Pavan Nikhilesh Bhagavatula <pbhagavatula@marvell.com>, Jerin Jacob
 Kollanukkaran <jerinj@marvell.com>
CC: "dev@dpdk.org" <dev@dpdk.org>, Pavan Nikhilesh Bhagavatula
 <pbhagavatula@marvell.com>
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: <PH0PR18MB4425627F4F029F9830360DFAD95F9@PH0PR18MB4425.namprd18.prod.outlook.com>
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 <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=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 <pbhagavatula@marvell.com>
>---
> 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 *)&eth_hdr->dst_addr =3D dest_eth_addr[hops[j]];
>-		rte_ether_addr_copy(&ports_eth_addr[hops[j]],
>-				&eth_hdr->src_addr);
>+	/* Set MAC addresses. */
>+	eth_hdr =3D rte_pktmbuf_mtod(pkt, struct rte_ether_hdr *);
>+	*(uint64_t *)&eth_hdr->dst_addr =3D dest_eth_addr[*hop];
>+	rte_ether_addr_copy(&ports_eth_addr[*hop], &eth_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