[dpdk-dev] [PATCH 2/2] ixgbe: add memory barriers in vector rx/tx
Thomas Monjalon
thomas.monjalon at 6wind.com
Mon Aug 3 17:08:55 CEST 2015
2015-06-29 11:28, Ananyev, Konstantin:
> Hi Eric,
>
> > -----Original Message-----
> > From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Eric Kinzie
> > Sent: Thursday, June 25, 2015 7:26 PM
> > To: dev at dpdk.org
> > Subject: [dpdk-dev] [PATCH 2/2] ixgbe: add memory barriers in vector rx/tx
> >
> > Add write memory barrier before writing tail pointer.
> >
> > Fixes c95584dc2b18 ("ixgbe: new vectorized functions for Rx/Tx")
> >
> > Signed-off-by: Eric Kinzie <ehkinzie at gmail.com>
> > ---
> > drivers/net/ixgbe/ixgbe_rxtx_vec.c | 3 +++
> > 1 file changed, 3 insertions(+)
> >
> > diff --git a/drivers/net/ixgbe/ixgbe_rxtx_vec.c b/drivers/net/ixgbe/ixgbe_rxtx_vec.c
> > index abd10f6..b601de8 100644
> > --- a/drivers/net/ixgbe/ixgbe_rxtx_vec.c
> > +++ b/drivers/net/ixgbe/ixgbe_rxtx_vec.c
> > @@ -123,6 +123,7 @@ ixgbe_rxq_rearm(struct ixgbe_rx_queue *rxq)
> > (rxq->nb_rx_desc - 1) : (rxq->rxrearm_start - 1));
> >
> > /* Update the tail pointer on the NIC */
> > + rte_wmb();
> > IXGBE_PCI_REG_WRITE(rxq->rdt_reg_addr, rx_id);
> > }
> >
> > @@ -645,6 +646,8 @@ ixgbe_xmit_pkts_vec(void *tx_queue, struct rte_mbuf **tx_pkts,
> >
> > txq->tx_tail = tx_id;
> >
> > + /* update tail pointer */
> > + rte_wmb();
> > IXGBE_PCI_REG_WRITE(txq->tdt_reg_addr, txq->tx_tail);
> >
> > return nb_pkts;
>
>
> There were several discussions about that subject already:
> why fence is not necessary here for IA and why we don't want to put it here:
> That I suppose was the last one:
> http://dpdk.org/ml/archives/dev/2015-April/016463.html
> As I can see, Dong already submitted patches for that:
> http://dpdk.org/dev/patchwork/patch/5884/
> Though I didn't look at it closely yet.
It will be a good idea to re-open the topic of the cross-arch memory barriers
at the beginning of the 2.2 cycle.
Thanks
More information about the dev
mailing list