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

Jerin Jacob jerin.jacob at caviumnetworks.com
Mon Aug 14 13:11:46 CEST 2017


-----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?

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