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 <ma...@mellanox.com> > Signed-off-by: Ophir Munk <ophi...@mellanox.com>
One remaining comment below, besides that: Acked-by: Adrien Mazarguil <adrien.mazarg...@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