[dpdk-dev] [PATCH v8 7/9] test: add event timer adapter auto-test

Carrillo, Erik G erik.g.carrillo at intel.com
Fri Mar 30 20:47:40 CEST 2018


Hi Pavan,

> -----Original Message-----
> From: Bhagavatula, Pavan [mailto:Pavan.Bhagavatula at cavium.com]
> Sent: Friday, March 30, 2018 10:49 AM
> To: Carrillo, Erik G <erik.g.carrillo at intel.com>; Jacob, Jerin
> <Jerin.JacobKollanukkaran at cavium.com>; nipun.gupta at nxp.com;
> hemant.agrawal at nxp.com
> Cc: dev at dpdk.org
> Subject: Re: [PATCH v8 7/9] test: add event timer adapter auto-test
> 
> Hi Erik,
> 
> Few comments below,
> 

<...snipped...>

> > +/* Test that adapter stops correctly. */ static int
> > +adapter_stop(void)
> > +{
> > +	uint32_t evdev_service_id, adapter_service_id;
> > +	struct rte_event_timer_adapter *l_adapter = NULL;
> > +
> Please use INTERNAL_PORT capability to determine if service core is
> required.
> 
 
Good catch.  I meant to remove the references to service ids here, so I've gone ahead and done that.

<...snipped...>

> > +stat_inc_reset_ev_enq(void)
> > +{
> > +	int ret, i, n;
> > +	int num_evtims = MAX_TIMERS;
> > +	struct rte_event_timer *evtims[num_evtims];
> > +	struct rte_event evs[BATCH_SIZE];
> > +	struct rte_event_timer_adapter_stats stats;
> > +	const struct rte_event_timer init_tim = {
> > +		.ev.op = RTE_EVENT_OP_NEW,
> > +		.ev.queue_id = TEST_QUEUE_ID,
> > +		.ev.sched_type = RTE_SCHED_TYPE_ATOMIC,
> > +		.ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL,
> > +		.ev.event_type =  RTE_EVENT_TYPE_TIMER,
> > +		.state = RTE_EVENT_TIMER_NOT_ARMED,
> > +		.timeout_ticks = 5,	// expire in .5 sec
> > +	};
> > +
> > +	ret = rte_mempool_get_bulk(eventdev_test_mempool, (void
> **)evtims,
> > +				   num_evtims);
> > +	TEST_ASSERT_EQUAL(ret, 0, "Failed to get array of timer objs: ret =
> %d",
> > +			  ret);
> > +
> > +	for (i = 0; i < num_evtims; i++) {
> > +		*evtims[i] = init_tim;
> > +		evtims[i]->ev.event_ptr = evtims[i];
> > +	}
> > +
> > +	ret = rte_event_timer_adapter_stats_get(timdev, &stats);
> > +	TEST_ASSERT_EQUAL(ret, 0, "Failed to get stats");
> > +	TEST_ASSERT_EQUAL((int)stats.ev_enq_count, 0, "Stats not clear at "
> > +			  "startup");
> > +
> > +	/* Test with the max value for the adapter */
> > +	ret = rte_event_timer_arm_burst(timdev, evtims, num_evtims);
> > +	TEST_ASSERT_EQUAL(ret, num_evtims,
> > +			  "Failed to arm all event timers: attempted = %d, "
> > +			  "succeeded = %d, rte_errno = %s",
> > +			  num_evtims, ret, rte_strerror(rte_errno));
> > +
> > +	rte_delay_ms(1000);
> > +
> > +#define MAX_TRIES 1000
> 
> Please make MAX_TRIES equivalent to num_evtims, here we are trying to
> deq 10 events in burst and assume it to succeed but in case event dev
> doesn't support burst mode event will be stuck as it will have only 1000 tries
> instead of 4096.

Good catch again - I'll make these changes.
 
<...snipped...>

> > +static int
> > +adapter_create_max(void)
> > +{
> > +	int i;
> > +	uint32_t svc_start_count, svc_end_count;
> > +	struct rte_event_timer_adapter *adapters[
> > +
> 	RTE_EVENT_TIMER_ADAPTER_NUM_MAX + 1];
> > +
> > +	struct rte_event_timer_adapter_conf conf = {
> > +		.event_dev_id = evdev,
> > +		// timer_adapter_id set in loop
> > +		.clk_src = RTE_EVENT_TIMER_ADAPTER_CPU_CLK,
> > +		.timer_tick_ns = NSECPERSEC / 10,
> > +		.max_tmo_ns = 180 * NSECPERSEC,
> > +		.nb_timers = MAX_TIMERS,
> > +		.flags = 0,
> > +	};
> > +
> > +	svc_start_count = rte_service_get_count();
> > +
> > +	/* This test expects that there are sufficient service IDs available
> > +	 * to be allocated. I.e., RTE_EVENT_TIMER_ADAPTER_NUM_MAX
> may need to
> > +	 * be less than RTE_SERVICE_NUM_MAX if anything else uses a
> service
> > +	 * (the SW event device, for example).
> > +	 */
> Same as above service use need to be dependent on INTERNAL_PORT
> capability.
> 
> Also, in software event dev case this can be a valid test but in case of a hw
> event dev RTE_EVENT_TIMER_ADAPTER_NUM_MAX number of event
> devicesmight not be binded to dpdk. Either we need to provide a API to
> check how many event devices are supported or use
> eventdev_timer_adapter_caps_get_t to get the number.
> 
> Thoughts?
> 

For now, I've modified the test case so that it returns ENOTSUP for the hw case.
But I like the idea of adding an API to query the count of devices.

Thanks,
Gabriel




More information about the dev mailing list