Hi, > -----Original Message----- > From: pbhagavat...@marvell.com <pbhagavat...@marvell.com> > Sent: Wednesday, April 5, 2023 3:14 PM > To: jer...@marvell.com; Naga Harish K, S V <s.v.naga.haris...@intel.com> > Cc: dev@dpdk.org; Pavan Nikhilesh <pbhagavat...@marvell.com> > Subject: [PATCH v2] eventdev/eth_rx: fix invalid memory access >
Which invalid memory access are you referring to? > From: Pavan Nikhilesh <pbhagavat...@marvell.com> > > Rx adapter internal service structures are only initialized when non-internal > port is added to the adapter. > Check if Rx adapter service is initialized to determine if runtime set/get > parameters are supported. > > Fixes: 3716f52186af ("eventdev/eth_rx: support runtime set/get > parameters") > > Signed-off-by: Pavan Nikhilesh <pbhagavat...@marvell.com> > --- > v2 Changes: > ---------- > - Remove unused variables. > - Fix spell check. > > app/test/test_event_eth_rx_adapter.c | 2 ++ > lib/eventdev/rte_event_eth_rx_adapter.c | 24 ++++-------------------- > 2 files changed, 6 insertions(+), 20 deletions(-) > > diff --git a/app/test/test_event_eth_rx_adapter.c > b/app/test/test_event_eth_rx_adapter.c > index cfe6052d7e..b1775e6af1 100644 > --- a/app/test/test_event_eth_rx_adapter.c > +++ b/app/test/test_event_eth_rx_adapter.c > @@ -1230,6 +1230,8 @@ adapter_get_set_params(void) > /* Case 1: Get the default value of mbufs processed by Rx adapter */ > err = > rte_event_eth_rx_adapter_runtime_params_get(TEST_INST_ID, > &out_params); > + if (err == -ENOTSUP) The queue needs to be deleted from the adapter instance before returning, otherwise teardown fails as adapter_free fails because all the queues are not deleted. > + return TEST_SKIPPED; > TEST_ASSERT(err == 0, "Expected 0 got %d", err); > > /* Case 2: Set max_nb_rx = 32 (=BATCH_SEIZE) */ diff --git > a/lib/eventdev/rte_event_eth_rx_adapter.c > b/lib/eventdev/rte_event_eth_rx_adapter.c > index c1cd124002..a8a5564b65 100644 > --- a/lib/eventdev/rte_event_eth_rx_adapter.c > +++ b/lib/eventdev/rte_event_eth_rx_adapter.c > @@ -3466,30 +3466,14 @@ > rte_event_eth_rx_adapter_instance_get(uint16_t eth_dev_id, static int > rxa_caps_check(struct event_eth_rx_adapter *rxa) { > - uint16_t eth_dev_id; > - uint32_t caps = 0; > - int ret; > - > if (!rxa->nb_queues) > return -EINVAL; > > - /* The eth_dev used is always of same type. > - * Hence eth_dev_id is taken from first entry of poll array. > - */ > - eth_dev_id = rxa->eth_rx_poll[0].eth_dev_id; > - ret = rte_event_eth_rx_adapter_caps_get(rxa->eventdev_id, > - eth_dev_id, > - &caps); > - if (ret) { > - RTE_EDEV_LOG_ERR("Failed to get adapter caps edev %" > PRIu8 > - "eth port %" PRIu16, rxa->eventdev_id, eth_dev_id); > - return ret; > - } > - > - if (caps & RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT) > - return -ENOTSUP; > + /* Check if there is at least one non-internal ethernet port. */ > + if (rxa->service_inited) > + return 0; > > - return 0; > + return -ENOTSUP; > } > > int > -- > 2.25.1