Message ID | 1381691821-25498-1-git-send-email-mpa@pengutronix.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
>>>>> "Markus" == Markus Pargmann <mpa@pengutronix.de> writes: Markus> If interrupts happen before napi_enable was called, the driver will not Markus> work as expected. Network transmissions are impossible in this state. Markus> This bug can be reproduced easily by restarting the network interface in Markus> a loop. After some time any network transmissions on the network Markus> interface will fail. Markus> This patch fixes the bug by enabling napi before enabling the network Markus> interface interrupts. Markus> Signed-off-by: Markus Pargmann <mpa@pengutronix.de> Acked-by: Peter Korsgaard <jacmet@sunsite.dk>
On Monday 14 October 2013 12:47 AM, Markus Pargmann wrote: > If interrupts happen before napi_enable was called, the driver will not > work as expected. Network transmissions are impossible in this state. > This bug can be reproduced easily by restarting the network interface in > a loop. After some time any network transmissions on the network > interface will fail. > > This patch fixes the bug by enabling napi before enabling the network > interface interrupts. > > Signed-off-by: Markus Pargmann <mpa@pengutronix.de> Acked-by: Mugunthan V N <mugunthanvnm@ti.com> Regards Mugunthan V N
From: Markus Pargmann <mpa@pengutronix.de> Date: Sun, 13 Oct 2013 21:17:01 +0200 > If interrupts happen before napi_enable was called, the driver will not > work as expected. Network transmissions are impossible in this state. > This bug can be reproduced easily by restarting the network interface in > a loop. After some time any network transmissions on the network > interface will fail. > > This patch fixes the bug by enabling napi before enabling the network > interface interrupts. > > Signed-off-by: Markus Pargmann <mpa@pengutronix.de> Applied, thanks.
diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c index 804846e..fccd9d4 100644 --- a/drivers/net/ethernet/ti/cpsw.c +++ b/drivers/net/ethernet/ti/cpsw.c @@ -1169,9 +1169,9 @@ static int cpsw_ndo_open(struct net_device *ndev) } } + napi_enable(&priv->napi); cpdma_ctlr_start(priv->dma); cpsw_intr_enable(priv); - napi_enable(&priv->napi); cpdma_ctlr_eoi(priv->dma, CPDMA_EOI_RX); cpdma_ctlr_eoi(priv->dma, CPDMA_EOI_TX);
If interrupts happen before napi_enable was called, the driver will not work as expected. Network transmissions are impossible in this state. This bug can be reproduced easily by restarting the network interface in a loop. After some time any network transmissions on the network interface will fail. This patch fixes the bug by enabling napi before enabling the network interface interrupts. Signed-off-by: Markus Pargmann <mpa@pengutronix.de> --- drivers/net/ethernet/ti/cpsw.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)