amd64/73360: sk0: watchdog timeout

Wolfgang S. Rupprecht wolfgang+gnus20041031T133906 at dailyplanet.dontspam.wsrcc.com
Sun Oct 31 14:17:05 PST 2004


simsong at acm.org (Simson L. Garfinkel) writes:
> sk0: watchdog timeout
> 
> I wanted you to know that the problem hasn't gone away.      

Looks like some sk hardware needs to have the tx prodded continually.

This solved my tx problem under openbsd/amd64 (grabbed from a netbsd
fix).  Maybe the freebsd drivers need something similar too?

--- if_sk.c	14 Oct 2004 15:27:39 -0000	1.47
+++ if_sk.c	17 Oct 2004 04:30:39 -0000
@@ -1949,8 +1946,11 @@ sk_txeof(struct sk_if_softc *sc_if)
 		}
 		sc_if->sk_cdata.sk_tx_cnt--;
 		SK_INC(idx, SK_TX_RING_CNT);
-		ifp->if_timer = 0;
 	}
+	if (sc_if->sk_cdata.sk_tx_cnt == 0)
+		ifp->if_timer = 0;
+	else /* nudge chip to keep tx ring moving */
+		CSR_WRITE_4(sc, sc_if->sk_tx_bmu, SK_TXBMU_TX_START);
 
 	sc_if->sk_cdata.sk_tx_cons = idx;


-- 
Wolfgang S. Rupprecht                http://www.wsrcc.com/wolfgang/


More information about the freebsd-amd64 mailing list