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 607F343C0C for ; Fri, 1 Mar 2024 16:43:51 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 58CDD42DB1; Fri, 1 Mar 2024 16:43:51 +0100 (CET) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.18]) by mails.dpdk.org (Postfix) with ESMTP id DEC7A427D8 for ; Fri, 1 Mar 2024 16:43:48 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1709307830; x=1740843830; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=lt+TSqRHeGbLnnAtvkKDYbbfqh5CNHeIN3LxrV/D7FM=; b=jOZi9DwTVEuRyeiIp4D6ATp/MOeBVd42tj5RBBNr0fIR5QTH3PhHBFCR uGAKxMgSHpbA16lzWfonW6s6gL/01CI6AAgf2GR4TUgLDVJpVYoXyqJDf KcE3vbV2Irm1hCV8ztzcNVgH/bo9QzRgNhVuliiaqsC4kblbV5AUOQU2O ovr6OMKDiJNogvlieyMFxQM09BYUSpG8GP8+SF3/W52gHbEZjv5Scfiwe QLP55DOkbWT+SVBU4nSj+vDFzPnlyn5XYsXL3Dlm9gLoDAAZFcojMVG46 umANExV48PaTJq3OJsyYGWmRAz1qbYw2qZlUmMPcoQMkQ53Vo6bi80wJ/ Q==; X-IronPort-AV: E=McAfee;i="6600,9927,11000"; a="3972367" X-IronPort-AV: E=Sophos;i="6.06,196,1705392000"; d="scan'208";a="3972367" Received: from orviesa008.jf.intel.com ([10.64.159.148]) by orvoesa110.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Mar 2024 07:43:48 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.06,196,1705392000"; d="scan'208";a="8792276" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orviesa008.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 01 Mar 2024 07:43:48 -0800 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Fri, 1 Mar 2024 07:43:46 -0800 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Fri, 1 Mar 2024 07:43:46 -0800 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Fri, 1 Mar 2024 07:43:46 -0800 Received: from NAM04-MW2-obe.outbound.protection.outlook.com (104.47.73.168) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Fri, 1 Mar 2024 07:43:45 -0800 Received: from MW4PR11MB5872.namprd11.prod.outlook.com (2603:10b6:303:169::14) by BL1PR11MB6051.namprd11.prod.outlook.com (2603:10b6:208:393::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7339.26; Fri, 1 Mar 2024 15:43:42 +0000 Received: from MW4PR11MB5872.namprd11.prod.outlook.com ([fe80::92a7:f6a2:9262:d150]) by MW4PR11MB5872.namprd11.prod.outlook.com ([fe80::92a7:f6a2:9262:d150%3]) with mapi id 15.20.7339.024; Fri, 1 Mar 2024 15:43:42 +0000 From: "Loftus, Ciara" To: "Tahhan, Maryam" , "ferruh.yigit@amd.com" , "stephen@networkplumber.org" , "lihuisong@huawei.com" , "fengchengwen@huawei.com" , "liuyonglong@huawei.com" , "Marchand, David" , "Koikkara Reeny, Shibin" CC: "dev@dpdk.org" , "Tahhan, Maryam" , "stable@dpdk.org" Subject: RE: [v11 2/3] net/af_xdp: fix multi interface support for K8s Thread-Topic: [v11 2/3] net/af_xdp: fix multi interface support for K8s Thread-Index: AQHaaxJD14qMpX2w5USA8OS5AyCskLEjB4Cg Date: Fri, 1 Mar 2024 15:43:42 +0000 Message-ID: References: <20240229132129.656166-1-mtahhan@redhat.com> <20240229132129.656166-3-mtahhan@redhat.com> In-Reply-To: <20240229132129.656166-3-mtahhan@redhat.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MW4PR11MB5872:EE_|BL1PR11MB6051:EE_ x-ms-office365-filtering-correlation-id: c5bfd4de-4b3c-4c92-3368-08dc3a065f42 x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: L8x6TZly6ClBkevrNPookBrAChQIU/0GNrIekcN5uOYA+uOmc+Tf8P2FED4bkFsFRMgznvuoeUKvugN8fvYwKKY+LT0+8dLOnWT9aezWaxQt9yE7YawAZ3IZHHDsLIokmRGoJQP0E/peUDzA58nwFBsxPm26Qc527/OM8lAxaAovYgJm9EXIDIssG8cG4ZCP6yDJEXUjpni1DMxmx/59lkJ6Tn/mMqoE5Bp5fpkVJKu8J1A813zHBJxqdTsKHj/tIFjSbj1igJzBRN2GruKkzKIAM0kMkK/WEKcgpCeAGyXCXFEDoizybi1wz+Ch8m4ZQezhOMJdTJKt6VyF9anhQmAWnFILRA7/0qGChgVAGHGtiZNVXOfIMt3IxgniEMOQDHtULj/ZdmL1Jxj3T+543f0AEq/Uy8TW47Le9KvkpMgb9MvJcrGgalfHcDUHRFs53N3/OoGXarD5XwIdoVt1UVvG/0YW5WZCmI2DB3WxISGfreNrWSfPvmXsHghuLNJanjBIWi+PVwSqVFKzz2uvFLrTCjxaJPg7gF2Nu1npB4vN0oa8KAYnnGKk+N1PGaeumd3CAK7K86RtTVDF7wBXXrMYLKPWoyDlHNQ3J9+LQQ+gMm6153rAOYL6EbcuKOChXL/WVRs6IeZZSj/ZwprUN8TXcwSNyiUYY6ZyMX/Z8J/hg9Q6X4H5DgRoVT5TmhH07jh+WwnGctrzRtVDT2j26/4mtrbHpdzkA6fYCLL5Tdw= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MW4PR11MB5872.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(38070700009)(921011); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?OXbBZMBTUDceA1B7hbQ8WXrUN3l2Hz9A95F33iONECQOiEN3TdJ6lvHg++qg?= =?us-ascii?Q?tEGmfFFLp1YfhuQp03L3lUixDVnB1l/3vo0nTzeaK+6DcSlHNCfPzq1AkED1?= =?us-ascii?Q?LDWK1PsNpcYNgvPXgrgmm31P1wpWcSJ+1vKajNZ2ggZn9QVRmyYbdUTjqHAG?= =?us-ascii?Q?b+LOOOKtEkBlwSCBVF39FK+bGFI2GpaeuRt7t3TooLXmQJz13v6rsPmaANPB?= =?us-ascii?Q?loTBu6P/o0fsi8evWu9Wq5O1RZZVF57xGGZip6K55yiyLO0F1EE9lDCwVYTX?= =?us-ascii?Q?NxtkjgQFz6jsp+iQznnl5y0N0iNT8eno3xxRGRJLMc6wpZ28to3CPK/KUo9p?= =?us-ascii?Q?y/3fFTkbb/P2+glmB0trXiAjvVHUBws2YM5sHMYGg98X46ji5sYYW+k0FMEX?= =?us-ascii?Q?u9aUpQkYGgKh9luxfTpIa8kmZQ+hZD9yN/pFFr9P8RfzcrZ33FJ8arcc18hf?= =?us-ascii?Q?pzQh53NluRCjQRA6++shujFyR1CkGCRlB7FVg3qBRSpQeOweoYN6aM64X8vW?= =?us-ascii?Q?ZxElPM22HXEOwk5ZyHLLXshwC1weRkPEGCYf5k0X4qGw6EnfbsEITD+LAo6G?= =?us-ascii?Q?I/7TM3UrYDkGXd2rabLUblwZuFjNkjB7ziogNXPYMB3r5q9IlPejrz9zzRKZ?= =?us-ascii?Q?AAFkmV/3FousUe7Vwa8nOrSKqBf4qGOvdvfH0rS457LmYELxBdI13IIPy0+E?= =?us-ascii?Q?UlA4Qa661xWaiobgcjXZVwcF8F2J6H4h1VWfUgBOLL5F8jS/z/JDN2wZfI77?= =?us-ascii?Q?JE8Zuu7XgQsLfVWeti/6ZSphuSRBkhAkzCoqOasNt1QzSIjwEzQpu8Q3AMhw?= =?us-ascii?Q?19bKuXOOTNsIimtGXH4U3ZGZXOywqR6+jwjYBZzWO8uDuxFP66T4R4wvwMz3?= =?us-ascii?Q?wv2xYbJWOPX6Wu1aTFDB0NHf6wWG0/r3Wy+8BUrfoEdYKhuObq663cwWpTnH?= =?us-ascii?Q?+uPDLrYWD7wSzC2knTeLZhQ4GXhjNwKKRdIWAwJJRNnZLX9gTFxY8TfWiqx5?= =?us-ascii?Q?X3xydDWL4CbZlCPp9KyF+pnPvI/cdgc6QkHHXpgt1vIA0rR8hS/z5tpz4zWu?= =?us-ascii?Q?LZpXQehKzV2H/JkchqyLuX5zi58d5YudJ2Qu83Y8TZIu4IpZeRBo0LjP7xTE?= =?us-ascii?Q?j/FpIQq8ShPYCoWMfEHFJPmH2yfU5JMhmlSa0mN8PKrKMpPgab+fEjk31uoV?= =?us-ascii?Q?LM821fTr6YJiEm9G2V5mjVp5PrXKo19d9yyeyP5kpQASOSQrkFwuPJrZnPii?= =?us-ascii?Q?PQIctKAqpE9bZaFUY08hdOIGQm5y0yADl3uJOICjSZPAcV+Ma9cy8ER+GIjY?= =?us-ascii?Q?XHSDeKzkMT/nGn0aVYqfsyTVhVQfWSI8ZY0fvWYMRX3HAsly1eTY14MxD6R7?= =?us-ascii?Q?FY2rdC4YmPAxscF310dPho74uGLqrlaui7iBB+HAgHnRXaXnUGFDxhlqLhOz?= =?us-ascii?Q?GhkW3x/PqVzqFyAiDM45q1TQkEz1V3r9FNIKFVbhsVQmcLX3ovRtnDtCo7vW?= =?us-ascii?Q?soP4LIEToaxGV+fhwEcUPJJCXz0d2ItPi3L9vWe99bLj//0DNtJPCvfr1Dl0?= =?us-ascii?Q?/wtslBwFfB4u0RLE0YzUHIiM45XkX+w0rol8HWyQ?= arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Yfo8dbE1a4DrnW+9JRkmbSB7fUo20URecAkq1prduPpa+vLcB2UfT+cpgiBpECvjZYZeiVSNgk+WDKUIbBW92C1TpCeD7HSxNCvqmn8zfKAaxX9+LnjOxvr+k0ihPCitx8Hhw4ckQfNAF2++2a0vsf9cZ3IAicbpNqcp3qbde+dE44KRmSuZEzXNKGBV+1ifCKGZwKOhHB+vOAJmCi21u9TInGAk6lvze5d6ZHF4Ws8R5qaK5hFJNghMMhg1BiJwIOQZYj3DmkKKcuQGNlOWKtPIA5Bh1u791JL460bzNjvoVxMhdF9olqCFNORGCcWRk0xGZ/v+0J2iS4IlHZsx8g== 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=oKTuKYqaSwHwdAqpbp9AKVjJQLkumMY51II8iSVWnQw=; b=jlrr4PpnwOpHns/QVQoEHgif9BVlVbcc9G32rBFftwxdAMcCWhmUhHNZ2IXVmpfKeiHfqGuF5QEt0QH0OKu8Kf3d7Hdv5/WO9VvTHHb7JGgOWvrx0HMGEaQB4tCGSCvqxM6y7d/7tU29mBvplMBUIdjrt10/qBXY1+G/sX3oEVtXWD4RF/v5ij4ZDlhB0OZul8otxd7aSnO4aXtxjZrn5Scsi8IzOL7gCTyGhTh8ESHx31nRNiUoQ+JpBwLJ7HAinOd4sRBZd/xGctfVKfKZidb7+5kmDI7DhDVtQCCZXr/vU6yV7qt2tABYVVrWIaJ1xclr+cOgs+wZz8eaVaxyEg== arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none x-ms-exchange-crosstenant-authas: Internal x-ms-exchange-crosstenant-authsource: MW4PR11MB5872.namprd11.prod.outlook.com x-ms-exchange-crosstenant-network-message-id: c5bfd4de-4b3c-4c92-3368-08dc3a065f42 x-ms-exchange-crosstenant-originalarrivaltime: 01 Mar 2024 15:43:42.1638 (UTC) x-ms-exchange-crosstenant-fromentityheader: Hosted x-ms-exchange-crosstenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d x-ms-exchange-crosstenant-mailboxtype: HOSTED x-ms-exchange-crosstenant-userprincipalname: FNQdULMh4n5Ng9XgZ4navQyc18fKMPYAkco/CZOm2q8kq2fIFD7anQhetpp8dw235Hx2/iqdGCzDOtjsr88R0g== x-ms-exchange-transport-crosstenantheadersstamped: BL1PR11MB6051 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: intel.com X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org snip > @@ -1695,17 +1699,16 @@ xsk_configure(struct pmd_internals *internals, > struct pkt_rx_queue *rxq, > } > > if (internals->use_cni) { > - int err, fd, map_fd; > + int err, map_fd; > > - /* get socket fd from CNI plugin */ > - map_fd =3D get_cni_fd(internals->if_name); > + /* get socket fd from AF_XDP Device Plugin */ > + map_fd =3D uds_get_xskmap_fd(internals->if_name, internals- > >dp_path); > if (map_fd < 0) { > - AF_XDP_LOG(ERR, "Failed to receive CNI plugin fd\n"= ); > + AF_XDP_LOG(ERR, "Failed to receive xskmap fd from > AF_XDP Device Plugin\n"); > goto out_xsk; > } > - /* get socket fd */ > - fd =3D xsk_socket__fd(rxq->xsk); > - err =3D bpf_map_update_elem(map_fd, &rxq->xsk_queue_idx, > &fd, 0); > + > + err =3D xsk_socket__update_xskmap(rxq->xsk, map_fd); Hi Maryam, I've reviewed the series again. I haven't tested the device-plugin specific= functionality as I don't have that environment set up, but outside of that= I am happy that the new functionality doesn't break anything else. The doc= updates look good to me now, thank you for the fixes. I have just spotted one issue and I apologise for only catching it now. Patch 2 introduces a dependency on the xsk_socket__update_xskmap function w= hich is available in: libbpf >=3D v0.3.0 and <=3D v0.6.0 libxdp > v1.2.0 The af_xdp.rst guide states we are compatible with libbpf (on it's own) <= =3D v0.6.0. So users using libbpf < v0.3.0 will get an undefined reference = warning for the xsk_socket__update_xskmap function. Is it possible to implement fallback functionality (or if that's not possib= le, bail out) if that function is not available? See how this is done for t= he xsk_socket__create_shared function in meson.build and compat.h. Thanks, Ciara > if (err) { > AF_XDP_LOG(ERR, "Failed to insert unprivileged xsk = in > map.\n"); > goto out_xsk; > @@ -1881,13 +1884,13 @@ static const struct eth_dev_ops ops =3D { > .get_monitor_addr =3D eth_get_monitor_addr, > }; > > -/* CNI option works in unprivileged container environment > - * and ethernet device functionality will be reduced. So > - * additional customiszed eth_dev_ops struct is needed > - * for cni. Promiscuous enable and disable functionality > - * is removed. > +/* AF_XDP Device Plugin option works in unprivileged > + * container environments and ethernet device functionality > + * will be reduced. So additional customised eth_dev_ops > + * struct is needed for the Device Plugin. Promiscuous > + * enable and disable functionality is removed. > **/ > -static const struct eth_dev_ops ops_cni =3D { > +static const struct eth_dev_ops ops_afxdp_dp =3D { > .dev_start =3D eth_dev_start, > .dev_stop =3D eth_dev_stop, > .dev_close =3D eth_dev_close, > @@ -2023,7 +2026,8 @@ xdp_get_channels_info(const char *if_name, int > *max_queues, > static int > parse_parameters(struct rte_kvargs *kvlist, char *if_name, int *start_qu= eue, > int *queue_cnt, int *shared_umem, char *prog_path, > - int *busy_budget, int *force_copy, int *use_cni) > + int *busy_budget, int *force_copy, int *use_cni, > + char *dp_path) > { > int ret; > > @@ -2069,6 +2073,11 @@ parse_parameters(struct rte_kvargs *kvlist, char > *if_name, int *start_queue, > if (ret < 0) > goto free_kvlist; > > + ret =3D rte_kvargs_process(kvlist, ETH_AF_XDP_DP_PATH_ARG, > + &parse_prog_arg, dp_path); > + if (ret < 0) > + goto free_kvlist; > + > free_kvlist: > rte_kvargs_free(kvlist); > return ret; > @@ -2108,7 +2117,7 @@ static struct rte_eth_dev * > init_internals(struct rte_vdev_device *dev, const char *if_name, > int start_queue_idx, int queue_cnt, int shared_umem, > const char *prog_path, int busy_budget, int force_copy, > - int use_cni) > + int use_cni, const char *dp_path) > { > const char *name =3D rte_vdev_device_name(dev); > const unsigned int numa_node =3D dev->device.numa_node; > @@ -2138,6 +2147,7 @@ init_internals(struct rte_vdev_device *dev, const > char *if_name, > internals->shared_umem =3D shared_umem; > internals->force_copy =3D force_copy; > internals->use_cni =3D use_cni; > + strlcpy(internals->dp_path, dp_path, PATH_MAX); > > if (xdp_get_channels_info(if_name, &internals->max_queue_cnt, > &internals->combined_queue_cnt)) { > @@ -2199,7 +2209,7 @@ init_internals(struct rte_vdev_device *dev, const > char *if_name, > if (!internals->use_cni) > eth_dev->dev_ops =3D &ops; > else > - eth_dev->dev_ops =3D &ops_cni; > + eth_dev->dev_ops =3D &ops_afxdp_dp; > > eth_dev->rx_pkt_burst =3D eth_af_xdp_rx; > eth_dev->tx_pkt_burst =3D eth_af_xdp_tx; > @@ -2328,6 +2338,7 @@ rte_pmd_af_xdp_probe(struct rte_vdev_device > *dev) > int busy_budget =3D -1, ret; > int force_copy =3D 0; > int use_cni =3D 0; > + char dp_path[PATH_MAX] =3D {'\0'}; > struct rte_eth_dev *eth_dev =3D NULL; > const char *name =3D rte_vdev_device_name(dev); > > @@ -2370,7 +2381,7 @@ rte_pmd_af_xdp_probe(struct rte_vdev_device > *dev) > > if (parse_parameters(kvlist, if_name, &xsk_start_queue_idx, > &xsk_queue_cnt, &shared_umem, prog_path, > - &busy_budget, &force_copy, &use_cni) < 0) { > + &busy_budget, &force_copy, &use_cni, dp_path) = < > 0) { > AF_XDP_LOG(ERR, "Invalid kvargs value\n"); > return -EINVAL; > } > @@ -2384,7 +2395,19 @@ rte_pmd_af_xdp_probe(struct rte_vdev_device > *dev) > if (use_cni && strnlen(prog_path, PATH_MAX)) { > AF_XDP_LOG(ERR, "When '%s' parameter is used, '%s' > parameter is not valid\n", > ETH_AF_XDP_USE_CNI_ARG, > ETH_AF_XDP_PROG_ARG); > - return -EINVAL; > + return -EINVAL; > + } > + > + if (use_cni && !strnlen(dp_path, PATH_MAX)) { > + snprintf(dp_path, sizeof(dp_path), "%s/%s/%s", > DP_BASE_PATH, if_name, DP_UDS_SOCK); > + AF_XDP_LOG(INFO, "'%s' parameter not provided, setting > value to '%s'\n", > + ETH_AF_XDP_DP_PATH_ARG, dp_path); > + } > + > + if (!use_cni && strnlen(dp_path, PATH_MAX)) { > + AF_XDP_LOG(ERR, "'%s' parameter is set, but '%s' was not > enabled\n", > + ETH_AF_XDP_DP_PATH_ARG, > ETH_AF_XDP_USE_CNI_ARG); > + return -EINVAL; > } > > if (strlen(if_name) =3D=3D 0) { > @@ -2410,7 +2433,7 @@ rte_pmd_af_xdp_probe(struct rte_vdev_device > *dev) > > eth_dev =3D init_internals(dev, if_name, xsk_start_queue_idx, > xsk_queue_cnt, shared_umem, prog_path, > - busy_budget, force_copy, use_cni); > + busy_budget, force_copy, use_cni, dp_path)= ; > if (eth_dev =3D=3D NULL) { > AF_XDP_LOG(ERR, "Failed to init internals\n"); > return -1; > @@ -2471,4 +2494,5 @@ RTE_PMD_REGISTER_PARAM_STRING(net_af_xdp, > "xdp_prog=3D " > "busy_budget=3D " > "force_copy=3D " > - "use_cni=3D "); > + "use_cni=3D " > + "dp_path=3D "); > -- > 2.41.0