[U-Boot] [PATCH 09/10] net: mvpp2x: remove TX drain from transmit routine

Joe Hershberger joe.hershberger at ni.com
Tue Aug 8 16:15:19 UTC 2017


On Wed, Jun 21, 2017 at 3:31 AM,  <stefanc at malvell.com> wrote:
> From: Stefan Chulski <stefanc at marvell.com>
>
> TX drain in transmit procedure could cause issues due
> to race between drain procedure and transmition of descriptor
> between AGGR TXQ and physical TXQ.
> TXQ be cleared before moving to Linux by stop procedure.

TXQ be cleared -> TXQ will be cleared

>
> Change-Id: I1d52cf087505d35d8a10e0249f78d0177a569658
> Signed-off-by: Stefan Chulski <stefanc at marvell.com>
> Reviewed-on: http://vgitil04.il.marvell.com:8080/39968
> Tested-by: iSoC Platform CI <ykjenk at marvell.com>
> Reviewed-by: Nadav Haklai <nadavh at marvell.com>
> Reviewed-on: http://vgitil04.il.marvell.com:8080/39955
> Reviewed-by: Igal Liberman <igall at marvell.com>

Acked-by: Joe Hershberger <joe.hershberger at ni.com>

> ---
>  drivers/net/mvpp2.c | 21 ---------------------
>  1 file changed, 21 deletions(-)
>
> diff --git a/drivers/net/mvpp2.c b/drivers/net/mvpp2.c
> index 931047e..8168539 100644
> --- a/drivers/net/mvpp2.c
> +++ b/drivers/net/mvpp2.c
> @@ -5261,21 +5261,6 @@ static int mvpp2_recv(struct udevice *dev, int flags, uchar **packetp)
>         return rx_bytes;
>  }
>
> -/* Drain Txq */
> -static void mvpp2_txq_drain(struct mvpp2_port *port, struct mvpp2_tx_queue *txq,
> -                           int enable)
> -{
> -       u32 val;
> -
> -       mvpp2_write(port->priv, MVPP2_TXQ_NUM_REG, txq->id);
> -       val = mvpp2_read(port->priv, MVPP2_TXQ_PREF_BUF_REG);
> -       if (enable)
> -               val |= MVPP2_TXQ_DRAIN_EN_MASK;
> -       else
> -               val &= ~MVPP2_TXQ_DRAIN_EN_MASK;
> -       mvpp2_write(port->priv, MVPP2_TXQ_PREF_BUF_REG, val);
> -}
> -
>  static int mvpp2_send(struct udevice *dev, void *packet, int length)
>  {
>         struct mvpp2_port *port = dev_get_priv(dev);
> @@ -5319,9 +5304,6 @@ static int mvpp2_send(struct udevice *dev, void *packet, int length)
>                 tx_done = mvpp2_txq_pend_desc_num_get(port, txq);
>         } while (tx_done);
>
> -       /* Enable TXQ drain */
> -       mvpp2_txq_drain(port, txq, 1);
> -
>         timeout = 0;
>         do {
>                 if (timeout++ > 10000) {
> @@ -5331,9 +5313,6 @@ static int mvpp2_send(struct udevice *dev, void *packet, int length)
>                 tx_done = mvpp2_txq_sent_desc_proc(port, txq);
>         } while (!tx_done);
>
> -       /* Disable TXQ drain */
> -       mvpp2_txq_drain(port, txq, 0);
> -
>         return 0;
>  }
>
> --
> 1.9.1
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot


More information about the U-Boot mailing list