patch-2.3.44 linux/drivers/net/tulip.c

Next file: linux/drivers/net/wan/dlci.c
Previous file: linux/drivers/net/tokenring/tms380tr.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.3.43/linux/drivers/net/tulip.c linux/drivers/net/tulip.c
@@ -2148,11 +2148,11 @@
 		if (csr5 & (RxIntr | RxNoBuf))
 			work_budget -= tulip_rx(dev);
 
-		spin_lock(&tp->tx_lock);
-
 		if (csr5 & (TxNoBuf | TxDied | TxIntr)) {
 			unsigned int dirty_tx;
 
+			spin_lock(&tp->tx_lock);
+
 			for (dirty_tx = tp->dirty_tx; tp->cur_tx - dirty_tx > 0;
 				 dirty_tx++) {
 				int entry = dirty_tx % TX_RING_SIZE;
@@ -2219,8 +2219,8 @@
 				outl(tp->csr6 | 0x0002, ioaddr + CSR6);
 				outl(tp->csr6 | 0x2002, ioaddr + CSR6);
 			}
+			spin_unlock(&tp->tx_lock);
 		}
-		spin_unlock(&tp->tx_lock);
 
 		/* Log errors. */
 		if (csr5 & AbnormalIntr) {	/* Abnormal error summary bit. */

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)