Push device_t's down to vxattach, not the softc.
authorJoerg Sonnenberger <joerg@dragonflybsd.org>
Fri, 1 Jul 2005 20:14:13 +0000 (20:14 +0000)
committerJoerg Sonnenberger <joerg@dragonflybsd.org>
Fri, 1 Jul 2005 20:14:13 +0000 (20:14 +0000)
Use if_printf. Fix an incorrect check to determine when no connectors
have been found. Don't store the unit in the softc.

Submitted-by: Sepherosa Ziehau <sepherosa@gmail.com>
sys/dev/netif/vx/Makefile
sys/dev/netif/vx/if_vx.c
sys/dev/netif/vx/if_vx_eisa.c
sys/dev/netif/vx/if_vx_pci.c
sys/dev/netif/vx/if_vxreg.h

index 3cfcdf9..17f4c05 100644 (file)
@@ -1,6 +1,5 @@
-# $DragonFly: src/sys/dev/netif/vx/Makefile,v 1.1 2003/12/07 19:23:40 dillon Exp $
+# $DragonFly: src/sys/dev/netif/vx/Makefile,v 1.2 2005/07/01 20:14:13 joerg Exp $
  
-.PATH:  ${.CURDIR}/../../dev/netif/vx
 KMOD    = if_vx
 SRCS    = if_vx.c if_vx_eisa.c if_vx_pci.c
 SRCS    += device_if.h bus_if.h pci_if.h isa_if.h
index f108cec..d804939 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.19 2005/06/10 15:29:17 swildner Exp $
+ * $DragonFly: src/sys/dev/netif/vx/if_vx.c,v 1.20 2005/07/01 20:14:13 joerg Exp $
  *
  */
 
@@ -56,6 +56,7 @@
  */
 
 #include <sys/param.h>
+#include <sys/bus.h>
 #include <sys/systm.h>
 #include <sys/sockio.h>
 #include <sys/malloc.h>
@@ -76,8 +77,6 @@
 
 #include <net/bpf.h>
 
-#include <machine/clock.h>
-
 #include "if_vxreg.h"
 
 #define ETHER_MAX_LEN  1518
@@ -125,17 +124,22 @@ static void vxsetlink (struct vx_softc *);
 /* int vxbusyeeprom (struct vx_softc *); */
 
 int
-vxattach(sc)
-    struct vx_softc *sc;
+vxattach(device_t dev)
 {
-    struct ifnet *ifp = &sc->arpcom.ac_if;
+    struct vx_softc *sc;
+    struct ifnet *ifp;
     int i;
 
+    sc = device_get_softc(dev);
+
     callout_init(&sc->vx_timer);
     GO_WINDOW(0);
     CSR_WRITE_2(sc, VX_COMMAND, GLOBAL_RESET);
     VX_BUSY_WAIT;
 
+    ifp = &sc->arpcom.ac_if;
+    if_initname(ifp, device_get_name(dev), device_get_unit(dev));
+
     vxgetlink(sc);
 
     /*
@@ -155,7 +159,6 @@ vxattach(sc)
         sc->arpcom.ac_enaddr[(i << 1) + 1] = x;
     }
 
-    if_initname(ifp, "vx", sc->unit);
     ifp->if_mtu = ETHERMTU;
     ifq_set_maxlen(&ifp->if_snd, IFQ_MAXLEN);
     ifq_set_ready(&ifp->if_snd);
@@ -256,15 +259,15 @@ vxgetlink(sc)
     sc->vx_connectors = CSR_READ_2(sc, VX_W3_RESET_OPT) & 0x7f;
     for (n = 0, k = 0; k < VX_CONNECTORS; k++) {
       if (sc->vx_connectors & conn_tab[k].bit) {
-       if (n > 0) {
-         printf("/");
-       }
-       printf("%s", conn_tab[k].name);
+       if (n == 0)
+         if_printf(&sc->arpcom.ac_if, "%s", conn_tab[k].name);
+       else
+         printf("/%s", conn_tab[k].name);
        n++;
       }
     }
-    if (sc->vx_connectors == 0) {
-       printf("no connectors!");
+    if (n == 0) {
+       if_printf(&sc->arpcom.ac_if, "no connectors!\n");
        return;
     }
     GO_WINDOW(3);
@@ -274,9 +277,9 @@ vxgetlink(sc)
     if (sc->vx_connector & 0x10) {
        sc->vx_connector &= 0x0f;
        printf("[*%s*]", conn_tab[(int)sc->vx_connector].name);
-       printf(": disable 'auto select' with DOS util!");
+       printf(": disable 'auto select' with DOS util!\n");
     } else {
-       printf("[*%s*]", conn_tab[(int)sc->vx_connector].name);
+       printf("[*%s*]\n", conn_tab[(int)sc->vx_connector].name);
     }
 }
 
@@ -346,10 +349,9 @@ vxsetlink(sc)
     k = (prev_flags ^ ifp->if_flags) & (IFF_LINK0 | IFF_LINK1 | IFF_LINK2);
     if ((k != 0) || (prev_conn != i)) {
        if (warning != 0) {
-           printf("vx%d: warning: %s\n", sc->unit, warning);
+           if_printf(ifp, "warning: %s\n", warning);
        }
-       printf("vx%d: selected %s. (%s)\n",
-              sc->unit, conn_tab[i].name, reason);
+       if_printf(ifp, "selected %s. (%s)\n", conn_tab[i].name, reason);
     }
 
     /* Set the selected connector. */
@@ -487,7 +489,7 @@ readcheck:
        /* Check if we are stuck and reset [see XXX comment] */
        if (vxstatus(sc)) {
            if (ifp->if_flags & IFF_DEBUG)
-              printf("%s: adapter reset\n", ifp->if_xname);
+              if_printf(ifp, "adapter reset\n");
            vxreset(sc);
        }
     }
@@ -517,26 +519,26 @@ vxstatus(sc)
 
     if (fifost & FIFOS_RX_UNDERRUN) {
        if (sc->arpcom.ac_if.if_flags & IFF_DEBUG)
-           printf("vx%d: RX underrun\n", sc->unit);
+           if_printf(&sc->arpcom.ac_if, "RX underrun\n");
        vxreset(sc);
        return 0;
     }
 
     if (fifost & FIFOS_RX_STATUS_OVERRUN) {
        if (sc->arpcom.ac_if.if_flags & IFF_DEBUG)
-           printf("vx%d: RX Status overrun\n", sc->unit);
+           if_printf(&sc->arpcom.ac_if, "RX Status overrun\n");
        return 1;
     }
 
     if (fifost & FIFOS_RX_OVERRUN) {
        if (sc->arpcom.ac_if.if_flags & IFF_DEBUG)
-           printf("vx%d: RX overrun\n", sc->unit);
+           if_printf(&sc->arpcom.ac_if, "RX overrun\n");
        return 1;
     }
 
     if (fifost & FIFOS_TX_OVERRUN) {
        if (sc->arpcom.ac_if.if_flags & IFF_DEBUG)
-           printf("vx%d: TX overrun\n", sc->unit);
+           if_printf(&sc->arpcom.ac_if, "TX overrun\n");
        vxreset(sc);
        return 0;
     }
@@ -560,13 +562,14 @@ vxtxstat(sc)
     if (i & TXS_JABBER) {
        ++sc->arpcom.ac_if.if_oerrors;
        if (sc->arpcom.ac_if.if_flags & IFF_DEBUG)
-           printf("vx%d: jabber (%x)\n", sc->unit, i);
+           if_printf(&sc->arpcom.ac_if, "jabber (%x)\n", i);
        vxreset(sc);
     } else if (i & TXS_UNDERRUN) {
        ++sc->arpcom.ac_if.if_oerrors;
-       if (sc->arpcom.ac_if.if_flags & IFF_DEBUG)
-           printf("vx%d: fifo underrun (%x) @%d\n",
-               sc->unit, i, sc->tx_start_thresh);
+       if (sc->arpcom.ac_if.if_flags & IFF_DEBUG) {
+           if_printf(&sc->arpcom.ac_if, "fifo underrun (%x) @%d\n",
+               i, sc->tx_start_thresh);
+       }
        if (sc->tx_succ_ok < 100)
            sc->tx_start_thresh = min(ETHER_MAX_LEN, sc->tx_start_thresh + 20);
        sc->tx_succ_ok = 0;
@@ -613,7 +616,7 @@ vxintr(voidsc)
            vxstart(&sc->arpcom.ac_if);
        }
        if (status & S_CARD_FAILURE) {
-           printf("vx%d: adapter failure (%x)\n", sc->unit, status);
+           if_printf(ifp, "adapter failure (%x)\n", status);
            ifp->if_timer = 0;
            vxreset(sc);
            return;
@@ -662,7 +665,7 @@ again:
            s = "dribble bits";
 
        if (s)
-       printf("vx%d: %s\n", sc->unit, s);
+           if_printf(ifp, "%s\n", s);
     }
 
     if (len & ERR_INCOMPLETE)
@@ -722,7 +725,7 @@ again:
        /* Check if we are stuck and reset [see XXX comment] */
        if (len & ERR_INCOMPLETE) {
            if (ifp->if_flags & IFF_DEBUG)
-               printf("vx%d: adapter reset\n", sc->unit);
+               if_printf(ifp, "adapter reset\n");
            vxreset(sc);
            return;
        }
@@ -917,7 +920,7 @@ vxwatchdog(ifp)
     struct vx_softc *sc = ifp->if_softc;
 
     if (ifp->if_flags & IFF_DEBUG)
-       printf("%s: device timeout\n", ifp->if_xname);
+       if_printf(ifp, "device timeout\n");
     ifp->if_flags &= ~IFF_OACTIVE;
     vxstart(ifp);
     vxintr(sc);
@@ -963,7 +966,7 @@ vxbusyeeprom(sc)
             break;
     }
     if (!i) {
-        printf("vx%d: eeprom failed to come ready\n", sc->unit);
+        if_printf(&sc->arpcom.ac_if, "eeprom failed to come ready\n");
         return (1);
     }
     return (0);
index 1c62e70..04efd4c 100644 (file)
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/vx/if_vx_eisa.c,v 1.14 2000/01/29 14:50:31 peter Exp $
- * $DragonFly: src/sys/dev/netif/vx/if_vx_eisa.c,v 1.10 2005/06/15 11:35:22 joerg Exp $
+ * $DragonFly: src/sys/dev/netif/vx/if_vx_eisa.c,v 1.11 2005/07/01 20:14:13 joerg Exp $
  */
 
 #include <sys/param.h>
@@ -154,7 +154,7 @@ vx_eisa_attach(device_t dev)
 
     /* Now the registers are availible through the lower ioport */
 
-    vxattach(sc);
+    vxattach(dev);
 
     if (bus_setup_intr(dev, irq, INTR_TYPE_NET, vxintr, sc, &ih, NULL)) {
        ether_ifdetach(&sc->arpcom.ac_if);
index a36de60..2a82e72 100644 (file)
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/vx/if_vx_pci.c,v 1.21 2000/05/28 15:59:52 peter Exp $
- * $DragonFly: src/sys/dev/netif/vx/if_vx_pci.c,v 1.8 2005/06/15 11:35:22 joerg Exp $
+ * $DragonFly: src/sys/dev/netif/vx/if_vx_pci.c,v 1.9 2005/07/01 20:14:13 joerg Exp $
  */
 
 #include <sys/param.h>
@@ -149,7 +149,7 @@ vx_pci_attach(
        ether_ifdetach(&sc->arpcom.ac_if);
        goto bad;
 
-    if (vxattach(sc) == 0) {
+    if (vxattach(dev) == 0) {
        goto bad;
     }
 
index bcaed2f..e096d28 100644 (file)
@@ -20,7 +20,7 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/vx/if_vxreg.h,v 1.6 2000/05/01 19:54:26 peter Exp $
- * $DragonFly: src/sys/dev/netif/vx/if_vxreg.h,v 1.5 2004/09/15 01:09:23 joerg Exp $
+ * $DragonFly: src/sys/dev/netif/vx/if_vxreg.h,v 1.6 2005/07/01 20:14:13 joerg Exp $
  *
  October 2, 1994
 
@@ -53,7 +53,6 @@
  */
 struct vx_softc {
     struct arpcom arpcom;      /* Ethernet common part         */
-    int unit;                  /* unit number */
     bus_space_handle_t         vx_bhandle;
     bus_space_tag_t            vx_btag;
     void                       *vx_intrhand;
@@ -471,7 +470,7 @@ extern struct vx_softc *vx_softc[];
 extern u_long vx_count;
 extern struct vx_softc *vxalloc (int);
 extern void vxfree (struct vx_softc *);
-extern int vxattach (struct vx_softc *);
+extern int vxattach (device_t);
 extern void vxstop (struct vx_softc *);
 extern void vxintr (void *);
 extern int vxbusyeeprom (struct vx_softc *);