ALTQ support.
authorJoerg Sonnenberger <joerg@dragonflybsd.org>
Sun, 20 Feb 2005 03:58:04 +0000 (03:58 +0000)
committerJoerg Sonnenberger <joerg@dragonflybsd.org>
Sun, 20 Feb 2005 03:58:04 +0000 (03:58 +0000)
sys/dev/netif/vx/if_vx.c
sys/dev/netif/wb/if_wb.c
sys/dev/netif/wl/if_wl.c

index 5abb570..39a8dca 100644 (file)
@@ -28,7 +28,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/vx/if_vx.c,v 1.25.2.6 2002/02/13 00:43:10 dillon Exp $
- * $DragonFly: src/sys/dev/netif/vx/if_vx.c,v 1.15 2005/01/23 20:23:22 joerg Exp $
+ * $DragonFly: src/sys/dev/netif/vx/if_vx.c,v 1.16 2005/02/20 03:53:42 joerg Exp $
  *
  */
 
@@ -65,6 +65,7 @@
 #include <sys/module.h>
 
 #include <net/if.h>
+#include <net/ifq_var.h>
 
 #include <net/ethernet.h>
 #include <net/if_arp.h>
@@ -155,7 +156,8 @@ vxattach(sc)
 
     if_initname(ifp, "vx", sc->unit);
     ifp->if_mtu = ETHERMTU;
-    ifp->if_snd.ifq_maxlen = IFQ_MAXLEN;
+    ifq_set_maxlen(&ifp->if_snd, IFQ_MAXLEN);
+    ifq_set_ready(&ifp->if_snd);
     ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
     ifp->if_start = vxstart;
     ifp->if_ioctl = vxioctl;
@@ -398,10 +400,9 @@ vxstart(ifp)
 
 startagain:
     /* Sneak a peek at the next packet */
-    m0 = ifp->if_snd.ifq_head;
-    if (m0 == 0) {
+    m0 = ifq_poll(&ifp->if_snd);
+    if (m0 == NULL)
        return;
-    }
     /* We need to use m->m_pkthdr.len, so require the header */
      if ((m0->m_flags & M_PKTHDR) == 0)
        panic("vxstart: no header mbuf");
@@ -417,7 +418,7 @@ startagain:
     if (len + pad > ETHER_MAX_LEN) {
        /* packet is obviously too large: toss it */
        ++ifp->if_oerrors;
-       IF_DEQUEUE(&ifp->if_snd, m0);
+       m0 = ifq_dequeue(&ifp->if_snd);
        m_freem(m0);
        goto readcheck;
     }
@@ -432,10 +433,7 @@ startagain:
        }
     }
     CSR_WRITE_2(sc, VX_COMMAND, SET_TX_AVAIL_THRESH | (8188 >> 2));
-    IF_DEQUEUE(&ifp->if_snd, m0);
-    if (m0 == NULL) {          /* not really needed */
-       return;
-    }
+    m0 = ifq_dequeue(&ifp->if_snd);
 
     VX_BUSY_WAIT;
     CSR_WRITE_2(sc, VX_COMMAND, SET_TX_START_THRESH |
index 7d31d84..a26ea71 100644 (file)
@@ -30,7 +30,7 @@
  * THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/pci/if_wb.c,v 1.26.2.6 2003/03/05 18:42:34 njl Exp $
- * $DragonFly: src/sys/dev/netif/wb/if_wb.c,v 1.15 2005/01/23 20:23:22 joerg Exp $
+ * $DragonFly: src/sys/dev/netif/wb/if_wb.c,v 1.16 2005/02/20 03:55:14 joerg Exp $
  *
  * $FreeBSD: src/sys/pci/if_wb.c,v 1.26.2.6 2003/03/05 18:42:34 njl Exp $
  */
@@ -98,6 +98,7 @@
 #include <sys/queue.h>
 
 #include <net/if.h>
+#include <net/ifq_var.h>
 #include <net/if_arp.h>
 #include <net/ethernet.h>
 #include <net/if_dl.h>
@@ -942,7 +943,8 @@ static int wb_attach(dev)
        ifp->if_watchdog = wb_watchdog;
        ifp->if_init = wb_init;
        ifp->if_baudrate = 10000000;
-       ifp->if_snd.ifq_maxlen = WB_TX_LIST_CNT - 1;
+       ifq_set_maxlen(&ifp->if_snd, WB_TX_LIST_CNT - 1);
+       ifq_set_ready(&ifp->if_snd);
 
        /*
         * Do MII setup.
@@ -1359,7 +1361,7 @@ static void wb_intr(arg)
        /* Re-enable interrupts. */
        CSR_WRITE_4(sc, WB_IMR, WB_INTRS);
 
-       if (ifp->if_snd.ifq_head != NULL) {
+       if (!ifq_is_empty(&ifp->if_snd)) {
                wb_start(ifp);
        }
 
@@ -1506,7 +1508,7 @@ static void wb_start(ifp)
        start_tx = sc->wb_cdata.wb_tx_free;
 
        while(sc->wb_cdata.wb_tx_free->wb_mbuf == NULL) {
-               IF_DEQUEUE(&ifp->if_snd, m_head);
+               m_head = ifq_dequeue(&ifp->if_snd);
                if (m_head == NULL)
                        break;
 
@@ -1789,7 +1791,7 @@ static void wb_watchdog(ifp)
        wb_reset(sc);
        wb_init(sc);
 
-       if (ifp->if_snd.ifq_head != NULL)
+       if (!ifq_is_empty(&ifp->if_snd))
                wb_start(ifp);
 
        return;
index 63c5c3f..2b8d008 100644 (file)
@@ -1,5 +1,5 @@
 /* $FreeBSD: src/sys/i386/isa/if_wl.c,v 1.27.2.2 2000/07/17 21:24:32 archie Exp $ */
-/* $DragonFly: src/sys/dev/netif/wl/if_wl.c,v 1.16 2005/01/23 20:23:22 joerg Exp $ */
+/* $DragonFly: src/sys/dev/netif/wl/if_wl.c,v 1.17 2005/02/20 03:58:04 joerg Exp $ */
 /* 
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -206,6 +206,7 @@ WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
 #include <net/ethernet.h>
 #include <net/if.h>
+#include <net/ifq_var.h>
 #include <net/if_dl.h>
 
 #ifdef INET
@@ -504,6 +505,8 @@ wlattach(struct isa_device *id)
        ifp->if_done
        ifp->if_reset
        */
+    ifq_set_maxlen(&ifp->if_snd, IFQ_MAXLEN);
+    ifq_set_ready(&ifp->if_snd);
     ether_ifattach(ifp, sc->wl_ac.ac_enaddr);
 
     bcopy(&sc->wl_addr[0], sc->wl_ac.ac_enaddr, WAVELAN_ADDR_SIZE);
@@ -884,8 +887,8 @@ wlstart(struct ifnet *ifp)
 
     /* get ourselves some data */
     ifp = &(sc->wl_if);
-    IF_DEQUEUE(&ifp->if_snd, m);
-    if (m != (struct mbuf *)0) {
+    m = ifq_dequeue(&ifp->if_snd);
+    if (m != NULL) {
        BPF_MTAP(ifp, m);
        sc->tbusy++;
        /* set the watchdog timer so that if the board