Thread (41 messages) 41 messages, 6 authors, 2017-09-04

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help