[dpdk-dev] [PATCH 1/2] eventdev: add event adapter for ethernet Rx queues

Rao, Nikhil nikhil.rao at intel.com
Wed Aug 16 07:06:35 CEST 2017


On 8/14/2017 4:41 PM, Jerin Jacob wrote:
> -----Original Message-----
>> Date: Mon, 14 Aug 2017 14:18:15 +0530
>> From: "Rao, Nikhil" <nikhil.rao at intel.com>
>> To: Jerin Jacob <jerin.jacob at caviumnetworks.com>, "Eads, Gage"
>>   <gage.eads at intel.com>
>> CC: "dev at dpdk.org" <dev at dpdk.org>, "thomas at monjalon.net"
>>   <thomas at monjalon.net>, "Richardson, Bruce" <bruce.richardson at intel.com>,
>>   "Van Haaren, Harry" <harry.van.haaren at intel.com>, "hemant.agrawal at nxp.com"
>>   <hemant.agrawal at nxp.com>, "nipun.gupta at nxp.com" <nipun.gupta at nxp.com>,
>>   "Vangati, Narender" <narender.vangati at intel.com>, "Gujjar, Abhinandan S"
>>   <abhinandan.gujjar at intel.com>
>> Subject: Re: [PATCH 1/2] eventdev: add event adapter for ethernet Rx queues
>> User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101
>>   Thunderbird/52.2.1
>>
>> On 8/10/2017 10:23 PM, Jerin Jacob wrote:
>>> -----Original Message-----
>>>> Date: Wed, 9 Aug 2017 19:24:30 +0000
>>>> From: "Eads, Gage" <gage.eads at intel.com>
>>>> Makes sense. Are you thinking the helper function would do stop + reconfig with additional port + start + setup port, or just setup the port with an ID the app supplies (only when a port is required, of course)? The second one could be done with little additional code -- the app just needs to check if an additional port is needed when configuring the eventdev, and another helper function could take a list of <eventdev, ethdev> pairs and return true if any don't have an inbuilt port.
>>>
>>> I am in favor adding more logic in helper function(I believe, first one ) so that it will help
>>> application reuse the helper functions for the normal case.
>>>
>>
>> Hi Jerin,
> 
> Hi Nikhil,
> 
>>
>> My understanding of the discussion above is that the simple API adapter
>> creation API is
>>
>> int rte_event_eth_rx_adapter_create(id, eventdev_id)
>>
>> And the raw API is
>>
>> typedef int (*rx_adapter_conf_cb) (id, eventdev_id,
>> 	struct rte_event_eth_rx_adapter_conf *conf, void *arg);
>>
>> struct rte_event_eth_rx_adapter_conf {
>> 	uint8_t rx_event_port_id;
>> 	uint32_t max_nb_rx;
>> };
>>
>> int rte_event_eth_rx_adapter_create_ext(id, eventdev_id, conf_cb,
>> 					conf_arg)
>>
>> The conf_cb is invoked if the rte_event_eth_rx_adapter_conf struct needs to
>> be filled out. the _create_ext() API is used internally by
>> rte_event_eth_rx_adapter_create()
>>
>> Does that look OK to you ?
> 
> Just elaborating with additional detail. Let me know my understating is correct
> or not?

Yes. Thanks for the clarification.

> 
> default_cb(id, eventdev_id, conf)
> {
> 
> 	conf->rx_event_port_id = rte_event_port() + 1;
> 	conf->max_nb_rx = ...;
> 	....
> }
> 
> rte_event_eth_rx_adapter_create(id, eventdev_id)
> {
> 	struct rte_event_eth_rx_adapter_conf default_conf_arg;
> 
> 	rte_event_eth_rx_adapter_create_ext(id, eventdev_id,
> 			default_cb, &default_conf_arg);
> }
> 
> Application is free to use rte_event_eth_rx_adapter_create() or
> rte_event_eth_rx_adapter_create_ext(). rte_event_eth_rx_adapter_create_ext()
> will be used by application when "default_cb" handler is not enough for
> the use cases.
> 
> 
>>
>> Nikhil
>>
> 



More information about the dev mailing list