[dpdk-dev] [PATCH v4 6/8] net/mlx4: separate Tx segment cases

Adrien Mazarguil adrien.mazarguil at 6wind.com
Thu Nov 2 14:43:02 CET 2017


On Tue, Oct 31, 2017 at 06:21:31PM +0000, Matan Azrad wrote:
> Optimize single segment case by processing it in different block which
> prevents checks, calculations and barriers relevant only for multi
> segment case.
> 
> Call a dedicated function for handling multi segments case.
> 
> Signed-off-by: Matan Azrad <matan at mellanox.com>
> Signed-off-by: Ophir Munk <ophirmu at mellanox.com>

One remaining comment below, besides that:

Acked-by: Adrien Mazarguil <adrien.mazarguil at 6wind.com>

> ---
>  drivers/net/mlx4/mlx4_rxtx.c | 236 +++++++++++++++++++++++++++----------------
>  1 file changed, 151 insertions(+), 85 deletions(-)
> 
> diff --git a/drivers/net/mlx4/mlx4_rxtx.c b/drivers/net/mlx4/mlx4_rxtx.c
<snip>
> +	/* Write the first DWORD of each TXBB save earlier. */
> +	if (pv_counter) {
> +		/* Need a barrier here before writing the byte_count. */
> +		rte_io_wmb();
> +		for (--pv_counter; pv_counter  >= 0; pv_counter--)
> +			pv[pv_counter].dseg->byte_count = pv[pv_counter].val;
> +	}
> +	/* Fill the control parameters for this packet. */
> +	ctrl->fence_size = (wqe_real_size >> 4) & 0x3f;
> +	return nr_txbbs;
> +}

Missing empty line here.

>  /**
>   * DPDK callback for Tx.
>   *
> @@ -261,10 +374,11 @@ struct pv {
>  	unsigned int i;
>  	unsigned int max;
>  	struct mlx4_sq *sq = &txq->msq;
> -	struct pv *pv = (struct pv *)txq->bounce_buf;
> +	int nr_txbbs;
<snip>

-- 
Adrien Mazarguil
6WIND


More information about the dev mailing list