> -----Original Message----- > From: Jerin Jacob [mailto:jerin.ja...@caviumnetworks.com] > Sent: Saturday, December 1, 2018 8:09 PM > To: Rao, Nikhil <nikhil....@intel.com> > Cc: dev@dpdk.org; sta...@dpdk.org > Subject: Re: [PATCH] eventdev: fix eth Tx adapter queue count checks > > -----Original Message----- > > Date: Thu, 29 Nov 2018 16:41:48 +0530 > > From: Nikhil Rao <nikhil....@intel.com> > > To: jerin.ja...@caviumnetworks.com > > CC: dev@dpdk.org, Nikhil Rao <nikhil....@intel.com>, sta...@dpdk.org > > Subject: [PATCH] eventdev: fix eth Tx adapter queue count checks > > X-Mailer: git-send-email 1.8.3.1 > > > > > > rte_event_eth_tx_adapter_queue_add() - add a check that returns an > > error if the ethdev the zero Tx queues configured. > > > > rte_event_eth_tx_adapter_queue_del() - remove the checks for ethdev > > queue count, instead check for queues added to the adapter which maybe > > different from the current ethdev queue count. > > > > Fixes: a3bbf2e09756 ("eventdev: add eth Tx adapter implementation") > > Cc: sta...@dpdk.org > > Signed-off-by: Nikhil Rao <nikhil....@intel.com> > > --- > > lib/librte_eventdev/rte_event_eth_tx_adapter.c | 53 > > +++++++++++++++++--------- > > 1 file changed, 36 insertions(+), 17 deletions(-) > > > > diff --git a/lib/librte_eventdev/rte_event_eth_tx_adapter.c > > b/lib/librte_eventdev/rte_event_eth_tx_adapter.c > > index ccf8a75..8431656 100644 > > --- a/lib/librte_eventdev/rte_event_eth_tx_adapter.c > > +++ b/lib/librte_eventdev/rte_event_eth_tx_adapter.c > > @@ -59,6 +59,19 @@ > > return -EINVAL; \ > > } while (0) > > > > +#define TXA_CHECK_TXQ(dev, queue) \ > > +do {\ > > + if ((dev)->data->nb_tx_queues == 0) { \ > > + RTE_EDEV_LOG_ERR("No tx queues configured"); \ > > + return -EINVAL; \ > > + } \ > > + if (queue != -1 && (uint16_t)queue >= > > +(dev)->data->nb_tx_queues) { \ > > The queue should be bracket i.e ((queue) != 1) to avoid any side effect >
Thanks. Will fix. > > + RTE_EDEV_LOG_ERR("Invalid tx queue_id %" PRIu16, \ > > + (uint16_t)queue); \ > > + return -EINVAL; \ > > + } \ > > +} while (0) > > + > > txa = txa_service_id_to_data(id); > > - port_id = dev->data->port_id; > > > > tqi = txa_service_queue(txa, port_id, tx_queue_id); > > if (tqi == NULL || !tqi->added) @@ -999,11 +1027,7 @@ static > > int txa_service_queue_del(uint8_t id, > > TXA_CHECK_OR_ERR_RET(id); > > > > eth_dev = &rte_eth_devices[eth_dev_id]; > > - if (queue != -1 && (uint16_t)queue >= eth_dev->data->nb_tx_queues) > { > > - RTE_EDEV_LOG_ERR("Invalid tx queue_id %" PRIu16, > > - (uint16_t)queue); > > - return -EINVAL; > > - } > > + TXA_CHECK_TXQ(eth_dev, queue); > > > > caps = 0; > > if (txa_dev_caps_get(id)) > > @@ -1034,11 +1058,6 @@ static int txa_service_queue_del(uint8_t id, > > TXA_CHECK_OR_ERR_RET(id); > > > > eth_dev = &rte_eth_devices[eth_dev_id]; > > - if (queue != -1 && (uint16_t)queue >= eth_dev->data->nb_tx_queues) > { > > - RTE_EDEV_LOG_ERR("Invalid tx queue_id %" PRIu16, > > - (uint16_t)queue); > > - return -EINVAL; > > - } > > Shouldn't we need TXA_CHECK_TXQ here? This patch updates the common queue delete code to handle queues that have been added to the adapter (so rte_event_eth_tx_adapter_queue_del() will also work after if its called after calling rte_eth_dev_close()) > If we need only one place, Do we > need macro? I won't say we need it, I had it originally in rte_event_eth_tx_adapter_queue_del() as well, I retained it since it eliminated clutter in rte_event_eth_tx_adapter_queue_add(). Nikhil