-----Original Message----- > Date: Mon, 14 Aug 2017 14:18:15 +0530 > From: "Rao, Nikhil" <nikhil....@intel.com> > To: Jerin Jacob <jerin.ja...@caviumnetworks.com>, "Eads, Gage" > <gage.e...@intel.com> > CC: "dev@dpdk.org" <dev@dpdk.org>, "tho...@monjalon.net" > <tho...@monjalon.net>, "Richardson, Bruce" <bruce.richard...@intel.com>, > "Van Haaren, Harry" <harry.van.haa...@intel.com>, "hemant.agra...@nxp.com" > <hemant.agra...@nxp.com>, "nipun.gu...@nxp.com" <nipun.gu...@nxp.com>, > "Vangati, Narender" <narender.vang...@intel.com>, "Gujjar, Abhinandan S" > <abhinandan.guj...@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.e...@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 >