ALTQ support.
authorJoerg Sonnenberger <joerg@dragonflybsd.org>
Tue, 15 Feb 2005 08:29:02 +0000 (08:29 +0000)
committerJoerg Sonnenberger <joerg@dragonflybsd.org>
Tue, 15 Feb 2005 08:29:02 +0000 (08:29 +0000)
sys/dev/netif/an/if_an.c

index 7e71176..e74abd8 100644 (file)
@@ -30,7 +30,7 @@
  * THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/an/if_an.c,v 1.2.2.13 2003/02/11 03:32:48 ambrisko Exp $
- * $DragonFly: src/sys/dev/netif/an/if_an.c,v 1.16 2005/01/23 20:21:30 joerg Exp $
+ * $DragonFly: src/sys/dev/netif/an/if_an.c,v 1.17 2005/02/15 08:29:02 joerg Exp $
  *
  * $FreeBSD: src/sys/dev/an/if_an.c,v 1.2.2.13 2003/02/11 03:32:48 ambrisko Exp $
  */
 #include <sys/malloc.h>
 
 #include <net/if.h>
+#include <net/ifq_var.h>
 #include <net/if_arp.h>
 #include <net/ethernet.h>
 #include <net/if_dl.h>
@@ -754,7 +755,8 @@ an_attach(sc, unit, flags)
        ifp->if_watchdog = an_watchdog;
        ifp->if_init = an_init;
        ifp->if_baudrate = 10000000;
-       ifp->if_snd.ifq_maxlen = IFQ_MAXLEN;
+       ifq_set_maxlen(&ifp->if_snd, IFQ_MAXLEN);
+       ifq_set_ready(&ifp->if_snd);
 
        bzero(sc->an_config.an_nodename, sizeof(sc->an_config.an_nodename));
        bcopy(AN_DEFAULT_NODENAME, sc->an_config.an_nodename,
@@ -1199,7 +1201,7 @@ an_intr(xsc)
        /* Re-enable interrupts. */
        CSR_WRITE_2(sc, AN_INT_EN(sc->mpi350), AN_INTRS);
 
-       if ((ifp->if_flags & IFF_UP) && (ifp->if_snd.ifq_head != NULL))
+       if ((ifp->if_flags & IFF_UP) && !ifq_is_empty(&ifp->if_snd))
                an_start(ifp);
 
        return;
@@ -2570,12 +2572,7 @@ an_start(ifp)
 
        /* We can't send in monitor mode so toss any attempts. */
        if (sc->an_monitor && (ifp->if_flags & IFF_PROMISC)) {
-               for (;;) {
-                       IF_DEQUEUE(&ifp->if_snd, m0);
-                       if (m0 == NULL)
-                               break;
-                       m_freem(m0);
-               }
+               ifq_purge(&ifp->if_snd);
                return;
        }
 
@@ -2585,7 +2582,7 @@ an_start(ifp)
                bzero((char *)&tx_frame_802_3, sizeof(tx_frame_802_3));
 
                while (sc->an_rdata.an_tx_ring[idx] == 0) {
-                       IF_DEQUEUE(&ifp->if_snd, m0);
+                       m0 = ifq_dequeue(&ifp->if_snd);
                        if (m0 == NULL)
                                break;
 
@@ -2634,7 +2631,7 @@ an_start(ifp)
        } else { /* MPI-350 */
                while (sc->an_rdata.an_tx_empty ||
                    idx != sc->an_rdata.an_tx_cons) {
-                       IF_DEQUEUE(&ifp->if_snd, m0);
+                       m0 = ifq_dequeue(&ifp->if_snd);
                        if (m0 == NULL) {
                                break;
                        }