Module Name:    src
Committed By:   skrll
Date:           Sun Jan 13 08:38:05 UTC 2013

Modified Files:
        src/sys/dev/usb: if_smsc.c

Log Message:
Remove IFF_OACTIVE in txeof always, i.e. for the usb error case as well.

Set an if_timer.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/dev/usb/if_smsc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/usb/if_smsc.c
diff -u src/sys/dev/usb/if_smsc.c:1.3 src/sys/dev/usb/if_smsc.c:1.4
--- src/sys/dev/usb/if_smsc.c:1.3	Sun Jan 13 08:05:30 2013
+++ src/sys/dev/usb/if_smsc.c	Sun Jan 13 08:38:04 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_smsc.c,v 1.3 2013/01/13 08:05:30 skrll Exp $	*/
+/*	$NetBSD: if_smsc.c,v 1.4 2013/01/13 08:38:04 skrll Exp $	*/
 
 /*	$OpenBSD: if_smsc.c,v 1.4 2012/09/27 12:38:11 jsg Exp $	*/
 /* $FreeBSD: src/sys/dev/usb/net/if_smsc.c,v 1.1 2012/08/15 04:03:55 gonzo Exp $ */
@@ -642,9 +642,13 @@ smsc_start(struct ifnet *ifp)
 	IFQ_DEQUEUE(&ifp->if_snd, m_head);
 
 	bpf_mtap(ifp, m_head);
-	//m_freem(m_head);			/* XXXNH needed? */
 
 	ifp->if_flags |= IFF_OACTIVE;
+
+	/*
+	 * Set a timeout in case the chip goes out to lunch.
+	 */
+	ifp->if_timer = 5;
 }
 
 void
@@ -1351,6 +1355,9 @@ smsc_txeof(usbd_xfer_handle xfer, usbd_p
 
 	s = splnet();
 
+	ifp->if_timer = 0;
+	ifp->if_flags &= ~IFF_OACTIVE;
+
 	if (status != USBD_NORMAL_COMPLETION) {
 		if (status == USBD_NOT_STARTED || status == USBD_CANCELLED) {
 			splx(s);
@@ -1364,9 +1371,7 @@ smsc_txeof(usbd_xfer_handle xfer, usbd_p
 		splx(s);
 		return;
 	}
-
-	ifp->if_timer = 0;
-	ifp->if_flags &= ~IFF_OACTIVE;
+	ifp->if_opackets++;
 
 	m_freem(c->sc_mbuf);
 	c->sc_mbuf = NULL;
@@ -1374,7 +1379,6 @@ smsc_txeof(usbd_xfer_handle xfer, usbd_p
 	if (IFQ_IS_EMPTY(&ifp->if_snd) == 0)
 		smsc_start(ifp);
 
-	ifp->if_opackets++;
 	splx(s);
 }
 

Reply via email to