On 8/14/2017 4:41 PM, Jerin Jacob wrote:
-----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?

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.



Nikhil



Reply via email to