Messages in this thread Patch in this message | | | Date | Wed, 14 Mar 2007 19:49:15 +0000 | From | broonie@sirena ... | Subject | [patch 3/3] natsemi: Avoid IntrStatus lossage if RX state machine resets. |
| |
This patch fixes the poll routine for the natsemi driver so that if the driver detects an RX state machine lockup then no interrupts will be lost while the driver recovers from that.
Signed-Off-By: Mark Brown <broonie@sirena.org.uk> Index: linux-2.6/drivers/net/natsemi.c =================================================================== --- linux-2.6.orig/drivers/net/natsemi.c 2007-03-13 19:38:31.000000000 +0000 +++ linux-2.6/drivers/net/natsemi.c 2007-03-13 19:39:08.000000000 +0000 @@ -2169,6 +2169,14 @@ dev->name, np->intr_status, readl(ioaddr + IntrMask)); + /* netdev_rx() may read IntrStatus again if the RX state + * machine falls over so do it first. */ + if (np->intr_status & + (IntrRxDone | IntrRxIntr | RxStatusFIFOOver | + IntrRxErr | IntrRxOverrun)) { + netdev_rx(dev, &work_done, work_to_do); + } + if (np->intr_status & (IntrTxDone | IntrTxIntr | IntrTxIdle | IntrTxErr)) { spin_lock(&np->lock); @@ -2180,12 +2188,6 @@ if (np->intr_status & IntrAbnormalSummary) netdev_error(dev, np->intr_status); - if (np->intr_status & - (IntrRxDone | IntrRxIntr | RxStatusFIFOOver | - IntrRxErr | IntrRxOverrun)) { - netdev_rx(dev, &work_done, work_to_do); - } - *budget -= work_done; dev->quota -= work_done; -- "You grabbed my hand and we fell into it, like a daydream - or a fever." - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |