[Patch net-next 4/4] net: fec: Workaround for imx6sx enet tx hang when enable three queues
David Miller
davem at davemloft.net
Mon Sep 15 14:35:09 PDT 2014
From: <Frank.Li at freescale.com>
Date: Tue, 16 Sep 2014 01:12:57 +0800
> @@ -111,6 +111,13 @@ static void fec_enet_itr_coal_init(struct net_device *ndev);
> * independent rings
> */
> #define FEC_QUIRK_HAS_AVB (1 << 8)
> +/*
> + * There is a TDAR race condition for mutliQ when the software sets TDAR
> + * and the UDMA clears TDAR simultaneously or in a small window (2-4 cycles).
> + * This will cause the udma_tx and udma_tx_arbiter state machines to hang.
> + * The issue exist at i.MX6SX enet IP.
> + */
> +#define FEC_QUIRK_TKT210582 (1 << 9)
Networking comments should be of the form:
/* Like
* this.
*/
> /* Trigger transmission start */
> - writel(0, fep->hwp + FEC_X_DES_ACTIVE(queue));
> + if (!(id_entry->driver_data & FEC_QUIRK_TKT210582) ||
> + !readl(fep->hwp + FEC_X_DES_ACTIVE(queue)) ||
> + !readl(fep->hwp + FEC_X_DES_ACTIVE(queue)) ||
> + !readl(fep->hwp + FEC_X_DES_ACTIVE(queue)) ||
> + !readl(fep->hwp + FEC_X_DES_ACTIVE(queue)))
> + writel(0, fep->hwp + FEC_X_DES_ACTIVE(queue));
This conditional is not indented properly, see my feedback for patch #2.
More information about the linux-arm-kernel
mailing list