Re: [PATCH 1/2] eventdev: add event adapter for ethernet Rx queues
From: Jerin Jacob <hidden>
Date: 2017-08-14 11:12:09
-----Original Message-----
Date: Mon, 14 Aug 2017 14:18:15 +0530 From: "Rao, Nikhil" <redacted> To: Jerin Jacob <redacted>, "Eads, Gage" [off-list ref] CC: "dev@dpdk.org" <redacted>, "thomas@monjalon.net" [off-list ref], "Richardson, Bruce" [off-list ref], "Van Haaren, Harry" [off-list ref], "hemant.agrawal@nxp.com" [off-list ref], "nipun.gupta@nxp.com" [off-list ref], "Vangati, Narender" [off-list ref], "Gujjar, Abhinandan S" [off-list ref] 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:quoted
-----Original Message-----quoted
Date: Wed, 9 Aug 2017 19:24:30 +0000 From: "Eads, Gage" <redacted> 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