-----Original Message-----
> Date: Mon, 14 Aug 2017 14:18:15 +0530
> From: "Rao, Nikhil" <[email protected]>
> To: Jerin Jacob <[email protected]>, "Eads, Gage"
> <[email protected]>
> CC: "[email protected]" <[email protected]>, "[email protected]"
> <[email protected]>, "Richardson, Bruce" <[email protected]>,
> "Van Haaren, Harry" <[email protected]>, "[email protected]"
> <[email protected]>, "[email protected]" <[email protected]>,
> "Vangati, Narender" <[email protected]>, "Gujjar, Abhinandan S"
> <[email protected]>
> 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" <[email protected]>
> > > 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
>