-----Original Message-----
> Date: Thu, 13 Jul 2017 08:56:48 +0530
> From: "Rao, Nikhil" <nikhil....@intel.com>
> To: Jerin Jacob <jerin.ja...@caviumnetworks.com>
> CC: gage.e...@intel.com, dev@dpdk.org, tho...@monjalon.net,
>  bruce.richard...@intel.com, harry.van.haa...@intel.com,
>  hemant.agra...@nxp.com, nipun.gu...@nxp.com, narender.vang...@intel.com,
>  Abhinandan Gujjar <abhinandan.guj...@intel.com>, nikhil....@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 7/10/2017 4:11 PM, Jerin Jacob wrote:
> > -----Original Message-----
> > > 
> > > I also think that the application should be able to call create() with > 1
> > > ports. This would allow a single service to poll multiple NICs with WRR
> > > priority.
> > 
> > Good point.
> > 
> > Can we realize the same use case like below?
> > - Instead of applying WRR over multiple NIC ports and adding the logic in Rx
> >    adapter, How about applying the WRR over multiple service function and
> >    move the WRR logic to service function layer.
> > 
> > i.e
> > one adapter is
> > - one service function(adapter_queue_add() will be used to add more
> >    queues)
> > - one constant set of ops.
> > 
> > Advantages:
> > - WRR over service functions will be useful as other service functions
> > can utilize it as it is not strictly specific to Rx adapter.
> > - In order to work with, below mentioned use cases, RX adapter ops needs
> >    to be constant and it will decided on the _adapter_create where 
> > "eth_port_id"
> > and "dev_id" specified.
> > 
> > 1) Ethdev HW is not capable of injecting the packets and SW eventdev
> > driver(All existing ethdev PMD + drivers/event/sw PMD combination)
> > 2) Ethdev HW is not capable of injecting the packets and not compatible
> > HW eventdev driver(All existing ethdev PMD + driver/event/octeontx PMD
> > combination)
> > 3) Ethdev HW is capable of injecting the packet to compatible
> > HW eventdev driver.
> > 
> > - it will remove the below side effect(queue add/del API needs port_id)
> > 
> > Thoughts?
> 
> Re: Multiple ports within a adapter
> 
> 1)    1:N adapter:port can work if the op is constant across all the
>       ports (_adapter_create() gets to determine that)

Yes. But ops may not be constant, if we consider the above three models.

> 
>       WRR is specified on a per queue basis - The polling sequence
>       built from the weights of all queues in the adapter (across all
>       ports)
> 
> 
>       struct rte_event_eth_rx_adapter_queue_conf {
>       ...
>               uint16_t servicing_weight;
>       /**< Relative polling frequency of ethernet receive queue, if this
>        * is set to zero, the Rx queue is interrupt driven (unless rx queue
>        * interrupts are not enabled for the ethernet device)
>        */
>       ...
>       }
> 
>         The downside is that a port needs to be specified when        
>       add/deleting a queue. Another thought is to do away with
>       the concept of an adapter ID, and only use port IDs, but there
>       is a possibility for  2 Rx queues of the same port to be
>       associated with 2 different adapter IDs. from an API perspective
>       you could specify any of ports[i] in the info/conf() APIs and
>       that seems a bit odd.
> 
>       In summary, I agree, lets drop this idea.

OK. Great.

> 
> 
> 2)    Re: Service function implementation of WRR
> 
>       Within a service like the Rx adapter the notion of WRR is       
>       relative polling frequency of the ethernet receive queue,
>       polling a tap interface may be more heavy weight than the a HW
>       NIC PMD poll, so WRR for the Rx adapter  may not correlate with
>       CPU utilization i.e, if that is a metric for some other service.
>       If WRR is based on different metrics across services, I am not
>       sure how we would able to specify WRR across services. Perhaps
>       as services get more use, we maybe able to come up
>       some common requirements.
> 
> How about if multiple adapters can specify the same service,  
> function in the _configure() call. A service can run multiple
> adapters with WRR across all queues in the service ?

Yes, It make sense. With ops scheme, multiple adapter can have same
service. But, I am not sure, what you really meant by "in _configure()"
call. But in any case, We can model around whatever scheme that works for SW 
PMD.
HW scheme will have constrain on "Multiple ports within a adapter",
Except that constraint, everything else we can model around SW PMD
requirements.

Reply via email to