From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by dpdk.space (Postfix) with ESMTP id 7DA3CA00E6 for ; Tue, 11 Jun 2019 10:58:46 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 6B3CB1C342; Tue, 11 Jun 2019 10:58:31 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by dpdk.org (Postfix) with ESMTP id 9C3D61C30D for ; Tue, 11 Jun 2019 10:58:28 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x5B8rMxt027511; Tue, 11 Jun 2019 01:58:27 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=REYyAJ4lwEzjBuqdZ5By8ZIfgTUwwN/tSO4RaGIArdc=; b=D2+s86vwUHuqVA/tBzpD48grCZ77qhwroEXiazEKv+3IZbd1+JdtatZvs/SuKV2LlnwR zT+GaUimDupf/9vASUOLuEj2nRwMz7gshJdhNAOqt9E1GXhqycJb/hTyM9SV5LzrajJg lMREW0PgNJ+0BRJyeLTZqh6+j1Y4qG9wmgwb+g5BeGQ5Tmb5dz4uCGS1Xk+w4rDV8wsI pC61Gg7Sooqg+EYVbzB/PtEZwSn3o0yAFK4qZB85RIRqzljoPVQgB7kldkkYWbAAx1Ll WazfSx9Y8IujdqMQT7AAYjs1gg6mU13bLUZclY7rbDzETBtjpR77jVuBdbbzC5JiPeUf qw== Received: from sc-exch02.marvell.com ([199.233.58.182]) by mx0b-0016f401.pphosted.com with ESMTP id 2t20f4sy44-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Tue, 11 Jun 2019 01:58:27 -0700 Received: from SC-EXCH02.marvell.com (10.93.176.82) by SC-EXCH02.marvell.com (10.93.176.82) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Tue, 11 Jun 2019 01:58:22 -0700 Received: from NAM04-BN3-obe.outbound.protection.outlook.com (104.47.46.53) by SC-EXCH02.marvell.com (10.93.176.82) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Tue, 11 Jun 2019 01:58:21 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector2-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=REYyAJ4lwEzjBuqdZ5By8ZIfgTUwwN/tSO4RaGIArdc=; b=frspKyLscKtxzS+EGXbLqkgttn5eo+ClLiqJZ1QwXYYR9r59VYFSjAbLQtxssWcUvAdcUlBdBV7MPXVtpZeF4nLBNl4Qu6yGuBBPStJZRmHMuoMVEDpnZpyVEiju3tX7Lp6JSJWO4b/CSMp3Pee4ODEhIbJsbGvQ80hzAQc6OH4= Received: from BN8PR18MB2691.namprd18.prod.outlook.com (20.179.72.94) by BN8PR18MB2835.namprd18.prod.outlook.com (20.179.74.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.17; Tue, 11 Jun 2019 08:58:21 +0000 Received: from BN8PR18MB2691.namprd18.prod.outlook.com ([fe80::b86e:d3b3:34b4:377e]) by BN8PR18MB2691.namprd18.prod.outlook.com ([fe80::b86e:d3b3:34b4:377e%5]) with mapi id 15.20.1965.017; Tue, 11 Jun 2019 08:58:21 +0000 From: Sunil Kumar Kori To: Anoob Joseph , Jerin Jacob Kollanukkaran , Nikhil Rao , "Erik Gabriel Carrillo" , Abhinandan Gujjar , Bruce Richardson , Pablo de Lara CC: Anoob Joseph , Narayana Prasad Raju Athreya , "dev@dpdk.org" , Lukas Bartosik , Pavan Nikhilesh Bhagavatula , Hemant Agrawal , "Nipun Gupta" , Harry van Haaren , =?iso-8859-1?Q?Mattias_R=F6nnblom?= , Liang Ma Thread-Topic: [EXT] [dpdk-dev] [PATCH 32/39] eventdev: add routine to launch eventmode workers Thread-Index: AQHVGjN9fcMu7B1sJEuGf9su64xRf6aWK1PA Date: Tue, 11 Jun 2019 08:58:20 +0000 Message-ID: References: <1559583160-13944-1-git-send-email-anoobj@marvell.com> <1559583160-13944-33-git-send-email-anoobj@marvell.com> In-Reply-To: <1559583160-13944-33-git-send-email-anoobj@marvell.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [14.140.231.66] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 756eac12-4886-4e7b-ac83-08d6ee4af42a x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:BN8PR18MB2835; x-ms-traffictypediagnostic: BN8PR18MB2835: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6108; x-forefront-prvs: 006546F32A x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(366004)(396003)(376002)(39860400002)(346002)(189003)(199004)(13464003)(446003)(186003)(52536014)(74316002)(476003)(99286004)(53936002)(26005)(7736002)(11346002)(25786009)(6506007)(7696005)(76116006)(305945005)(6116002)(4326008)(64756008)(81156014)(76176011)(3846002)(71200400001)(102836004)(66946007)(81166006)(71190400001)(66574012)(66446008)(6246003)(30864003)(66556008)(66476007)(256004)(14444005)(73956011)(9686003)(55236004)(478600001)(2906002)(5660300002)(86362001)(486006)(8936002)(68736007)(33656002)(110136005)(14454004)(54906003)(7416002)(229853002)(55016002)(66066001)(6436002)(316002); DIR:OUT; SFP:1101; SCL:1; SRVR:BN8PR18MB2835; H:BN8PR18MB2691.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: marvell.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: mrJ3JFF7MovhfBvqW7HIr/9a5/Z1NBZWMdgIU3g1LhU3Okj1z34wIvHfcLHuS2KxFtYbOghEo1ylN0E5N5ud8L8BR6w94NRNvgXdZQH2NMv6A8YX3GI+9DfpalkxNfOD1tdjHNLhJ4Hqzk0xkDyk7ziopHD7eb2rgHGQrSgnqDAhhVda+mnlgqQq21hxk4eDyvyGhq2nJDrFbYYmnLkuIzEkcnkYbZ7jRY7xnbSqXa2IW0bkKE0AlnDm/6PqJFiWJz59r6450rvB9eg7NlJicsJN5+T9cdQIlnludjQvE/kv7KKLTaMhz5GIzteS4+NIHhZZie9ieN6Zoc6B7bGZa3Jv8+SFMxuWxkmc/3a0jxEBCBvYoApmXPL5WpmXhFRM8PZNBp1/mvx88YbstlNS1fGzOS2jWLLdHhWmAfm/VCE= Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 756eac12-4886-4e7b-ac83-08d6ee4af42a X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Jun 2019 08:58:20.9832 (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: skori@marvell.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR18MB2835 X-OriginatorOrg: marvell.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-06-11_03:, , signatures=0 Subject: Re: [dpdk-dev] [EXT] [PATCH 32/39] eventdev: add routine to launch eventmode workers X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Regards Sunil Kumar Kori >-----Original Message----- >From: dev On Behalf Of Anoob Joseph >Sent: Monday, June 3, 2019 11:03 PM >To: Jerin Jacob Kollanukkaran ; Nikhil Rao >; Erik Gabriel Carrillo ; >Abhinandan Gujjar ; Bruce Richardson >; Pablo de Lara > >Cc: Anoob Joseph ; Narayana Prasad Raju Athreya >; dev@dpdk.org; Lukas Bartosik >; Pavan Nikhilesh Bhagavatula >; Hemant Agrawal >; Nipun Gupta ; Harry >van Haaren ; Mattias R=F6nnblom >; Liang Ma >Subject: [EXT] [dpdk-dev] [PATCH 32/39] eventdev: add routine to launch >eventmode workers > >External Email > >---------------------------------------------------------------------- >With eventmode, workers could be drafted differently according to the >capabilities of the underlying event device. The added function would rece= ive >an array of such workers and probes the eventmode properties to choose the >worker. > >Signed-off-by: Anoob Joseph >Signed-off-by: Lukasz Bartosik >--- > lib/librte_eventdev/rte_eventdev_version.map | 1 + > lib/librte_eventdev/rte_eventmode_helper.c | 240 >+++++++++++++++++++++ > lib/librte_eventdev/rte_eventmode_helper.h | 49 +++++ > .../rte_eventmode_helper_internal.h | 3 + > 4 files changed, 293 insertions(+) > >diff --git a/lib/librte_eventdev/rte_eventdev_version.map >b/lib/librte_eventdev/rte_eventdev_version.map >index 3cf926a..665836e 100644 >--- a/lib/librte_eventdev/rte_eventdev_version.map >+++ b/lib/librte_eventdev/rte_eventdev_version.map >@@ -135,4 +135,5 @@ EXPERIMENTAL { > rte_eventmode_helper_display_conf; > rte_eventmode_helper_get_event_lcore_links; > rte_eventmode_helper_get_tx_queue; >+ rte_eventmode_helper_launch_worker; > }; >diff --git a/lib/librte_eventdev/rte_eventmode_helper.c >b/lib/librte_eventdev/rte_eventmode_helper.c >index e7670e0..77a5a4e 100644 >--- a/lib/librte_eventdev/rte_eventmode_helper.c >+++ b/lib/librte_eventdev/rte_eventmode_helper.c >@@ -2,6 +2,7 @@ > * Copyright (C) 2019 Marvell International Ltd. > */ > #include >+#include > > #include > #include >@@ -13,6 +14,8 @@ > > #define CMD_LINE_OPT_TRANSFER_MODE "transfer-mode" > >+static volatile bool eth_core_running; >+ > static const char short_options[] =3D > "" > ; >@@ -111,6 +114,16 @@ internal_get_eventdev_params(struct >eventmode_conf *em_conf, > return &(em_conf->eventdev_config[i]); } > >+static inline bool >+internal_dev_has_burst_mode(uint8_t dev_id) { >+ struct rte_event_dev_info dev_info; >+ >+ rte_event_dev_info_get(dev_id, &dev_info); >+ return (dev_info.event_dev_cap & >RTE_EVENT_DEV_CAP_BURST_MODE) ? >+ true : false; >+} >+ > /* Global functions */ > > void __rte_experimental >@@ -980,3 +993,230 @@ rte_eventmode_helper_get_tx_queue(struct >rte_eventmode_helper_conf *mode_conf, > return eventdev_config->nb_eventqueue - 1; } > >+/* Helper functions for launching workers */ >+ >+static int32_t >+rte_eventmode_helper_start_worker_eth_core(struct eventmode_conf >*em_conf, >+ uint32_t lcore_id) Internal functions must not be prefixed with "rte_", >+{ >+ uint32_t service_id[EVENT_MODE_MAX_ADAPTERS_PER_RX_CORE]; >+ struct rx_adapter_conf *rx_adapter; >+ int service_count =3D 0; >+ int adapter_id; >+ int32_t ret; >+ int i; >+ >+ RTE_EM_HLPR_LOG_INFO( >+ "Entering eth_core processing on lcore %u", lcore_id); >+ >+ /* >+ * Need to parse adapter conf to see which of all Rx adapters need >+ * to be handled by this core. >+ */ >+ for (i =3D 0; i < em_conf->nb_rx_adapter; i++) { >+ /* Check if we have exceeded the max allowed */ >+ if (service_count > >EVENT_MODE_MAX_ADAPTERS_PER_RX_CORE) { >+ RTE_EM_HLPR_LOG_ERR( >+ "Exceeded the max allowed adapters per rx >core"); >+ break; >+ } >+ >+ rx_adapter =3D &(em_conf->rx_adapter[i]); >+ if (rx_adapter->rx_core_id !=3D lcore_id) >+ continue; >+ >+ /* Adapter need to be handled by this core */ >+ adapter_id =3D rx_adapter->adapter_id; >+ >+ /* Get the service ID for the adapters */ >+ ret =3D rte_event_eth_rx_adapter_service_id_get(adapter_id, >+ &(service_id[service_count])); >+ >+ if (ret !=3D -ESRCH && ret !=3D 0) { >+ RTE_EM_HLPR_LOG_ERR( >+ "Error getting service ID used by Rx adapter"); >+ return ret; >+ } >+ >+ /* Update service count */ >+ service_count++; >+ } >+ >+ eth_core_running =3D true; >+ >+ while (eth_core_running) { >+ for (i =3D 0; i < service_count; i++) { >+ /* Initiate adapter service */ >+ rte_service_run_iter_on_app_lcore(service_id[i], 0); >+ } >+ } >+ >+ return 0; >+} >+ >+static int32_t >+rte_eventmode_helper_stop_worker_eth_core(void) >+{ >+ if (eth_core_running) { >+ RTE_EM_HLPR_LOG_INFO("Stopping rx cores\n"); >+ eth_core_running =3D false; >+ } >+ return 0; >+} >+ >+static struct rte_eventmode_helper_app_worker_params * >+rte_eventmode_helper_find_worker(uint32_t lcore_id, >+ struct eventmode_conf *em_conf, >+ struct rte_eventmode_helper_app_worker_params >*app_wrkrs, >+ uint8_t nb_wrkr_param) >+{ >+ struct rte_eventmode_helper_event_link_info *link =3D NULL; >+ uint8_t eventdev_id; >+ struct eventdev_params *eventdev_config; >+ int i; >+ struct rte_eventmode_helper_app_worker_params curr_conf =3D { >+ {{0} }, NULL}; >+ struct rte_eventmode_helper_app_worker_params *tmp_wrkr; >+ >+ /* >+ * Event device to be used will be derived from the first lcore-event >+ * link. >+ * >+ * Assumption: All lcore-event links tied to a core would be using the >+ * same event device. in other words, one core would be polling on >+ * queues of a single event device only. >+ */ >+ >+ /* Get a link for this lcore */ >+ for (i =3D 0; i < em_conf->nb_link; i++) { >+ link =3D &(em_conf->link[i]); >+ if (link->lcore_id =3D=3D lcore_id) >+ break; >+ } >+ >+ if (link =3D=3D NULL) { >+ RTE_EM_HLPR_LOG_ERR( >+ "No valid link found for lcore(%d)", lcore_id); >+ return NULL; >+ } >+ >+ /* Get event dev ID */ >+ eventdev_id =3D link->eventdev_id; >+ >+ /* Get the corresponding eventdev config */ >+ eventdev_config =3D internal_get_eventdev_params(em_conf, >eventdev_id); >+ >+ /* Populate the curr_conf with the capabilities */ >+ >+ /* Check for burst mode */ >+ if (internal_dev_has_burst_mode(eventdev_id)) >+ curr_conf.cap.burst =3D >RTE_EVENTMODE_HELPER_RX_TYPE_BURST; >+ else >+ curr_conf.cap.burst =3D >RTE_EVENTMODE_HELPER_RX_TYPE_NON_BURST; >+ >+ /* Now parse the passed list and see if we have matching capabilities >+*/ >+ >+ /* Initialize the pointer used to traverse the list */ >+ tmp_wrkr =3D app_wrkrs; >+ >+ for (i =3D 0; i < nb_wrkr_param; i++, tmp_wrkr++) { >+ >+ /* Skip this if capabilities are not matching */ >+ if (tmp_wrkr->cap.u64 !=3D curr_conf.cap.u64) >+ continue; >+ >+ /* If the checks pass, we have a match */ >+ return tmp_wrkr; >+ } >+ >+ /* TODO required for ATQ */ >+ RTE_SET_USED(eventdev_config); >+ >+ return NULL; >+} >+ >+static int >+rte_eventmode_helper_verify_match_worker( >+ struct rte_eventmode_helper_app_worker_params *match_wrkr) { >+ /* Verify registered worker */ >+ if (match_wrkr->worker_thread =3D=3D NULL) { >+ RTE_EM_HLPR_LOG_ERR("No worker registered for second >stage"); >+ return 0; >+ } >+ >+ /* Success */ >+ return 1; >+} >+ >+void __rte_experimental >+rte_eventmode_helper_launch_worker(struct rte_eventmode_helper_conf >*mode_conf, >+ struct rte_eventmode_helper_app_worker_params >*app_wrkr, >+ uint8_t nb_wrkr_param) >+{ >+ struct rte_eventmode_helper_app_worker_params *match_wrkr; >+ uint32_t lcore_id; >+ struct eventmode_conf *em_conf; >+ >+ if (mode_conf =3D=3D NULL) { >+ RTE_EM_HLPR_LOG_ERR("Invalid conf"); >+ return; >+ } >+ >+ if (mode_conf->mode_params =3D=3D NULL) { >+ RTE_EM_HLPR_LOG_ERR("Invalid mode params"); >+ return; >+ } >+ >+ /* Get eventmode conf */ >+ em_conf =3D (struct eventmode_conf *)(mode_conf->mode_params); >+ >+ /* Get core ID */ >+ lcore_id =3D rte_lcore_id(); >+ >+ /* TODO check capability for rx core */ >+ >+ /* Check if this is rx core */ >+ if (em_conf->eth_core_mask & (1 << lcore_id)) { >+ rte_eventmode_helper_start_worker_eth_core(em_conf, >lcore_id); >+ return; >+ } >+ >+ if (app_wrkr =3D=3D NULL || nb_wrkr_param =3D=3D 0) { >+ RTE_EM_HLPR_LOG_ERR("Invalid args"); >+ return; >+ } >+ >+ /* >+ * This is a regular worker thread. The application would be >+ * registering multiple workers with various capabilities. The >+ * worker to be run will be selected by the capabilities of the >+ * event device configured. >+ */ >+ >+ /* Get the first matching worker for the event device */ >+ match_wrkr =3D rte_eventmode_helper_find_worker(lcore_id, >+ em_conf, >+ app_wrkr, >+ nb_wrkr_param); >+ >+ if (match_wrkr =3D=3D NULL) { >+ RTE_EM_HLPR_LOG_ERR( >+ "No matching worker registered for lcore %d", >lcore_id); >+ goto clean_and_exit; >+ } >+ >+ /* Verify sanity of the matched worker */ >+ if (rte_eventmode_helper_verify_match_worker(match_wrkr) !=3D 1) { >+ RTE_EM_HLPR_LOG_ERR("Error in validating the matched >worker"); >+ goto clean_and_exit; >+ } >+ >+ /* Launch the worker thread */ >+ match_wrkr->worker_thread(mode_conf); >+ >+clean_and_exit: >+ >+ /* Flag eth_cores to stop, if started */ >+ rte_eventmode_helper_stop_worker_eth_core(); >+} >diff --git a/lib/librte_eventdev/rte_eventmode_helper.h >b/lib/librte_eventdev/rte_eventmode_helper.h >index cd6d708..1235ca4 100644 >--- a/lib/librte_eventdev/rte_eventmode_helper.h >+++ b/lib/librte_eventdev/rte_eventmode_helper.h >@@ -17,6 +17,20 @@ enum rte_eventmode_helper_pkt_transfer_mode { > RTE_EVENTMODE_HELPER_PKT_TRANSFER_MODE_EVENT, > }; > >+/* Event mode packet rx types */ >+enum rte_eventmode_helper_rx_types { >+ RTE_EVENTMODE_HELPER_RX_TYPE_INVALID =3D 0, >+ RTE_EVENTMODE_HELPER_RX_TYPE_NON_BURST, >+ RTE_EVENTMODE_HELPER_RX_TYPE_BURST, >+ RTE_EVENTMODE_HELPER_RX_TYPE_MAX =3D 16 >+}; >+ >+/* Event mode packet tx types */ >+enum rte_eventmode_helper_tx_types { >+ RTE_EVETNMODE_HELPER_TX_TYPE_INVALID =3D 0, >+ RTE_EVENTMODE_HELPER_TX_TYPE_MAX =3D 16 >+}; >+ > struct rte_eventmode_helper_conf { > enum rte_eventmode_helper_pkt_transfer_mode mode; > /**< Packet transfer mode of the application */ @@ -41,6 >+55,20 @@ struct rte_eventmode_helper_event_link_info { > /**< Lcore to be polling on this port */ }; > >+/* Workers registered by the application */ struct >+rte_eventmode_helper_app_worker_params { >+ union { >+ struct { >+ uint64_t burst : 4; >+ /**< Specify status of rx type burst */ >+ }; >+ uint64_t u64; >+ } cap; >+ /**< Capabilities of this worker */ >+ void (*worker_thread)(void *mode_conf); >+ /**< Worker thread */ >+}; >+ > /* Common helper functions for command line parsing */ > > /** >@@ -157,6 +185,27 @@ uint8_t __rte_experimental >rte_eventmode_helper_get_tx_queue(struct rte_eventmode_helper_conf >*mode_conf, > uint8_t eventdev_id); > >+/** >+ * Launch eventmode worker >+ * >+ * The application can request the eventmode helper subsystem to launch >+the >+ * worker based on the capabilities of event device and the options >+selected >+ * while initializing the eventmode. >+ * >+ * @param mode_conf >+ * Configuration of the mode in which app is doing packet handling >+ * @param app_wrkr >+ * List of all the workers registered by application, along with it's >+ * capabilities >+ * @param nb_wrkr_param >+ * Number of workers passed by the application >+ * >+ */ >+void __rte_experimental >+rte_eventmode_helper_launch_worker(struct rte_eventmode_helper_conf >*mode_conf, >+ struct rte_eventmode_helper_app_worker_params >*app_wrkr, >+ uint8_t nb_wrkr_param); >+ > #ifdef __cplusplus > } > #endif >diff --git a/lib/librte_eventdev/rte_eventmode_helper_internal.h >b/lib/librte_eventdev/rte_eventmode_helper_internal.h >index 499cf5d..906766c 100644 >--- a/lib/librte_eventdev/rte_eventmode_helper_internal.h >+++ b/lib/librte_eventdev/rte_eventmode_helper_internal.h >@@ -48,6 +48,9 @@ > #define EVENT_MODE_MAX_LCORE_LINKS \ > (EVENT_MODE_MAX_EVENT_DEVS * >EVENT_MODE_MAX_EVENT_QUEUES_PER_DEV) > >+/* Max adapters that one Rx core can handle */ #define >+EVENT_MODE_MAX_ADAPTERS_PER_RX_CORE >EVENT_MODE_MAX_RX_ADAPTERS >+ > /* Event dev params */ > struct eventdev_params { > uint8_t eventdev_id; >-- >2.7.4