[dpdk-dev] [PATCH v2 3/6] eventdev: implement the northbound APIs

Jerin Jacob jerin.jacob at caviumnetworks.com
Wed Dec 14 07:28:37 CET 2016


On Thu, Dec 08, 2016 at 09:59:37AM +0000, Bruce Richardson wrote:
> On Wed, Dec 07, 2016 at 10:32:56PM +0530, Jerin Jacob wrote:
> > On Tue, Dec 06, 2016 at 05:17:12PM +0000, Bruce Richardson wrote:
> > > On Tue, Dec 06, 2016 at 09:22:17AM +0530, Jerin Jacob wrote:
> > > > This patch implements northbound eventdev API interface using
> > > > southbond driver interface
> > > > 
> > > > Signed-off-by: Jerin Jacob <jerin.jacob at caviumnetworks.com>
> > > > ---
> > > > +		/* Re allocate memory to store queue priority */
> > > > +		queues_prio = dev->data->queues_prio;
> > > > +		queues_prio = rte_realloc(queues_prio,
> > > > +				sizeof(queues_prio[0]) * nb_queues,
> > > > +				RTE_CACHE_LINE_SIZE);
> > > > +		if (queues_prio == NULL) {
> > > > +			RTE_EDEV_LOG_ERR("failed to realloc queue priority,"
> > > > +						" nb_queues %u", nb_queues);
> > > > +			return -(ENOMEM);
> > > > +		}
> > > > +		dev->data->queues_prio = queues_prio;
> > > > +
> > > > +		if (nb_queues > old_nb_queues) {
> > > > +			uint8_t new_qs = nb_queues - old_nb_queues;
> > > > +
> > > > +			memset(queues + old_nb_queues, 0,
> > > > +				sizeof(queues[0]) * new_qs);
> > > > +			memset(queues_prio + old_nb_queues, 0,
> > > > +				sizeof(queues_prio[0]) * new_qs);
> > > > +		}
> > > > +	} else if (dev->data->queues != NULL && nb_queues == 0) {
> > > > +		RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->queue_release, -ENOTSUP);
> > > > +
> > > > +		queues = dev->data->queues;
> > > > +		for (i = nb_queues; i < old_nb_queues; i++)
> > > > +			(*dev->dev_ops->queue_release)(queues[i]);
> > > > +	}
> > > > +
> > > > +	dev->data->nb_queues = nb_queues;
> > > > +	return 0;
> > > > +}
> > > > +
> > > While the ports array makes sense to have available at the top level of
> > > the API and allocated from rte_eventdev.c, I'm not seeing what the value
> > > of having the queues allocated at that level is. The only time the queue
> > > array is indexed by eventdev layer is when releasing a queue. Therefore,
> > > I suggest just saving the number of queues for sanity checking and let
> > > the queue array allocation and freeing be handled entirely in the
> > > drivers themselves.
> > 
> > I thought it would be useful for other drivers. I agree, If something is not
> > common across all the driver lets remove it from common code.
> > I will remove it in v3
> > 
> It's not a big deal for us - just an extra assignment we need to do in
> our code path, so if it provides benefit for your driver, leave it in. I

We don't use it either. I will remove it in v3

> just found it strange that that array was never really used by the
> eventdev APIs, which is why I thought it might be better as internal
> only.
> 
> /Bruce


More information about the dev mailing list