[dpdk-dev,v2,29/32] net/i40e: parse more VF parameter and configure

Message ID 1481081535-37448-30-git-send-email-wenzhuo.lu@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Ferruh Yigit
Headers

Checks

Context Check Description
checkpatch/checkpatch success coding style OK

Commit Message

Wenzhuo Lu Dec. 7, 2016, 3:32 a.m. UTC
  When VF requested to configure TX queue, a few parameters are
missed to be configured in PF host. This change have more
fields parsed and configured for TX context.

Signed-off-by: Chen Jing D(Mark) <jing.d.chen@intel.com>
---
 drivers/net/i40e/i40e_pf.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
  

Comments

Ferruh Yigit Dec. 7, 2016, 3:18 p.m. UTC | #1
On 12/7/2016 3:32 AM, Wenzhuo Lu wrote:
> When VF requested to configure TX queue, a few parameters are
> missed to be configured in PF host. This change have more
> fields parsed and configured for TX context.

What is the effect of missing Tx paramters configured?

If this cause a bug, this patch should be a fix.

> 
> Signed-off-by: Chen Jing D(Mark) <jing.d.chen@intel.com>
> ---
>  drivers/net/i40e/i40e_pf.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/i40e/i40e_pf.c b/drivers/net/i40e/i40e_pf.c
> index 8319c2c..1ad5ed1 100644
> --- a/drivers/net/i40e/i40e_pf.c
> +++ b/drivers/net/i40e/i40e_pf.c
> @@ -422,10 +422,12 @@
>  
>  	/* clear the context structure first */
>  	memset(&tx_ctx, 0, sizeof(tx_ctx));
> -	tx_ctx.new_context = 1;
>  	tx_ctx.base = txq->dma_ring_addr / I40E_QUEUE_BASE_ADDR_UNIT;
>  	tx_ctx.qlen = txq->ring_len;
>  	tx_ctx.rdylist = rte_le_to_cpu_16(vf->vsi->info.qs_handle[0]);
> +	tx_ctx.head_wb_ena = txq->headwb_enabled;
> +	tx_ctx.head_wb_addr = txq->dma_headwb_addr;
> +
>  	err = i40e_clear_lan_tx_queue_context(hw, abs_queue_id);
>  	if (err != I40E_SUCCESS)
>  		return err;
>
  
Chen, Jing D Dec. 7, 2016, 3:32 p.m. UTC | #2
Hi, Ferruh,

> -----Original Message-----
> From: Yigit, Ferruh
> Sent: Wednesday, December 7, 2016 11:19 PM
> To: Lu, Wenzhuo <wenzhuo.lu@intel.com>; dev@dpdk.org
> Cc: Chen, Jing D <jing.d.chen@intel.com>
> Subject: Re: [dpdk-dev] [PATCH v2 29/32] net/i40e: parse more VF parameter
> and configure
> 
> On 12/7/2016 3:32 AM, Wenzhuo Lu wrote:
> > When VF requested to configure TX queue, a few parameters are missed
> > to be configured in PF host. This change have more fields parsed and
> > configured for TX context.
> 
> What is the effect of missing Tx paramters configured?
> 
> If this cause a bug, this patch should be a fix.
> 
This need to analyze case by case. If PF driver is serving a DPDK VF client, 
the missing part is OK. If serving a Linux VF client, the missing part will 
cause some unexpected TX queue behaviors. 

So, this is an enhancement to support Linux VF client. 

> >
> > Signed-off-by: Chen Jing D(Mark) <jing.d.chen@intel.com>
> > ---
> >  drivers/net/i40e/i40e_pf.c | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/net/i40e/i40e_pf.c b/drivers/net/i40e/i40e_pf.c
> > index 8319c2c..1ad5ed1 100644
> > --- a/drivers/net/i40e/i40e_pf.c
> > +++ b/drivers/net/i40e/i40e_pf.c
> > @@ -422,10 +422,12 @@
> >
> >  	/* clear the context structure first */
> >  	memset(&tx_ctx, 0, sizeof(tx_ctx));
> > -	tx_ctx.new_context = 1;
> >  	tx_ctx.base = txq->dma_ring_addr / I40E_QUEUE_BASE_ADDR_UNIT;
> >  	tx_ctx.qlen = txq->ring_len;
> >  	tx_ctx.rdylist = rte_le_to_cpu_16(vf->vsi->info.qs_handle[0]);
> > +	tx_ctx.head_wb_ena = txq->headwb_enabled;
> > +	tx_ctx.head_wb_addr = txq->dma_headwb_addr;
> > +
> >  	err = i40e_clear_lan_tx_queue_context(hw, abs_queue_id);
> >  	if (err != I40E_SUCCESS)
> >  		return err;
> >
  

Patch

diff --git a/drivers/net/i40e/i40e_pf.c b/drivers/net/i40e/i40e_pf.c
index 8319c2c..1ad5ed1 100644
--- a/drivers/net/i40e/i40e_pf.c
+++ b/drivers/net/i40e/i40e_pf.c
@@ -422,10 +422,12 @@ 
 
 	/* clear the context structure first */
 	memset(&tx_ctx, 0, sizeof(tx_ctx));
-	tx_ctx.new_context = 1;
 	tx_ctx.base = txq->dma_ring_addr / I40E_QUEUE_BASE_ADDR_UNIT;
 	tx_ctx.qlen = txq->ring_len;
 	tx_ctx.rdylist = rte_le_to_cpu_16(vf->vsi->info.qs_handle[0]);
+	tx_ctx.head_wb_ena = txq->headwb_enabled;
+	tx_ctx.head_wb_addr = txq->dma_headwb_addr;
+
 	err = i40e_clear_lan_tx_queue_context(hw, abs_queue_id);
 	if (err != I40E_SUCCESS)
 		return err;