Re: [PATCH 1/2] eventdev: add event adapter for ethernet Rx queues
From: Rao, Nikhil <hidden>
Date: 2017-08-16 05:06:41
On 8/14/2017 4:41 PM, Jerin Jacob wrote:
-----Original Message-----quoted
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,quoted
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.quoted
Nikhil