[dpdk-dev] [PATCH v3 1/2] net/i40e: queue region set and flush

Zhao1, Wei wei.zhao1 at intel.com
Tue Sep 26 10:54:55 CEST 2017


Hi,  Ferruh



> -----Original Message-----

> From: Yigit, Ferruh

> Sent: Wednesday, September 20, 2017 6:36 PM

> To: Zhao1, Wei <wei.zhao1 at intel.com>; dev at dpdk.org

> Subject: Re: [dpdk-dev] [PATCH v3 1/2] net/i40e: queue region set and flush

>

> On 9/15/2017 4:13 AM, Wei Zhao wrote:

> > This feature enable queue regions configuration for RSS in PF/VF, so

> > that different traffic classes or different packet classification

> > types can be separated to different queues in different queue

> > regions.This patch can set queue region range, it include queue number

> > in a region and the index of first queue.

>

> Is following correct:

> So instead of distributing packets to the multiple queues, this will distribute

> packets into queue reqions which may consists of multiple queues.

>

> If so, is there a way to control how packets distributed within same queue

> region to multiple queues?

>

> And is this feature only supported with RSS? Can it be part of RSS

> configuration instead of PMD specific API?

>

> > This patch enable mapping between different priorities (UP) and

>

> User priorities (UP)

>

> > different traffic classes.It also enable mapping between a region

> > index and a sepcific flowtype(PCTYPE).It also provide the solution of

> > flush all configuration about queue region the above described.

> >

> > Signed-off-by: Wei Zhao <wei.zhao1 at intel.com<mailto:wei.zhao1 at intel.com>>

> > ---

> >  drivers/net/i40e/i40e_ethdev.c            |  19 +-

> >  drivers/net/i40e/i40e_ethdev.h            |  30 ++

> >  drivers/net/i40e/rte_pmd_i40e.c           | 482

> ++++++++++++++++++++++++++++++

> >  drivers/net/i40e/rte_pmd_i40e.h           |  38 +++

> >  drivers/net/i40e/rte_pmd_i40e_version.map |   1 +

> >  5 files changed, 566 insertions(+), 4 deletions(-)

> >

>

> <...>

>

> > +static int

> > +i40e_vsi_update_queue_region_mapping(struct i40e_hw *hw,

> > +                                            struct i40e_pf *pf)

> > +{

> > +      uint16_t i;

> > +      struct i40e_vsi *vsi = pf->main_vsi;

> > +      uint16_t queue_offset, bsf, tc_index;

> > +      struct i40e_vsi_context ctxt;

> > +      struct i40e_aqc_vsi_properties_data *vsi_info;

> > +      struct i40e_queue_region_info *region_info =

> > +                                                      &pf->queue_region;

> > +      uint32_t ret = -EINVAL;

> > +

> > +      if (!region_info->queue_region_number) {



....................



> > +int rte_pmd_i40e_queue_region_conf(uint8_t port,

> > +                                      struct rte_i40e_rss_region_conf *conf_ptr) {

> > +      struct rte_eth_dev *dev = &rte_eth_devices[port];

>

> you need to verify port_id, since this is public API now. Please check other

> APIs in this file.



I have already "if (!is_i40e_supported(dev))" code in v3 in function  rte_pmd_i40e_queue_region_conf.

So, I do not know what is your meaning.







>

> > +      struct i40e_pf *pf = I40E_DEV_PRIVATE_TO_PF(dev->data-

> >dev_private);

> > +      struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data-

> >dev_private);

> > +      enum rte_pmd_i40e_queue_region_op op_type = conf_ptr->op;

> > +      uint32_t ret;

>

> This should be signed variable, since you are using it for return and assigning

> negative values.

>

> > +

> > +      if (!is_i40e_supported(dev))

> > +                      return -ENOTSUP;

> > +

> > +      switch (op_type) {

> > +      case RTE_PMD_I40E_QUEUE_REGION_SET:

> > +                      ret = i40e_set_queue_region(pf, conf_ptr);

> > +                      break;

>




More information about the dev mailing list