summaryrefslogtreecommitdiffstats
path: root/sys/i386
diff options
context:
space:
mode:
authordg <dg@FreeBSD.org>1995-12-05 02:01:59 +0000
committerdg <dg@FreeBSD.org>1995-12-05 02:01:59 +0000
commit8156a5707a8830d1ce5658e103e6780f22cfc8dd (patch)
tree85cbbd7c1e0b938f939f958fcf5fd93d4c5c5406 /sys/i386
parentfd5819ba7c85b8236d4b1f4cc3340e673229a93a (diff)
downloadFreeBSD-src-8156a5707a8830d1ce5658e103e6780f22cfc8dd.zip
FreeBSD-src-8156a5707a8830d1ce5658e103e6780f22cfc8dd.tar.gz
all:
Removed ifnet.if_init and ifnet.if_reset as they are generally unused. Change the parameter passed to if_watchdog to be a ifnet * rather than a unit number. All of this is an attempt to move toward not needing an array of softc pointers (which is usually static in size) to point to the driver softc. if_ed.c: Changed some of the argument passing to some functions to make a little more sense. if_ep.c, if_vx.c: Killed completely bogus use of if_timer. It was being set in such a way that the interface was being reset once per second (blech!).
Diffstat (limited to 'sys/i386')
-rw-r--r--sys/i386/isa/if_ar.c34
-rw-r--r--sys/i386/isa/if_cx.c43
-rw-r--r--sys/i386/isa/if_ed.c164
-rw-r--r--sys/i386/isa/if_eg.c3
-rw-r--r--sys/i386/isa/if_el.c18
-rw-r--r--sys/i386/isa/if_ep.c33
-rw-r--r--sys/i386/isa/if_fe.c20
-rw-r--r--sys/i386/isa/if_ie.c4
-rw-r--r--sys/i386/isa/if_ix.c16
-rw-r--r--sys/i386/isa/if_le.c28
-rw-r--r--sys/i386/isa/if_lnc.c12
-rw-r--r--sys/i386/isa/if_ze.c24
-rw-r--r--sys/i386/isa/if_zp.c19
13 files changed, 167 insertions, 251 deletions
diff --git a/sys/i386/isa/if_ar.c b/sys/i386/isa/if_ar.c
index ce46405..10c923a 100644
--- a/sys/i386/isa/if_ar.c
+++ b/sys/i386/isa/if_ar.c
@@ -28,7 +28,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: if_ar.c,v 1.7 1995/11/16 20:16:34 jhay Exp $
+ * $Id: if_ar.c,v 1.1.1.1 1995/11/21 02:32:04 peter Exp $
*/
/*
@@ -201,8 +201,7 @@ static struct kern_devconf kdc_arc_template = {
void arstart(struct ifnet *ifp);
int arioctl(struct ifnet *ifp, int cmd, caddr_t data);
-void arwatchdog(int port_number);
-void arinit(int port_number);
+void arwatchdog(struct ifnet *ifp);
static void ar_up(struct ar_softc *sc);
static void ar_down(struct ar_softc *sc);
@@ -397,7 +396,6 @@ int arattach(struct isa_device *id)
ifp->if_ioctl = arioctl;
ifp->if_start = arstart;
ifp->if_watchdog = arwatchdog;
- ifp->if_init = arinit;
sc->ifsppp.pp_flags = PP_KEEPALIVE;
@@ -666,15 +664,15 @@ int arioctl(struct ifnet *ifp, int cmd, caddr_t data)
/*
* This is to catch lost tx interrupts.
*/
-void arwatchdog(int unit)
+void arwatchdog(struct ifnet *ifp)
{
- struct ar_softc *sc = ARUNIT2SC(unit);
+ struct ar_softc *sc = ARUNIT2SC(ifp->if_unit);
- if(!(sc->ifsppp.pp_if.if_flags & IFF_RUNNING))
+ if(!(ifp->if_flags & IFF_RUNNING))
return;
/* XXX if(sc->ifsppp.pp_if.if_flags & IFF_DEBUG) */
- printf("ar%d: transmit failed.\n", unit);
+ printf("ar%d: transmit failed.\n", ifp->if_unit);
ARC_SET_SCA(sc->hc->iobase, sc->scano);
sc->hc->sca->msci[sc->scachan].cmd = SCA_CMD_TXABORT;
@@ -682,9 +680,9 @@ void arwatchdog(int unit)
ar_down(sc);
ar_up(sc);
- sc->ifsppp.pp_if.if_flags &= ~IFF_OACTIVE;
+ ifp->if_flags &= ~IFF_OACTIVE;
- arstart(&sc->ifsppp.pp_if);
+ arstart(ifp);
}
static void ar_up(struct ar_softc *sc)
@@ -769,22 +767,6 @@ static void ar_down(struct ar_softc *sc)
}
/*
- * I don't think anything ever calls this function.
- */
-void arinit(int unit)
- {
- int s;
- struct ar_softc *sc = ARUNIT2SC(unit);
-
- printf("ar%d: OOPS, so somebody do call arinit!\n", unit);
-
- s = splimp();
- ar_down(sc);
- ar_up(sc);
- splx(s);
- }
-
-/*
* Initialize the card, allocate memory for the ar_softc structures
* and fill in the pointers.
*/
diff --git a/sys/i386/isa/if_cx.c b/sys/i386/isa/if_cx.c
index 59e25ed..1520f95 100644
--- a/sys/i386/isa/if_cx.c
+++ b/sys/i386/isa/if_cx.c
@@ -50,8 +50,7 @@
# define CDEV_MAJOR 42 /*XXX*/ /* replace with variable ASAP*/
# include <sys/devconf.h>
# endif
-# define init_func_t void(*)(int)
-# define watchdog_func_t void(*)(int)
+# define watchdog_func_t void(*)(struct ifnet *)
# define start_func_t void(*)(struct ifnet*)
#endif
@@ -116,9 +115,8 @@ extern void cxswitch __P((cx_chan_t *c, cx_soft_opt_t new));
#define IFNETSZ (sizeof (struct ifnet))
int cxsioctl (struct ifnet *ifp, int cmd, caddr_t data);
-void cxinit (int unit);
void cxstart (struct ifnet *ifp);
-void cxwatchdog (int unit);
+void cxwatchdog (struct ifnet *ifp);
void cxinput (cx_chan_t *c, void *buf, unsigned len);
int cxrinta (cx_chan_t *c);
void cxtinta (cx_chan_t *c);
@@ -345,7 +343,6 @@ void cxattach (struct device *parent, struct device *self, void *aux)
c->ifp->if_start = (start_func_t) cxstart;
c->ifp->if_watchdog = (watchdog_func_t) cxwatchdog;
/* Init routine is never called by upper level? */
- c->ifp->if_init = (init_func_t) cxinit;
sppp_attach (c->ifp);
if_attach (c->ifp);
#if NBPFILTER > 0
@@ -531,32 +528,6 @@ void cxup (cx_chan_t *c)
}
/*
- * Initialization of interface.
- */
-void cxinit (int unit)
-{
- cx_chan_t *q, *c = cxchan[unit];
- int s = splimp();
-
- print (("cx%d.%d: cxinit\n", c->board->num, c->num));
-
- cxdown (c);
-
- /* Stop all slave subchannels. */
- for (q=c->slaveq; q; q=q->slaveq)
- cxdown (q);
-
- if (c->ifp->if_flags & IFF_RUNNING) {
- cxup (c);
-
- /* Start all slave subchannels. */
- for (q=c->slaveq; q; q=q->slaveq)
- cxup (q);
- }
- splx (s);
-}
-
-/*
* Fill transmitter buffer with data.
*/
void cxput (cx_chan_t *c, char b)
@@ -702,13 +673,13 @@ void cxstart (struct ifnet *ifp)
* Recover after lost transmit interrupts.
* Always called on splimp().
*/
-void cxwatchdog (int unit)
+void cxwatchdog (struct ifnet *ifp)
{
- cx_chan_t *q, *c = cxchan[unit];
+ cx_chan_t *q, *c = cxchan[ifp->if_unit];
- if (! (c->ifp->if_flags & IFF_RUNNING))
+ if (! (ifp->if_flags & IFF_RUNNING))
return;
- if (c->ifp->if_flags & IFF_DEBUG)
+ if (ifp->if_flags & IFF_DEBUG)
printf ("cx%d.%d: device timeout\n", c->board->num, c->num);
cxdown (c);
@@ -719,7 +690,7 @@ void cxwatchdog (int unit)
for (q=c->slaveq; q; q=q->slaveq)
cxup (q);
- cxstart (c->ifp);
+ cxstart (ifp);
}
/*
diff --git a/sys/i386/isa/if_ed.c b/sys/i386/isa/if_ed.c
index ebf4c83..6c50b55 100644
--- a/sys/i386/isa/if_ed.c
+++ b/sys/i386/isa/if_ed.c
@@ -13,7 +13,7 @@
* the SMC Elite Ultra (8216), the 3Com 3c503, the NE1000 and NE2000,
* and a variety of similar clones.
*
- * $Id: if_ed.c,v 1.86 1995/11/16 09:55:51 bde Exp $
+ * $Id: if_ed.c,v 1.87 1995/11/18 08:29:04 bde Exp $
*/
#include "ed.h"
@@ -108,23 +108,24 @@ struct ed_softc {
struct kern_devconf kdc; /* kernel configuration database info */
} ed_softc[NED];
-static int ed_attach(struct isa_device *);
-static void ed_init(int);
-static int ed_ioctl(struct ifnet *, int, caddr_t);
-static int ed_probe(struct isa_device *);
-static void ed_start(struct ifnet *);
-static void ed_reset(int);
-static void ed_watchdog(int);
-static int ed_probe_generic8390(struct ed_softc *);
-static int ed_probe_WD80x3(struct isa_device *);
-static int ed_probe_3Com(struct isa_device *);
-static int ed_probe_Novell(struct isa_device *);
-static int ed_probe_pccard(struct isa_device *, u_char *);
+static int ed_attach __P((struct isa_device *));
+static void ed_init __P((struct ifnet *));
+static int ed_ioctl __P((struct ifnet *, int, caddr_t));
+static int ed_probe __P((struct isa_device *));
+static void ed_start __P((struct ifnet *));
+static void ed_reset __P((struct ifnet *));
+static void ed_watchdog __P((struct ifnet *));
+
+static void ed_stop __P((struct ed_softc *));
+static int ed_probe_generic8390 __P((struct ed_softc *));
+static int ed_probe_WD80x3 __P((struct isa_device *));
+static int ed_probe_3Com __P((struct isa_device *));
+static int ed_probe_Novell __P((struct isa_device *));
+static int ed_probe_pccard __P((struct isa_device *, u_char *));
static void ds_getmcaf();
static void ed_get_packet(struct ed_softc *, char *, int /* u_short */ , int);
-static void ed_stop(int);
static inline void ed_rint();
static inline void ed_xmit();
@@ -133,7 +134,7 @@ static inline char *ed_ring_copy();
static void ed_pio_readmem(), ed_pio_writemem();
static u_short ed_pio_write_mbufs();
-static void ed_setrcr(struct ifnet *, struct ed_softc *);
+static void ed_setrcr(struct ed_softc *);
static u_long ds_crc(u_char *ep);
#include "crd.h"
@@ -223,13 +224,15 @@ static void
edunload(struct pccard_dev *dp)
{
struct ed_softc *sc = &ed_softc[dp->isahd.id_unit];
+ struct ifnet *ifp = &sc->arpcom.ac_if;
+
if (sc->kdc.kdc_state == DC_UNCONFIGURED) {
printf("ed%d: already unloaded\n", dp->isahd.id_unit);
return;
}
sc->kdc.kdc_state = DC_UNCONFIGURED;
- sc->arpcom.ac_if.if_flags &= ~IFF_RUNNING;
- if_down(&sc->arpcom.ac_if);
+ ifp->if_flags &= ~IFF_RUNNING;
+ if_down(ifp);
sc->gone = 1;
printf("ed%d: unload\n", dp->isahd.id_unit);
}
@@ -1391,7 +1394,7 @@ ed_attach(isa_dev)
/*
* Set interface to stopped condition (reset)
*/
- ed_stop(isa_dev->id_unit);
+ ed_stop(sc);
if (!ifp->if_name) {
/*
@@ -1399,11 +1402,9 @@ ed_attach(isa_dev)
*/
ifp->if_unit = isa_dev->id_unit;
ifp->if_name = "ed";
- ifp->if_init = ed_init;
ifp->if_output = ether_output;
ifp->if_start = ed_start;
ifp->if_ioctl = ed_ioctl;
- ifp->if_reset = ed_reset;
ifp->if_watchdog = ed_watchdog;
ifp->if_snd.ifq_maxlen = IFQ_MAXLEN;
@@ -1456,20 +1457,21 @@ ed_attach(isa_dev)
* Reset interface.
*/
static void
-ed_reset(unit)
- int unit;
+ed_reset(ifp)
+ struct ifnet *ifp;
{
+ struct ed_softc *sc = (struct ed_softc *)ifp;
int s;
- if (ed_softc[unit].gone)
+ if (sc->gone)
return;
s = splimp();
/*
* Stop interface and re-initialize.
*/
- ed_stop(unit);
- ed_init(unit);
+ ed_stop(sc);
+ ed_init(ifp);
(void) splx(s);
}
@@ -1478,10 +1480,9 @@ ed_reset(unit)
* Take interface offline.
*/
static void
-ed_stop(unit)
- int unit;
+ed_stop(sc)
+ struct ed_softc *sc;
{
- struct ed_softc *sc = &ed_softc[unit];
int n = 5000;
if (sc->gone)
@@ -1504,28 +1505,27 @@ ed_stop(unit)
* generate an interrupt after a transmit has been started on it.
*/
static void
-ed_watchdog(unit)
- int unit;
+ed_watchdog(ifp)
+ struct ifnet *ifp;
{
- struct ed_softc *sc = &ed_softc[unit];
+ struct ed_softc *sc = (struct ed_softc *)ifp;
if (sc->gone)
return;
- log(LOG_ERR, "ed%d: device timeout\n", unit);
- ++sc->arpcom.ac_if.if_oerrors;
+ log(LOG_ERR, "ed%d: device timeout\n", ifp->if_unit);
+ ifp->if_oerrors++;
- ed_reset(unit);
+ ed_reset(ifp);
}
/*
* Initialize device.
*/
static void
-ed_init(unit)
- int unit;
+ed_init(ifp)
+ struct ifnet *ifp;
{
- struct ed_softc *sc = &ed_softc[unit];
- struct ifnet *ifp = &sc->arpcom.ac_if;
+ struct ed_softc *sc = (struct ed_softc *)ifp;
int i, s;
if (sc->gone)
@@ -1544,7 +1544,7 @@ ed_init(unit)
/* reset transmitter flags */
sc->xmit_busy = 0;
- sc->arpcom.ac_if.if_timer = 0;
+ ifp->if_timer = 0;
sc->txb_inuse = 0;
sc->txb_new = 0;
@@ -1639,7 +1639,7 @@ ed_init(unit)
* Program Receiver Configuration Register and multicast filter. CR is
* set to page 0 on return.
*/
- ed_setrcr(ifp, sc);
+ ed_setrcr(sc);
/*
* Take interface out of loopback
@@ -1676,10 +1676,10 @@ ed_init(unit)
* This routine actually starts the transmission on the interface
*/
static inline void
-ed_xmit(ifp)
- struct ifnet *ifp;
+ed_xmit(sc)
+ struct ed_softc *sc;
{
- struct ed_softc *sc = &ed_softc[ifp->if_unit];
+ struct ifnet *ifp = (struct ifnet *)sc;
unsigned short len;
if (sc->gone)
@@ -1735,7 +1735,7 @@ static void
ed_start(ifp)
struct ifnet *ifp;
{
- struct ed_softc *sc = &ed_softc[ifp->if_unit];
+ struct ed_softc *sc = (struct ed_softc *)ifp;
struct mbuf *m0, *m;
caddr_t buffer;
int len;
@@ -1752,7 +1752,7 @@ outloop:
*/
if (sc->txb_inuse && (sc->xmit_busy == 0)) {
printf("ed: packets buffered, but transmitter idle\n");
- ed_xmit(ifp);
+ ed_xmit(sc);
}
/*
@@ -1766,7 +1766,7 @@ outloop:
ifp->if_flags |= IFF_OACTIVE;
return;
}
- IF_DEQUEUE(&sc->arpcom.ac_if.if_snd, m);
+ IF_DEQUEUE(&ifp->if_snd, m);
if (m == 0) {
/*
@@ -1864,7 +1864,7 @@ outloop:
sc->txb_new = 0;
if (sc->xmit_busy == 0)
- ed_xmit(ifp);
+ ed_xmit(sc);
/*
* Tap off here if there is a bpf listener.
@@ -1887,10 +1887,10 @@ outloop:
* Ethernet interface receiver interrupt.
*/
static inline void
-ed_rint(unit)
- int unit;
+ed_rint(sc)
+ struct ed_softc *sc;
{
- register struct ed_softc *sc = &ed_softc[unit];
+ struct ifnet *ifp = (struct ifnet *)sc;
u_char boundry;
u_short len;
struct ed_ring packet_hdr;
@@ -1965,16 +1965,16 @@ ed_rint(unit)
*/
ed_get_packet(sc, packet_ptr + sizeof(struct ed_ring),
len - sizeof(struct ed_ring), packet_hdr.rsr & ED_RSR_PHY);
- ++sc->arpcom.ac_if.if_ipackets;
+ ifp->if_ipackets++;
} else {
/*
* Really BAD. The ring pointers are corrupted.
*/
log(LOG_ERR,
"ed%d: NIC memory corrupt - invalid packet length %d\n",
- unit, len);
- ++sc->arpcom.ac_if.if_ierrors;
- ed_reset(unit);
+ ifp->if_unit, len);
+ ifp->if_ierrors++;
+ ed_reset(ifp);
return;
}
@@ -2014,6 +2014,7 @@ edintr(unit)
int unit;
{
struct ed_softc *sc = &ed_softc[unit];
+ struct ifnet *ifp = (struct ifnet *)sc;
u_char isr;
if (sc->gone)
@@ -2071,32 +2072,32 @@ edintr(unit)
/*
* update output errors counter
*/
- ++sc->arpcom.ac_if.if_oerrors;
+ ifp->if_oerrors++;
} else {
/*
* Update total number of successfully
* transmitted packets.
*/
- ++sc->arpcom.ac_if.if_opackets;
+ ifp->if_opackets++;
}
/*
* reset tx busy and output active flags
*/
sc->xmit_busy = 0;
- sc->arpcom.ac_if.if_flags &= ~IFF_OACTIVE;
+ ifp->if_flags &= ~IFF_OACTIVE;
/*
* clear watchdog timer
*/
- sc->arpcom.ac_if.if_timer = 0;
+ ifp->if_timer = 0;
/*
* Add in total number of collisions on last
* transmission.
*/
- sc->arpcom.ac_if.if_collisions += collisions;
+ ifp->if_collisions += collisions;
/*
* Decrement buffer in-use count if not zero (can only
@@ -2106,7 +2107,7 @@ edintr(unit)
* until after handling receiver
*/
if (sc->txb_inuse && --sc->txb_inuse)
- ed_xmit(&sc->arpcom.ac_if);
+ ed_xmit(sc);
}
/*
@@ -2124,17 +2125,17 @@ edintr(unit)
* fixed in later revs. -DG
*/
if (isr & ED_ISR_OVW) {
- ++sc->arpcom.ac_if.if_ierrors;
+ ifp->if_ierrors++;
#ifdef DIAGNOSTIC
log(LOG_WARNING,
"ed%d: warning - receiver ring buffer overrun\n",
- unit);
+ ifp->if_unit);
#endif
/*
* Stop/reset/re-init NIC
*/
- ed_reset(unit);
+ ed_reset(ifp);
} else {
/*
@@ -2143,9 +2144,9 @@ edintr(unit)
* missed packet.
*/
if (isr & ED_ISR_RXE) {
- ++sc->arpcom.ac_if.if_ierrors;
+ ifp->if_ierrors++;
#ifdef ED_DEBUG
- printf("ed%d: receive error %x\n", unit,
+ printf("ed%d: receive error %x\n", ifp->if_unit,
inb(sc->nic_addr + ED_P0_RSR));
#endif
}
@@ -2173,7 +2174,7 @@ edintr(unit)
ED_WD_MSR_MENB);
}
}
- ed_rint(unit);
+ ed_rint(sc);
/* disable 16bit access */
if (sc->isa16bit &&
@@ -2194,8 +2195,8 @@ edintr(unit)
* attempt to start output on the interface. This is done
* after handling the receiver to give the receiver priority.
*/
- if ((sc->arpcom.ac_if.if_flags & IFF_OACTIVE) == 0)
- ed_start(&sc->arpcom.ac_if);
+ if ((ifp->if_flags & IFF_OACTIVE) == 0)
+ ed_start(ifp);
/*
* return NIC CR to standard state: page 0, remote DMA
@@ -2229,7 +2230,7 @@ ed_ioctl(ifp, command, data)
caddr_t data;
{
register struct ifaddr *ifa = (struct ifaddr *) data;
- struct ed_softc *sc = &ed_softc[ifp->if_unit];
+ struct ed_softc *sc = (struct ed_softc *)ifp;
struct ifreq *ifr = (struct ifreq *) data;
int s, error = 0;
@@ -2249,7 +2250,7 @@ ed_ioctl(ifp, command, data)
switch (ifa->ifa_addr->sa_family) {
#ifdef INET
case AF_INET:
- ed_init(ifp->if_unit); /* before arpwhohas */
+ ed_init(ifp); /* before arpwhohas */
arp_ifinit((struct arpcom *)ifp, ifa);
break;
#endif
@@ -2273,7 +2274,7 @@ ed_ioctl(ifp, command, data)
/*
* Set new address
*/
- ed_init(ifp->if_unit);
+ ed_init(ifp);
break;
}
#endif
@@ -2297,12 +2298,12 @@ ed_ioctl(ifp, command, data)
/*
* Set new address
*/
- ed_init(ifp->if_unit);
+ ed_init(ifp);
break;
}
#endif
default:
- ed_init(ifp->if_unit);
+ ed_init(ifp);
break;
}
break;
@@ -2324,7 +2325,7 @@ ed_ioctl(ifp, command, data)
*/
if (((ifp->if_flags & IFF_UP) == 0) &&
(ifp->if_flags & IFF_RUNNING)) {
- ed_stop(ifp->if_unit);
+ ed_stop(sc);
ifp->if_flags &= ~IFF_RUNNING;
} else {
@@ -2334,7 +2335,7 @@ ed_ioctl(ifp, command, data)
*/
if ((ifp->if_flags & IFF_UP) &&
((ifp->if_flags & IFF_RUNNING) == 0))
- ed_init(ifp->if_unit);
+ ed_init(ifp);
}
/* UP controls BUSY/IDLE */
sc->kdc.kdc_state = ((ifp->if_flags & IFF_UP)
@@ -2346,7 +2347,7 @@ ed_ioctl(ifp, command, data)
/*
* Promiscuous flag may have changed, so reprogram the RCR.
*/
- ed_setrcr(ifp, sc);
+ ed_setrcr(sc);
#endif
/*
@@ -2378,7 +2379,7 @@ ed_ioctl(ifp, command, data)
* Multicast list has changed; set the hardware filter
* accordingly.
*/
- ed_setrcr(ifp, sc);
+ ed_setrcr(sc);
error = 0;
}
break;
@@ -2574,6 +2575,7 @@ ed_pio_write_mbufs(sc, m, dst)
struct mbuf *m;
unsigned short dst;
{
+ struct ifnet *ifp = (struct ifnet *)sc;
unsigned short total_len, dma_len;
struct mbuf *mp;
int maxwait = 200; /* about 240us */
@@ -2670,8 +2672,8 @@ ed_pio_write_mbufs(sc, m, dst)
if (!maxwait) {
log(LOG_WARNING, "ed%d: remote transmit DMA failed to complete\n",
- sc->arpcom.ac_if.if_unit);
- ed_reset(sc->arpcom.ac_if.if_unit);
+ ifp->if_unit);
+ ed_reset(ifp);
return(0);
}
return (total_len);
@@ -2714,10 +2716,10 @@ ed_ring_copy(sc, src, dst, amount)
}
static void
-ed_setrcr(ifp, sc)
- struct ifnet *ifp;
+ed_setrcr(sc)
struct ed_softc *sc;
{
+ struct ifnet *ifp = (struct ifnet *)sc;
int i;
/* set page 1 registers */
diff --git a/sys/i386/isa/if_eg.c b/sys/i386/isa/if_eg.c
index d5c7e17..ff20a24 100644
--- a/sys/i386/isa/if_eg.c
+++ b/sys/i386/isa/if_eg.c
@@ -27,7 +27,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: if_eg.c,v 1.6 1995/10/26 20:29:32 julian Exp $
+ * $Id: if_eg.c,v 1.7 1995/11/04 17:07:22 bde Exp $
*/
/* To do:
@@ -422,7 +422,6 @@ egattach (struct isa_device *id)
ifp->if_output = ether_output;
ifp->if_start = egstart;
ifp->if_ioctl = egioctl;
- ifp->if_reset = egreset;
ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX;
/* Now we can attach the interface. */
diff --git a/sys/i386/isa/if_el.c b/sys/i386/isa/if_el.c
index 72fcc65..12f71d2 100644
--- a/sys/i386/isa/if_el.c
+++ b/sys/i386/isa/if_el.c
@@ -6,7 +6,7 @@
*
* Questions, comments, bug reports and fixes to kimmel@cs.umass.edu.
*
- * $Id: if_el.c,v 1.17 1995/10/28 15:39:02 phk Exp $
+ * $Id: if_el.c,v 1.18 1995/11/04 17:07:24 bde Exp $
*/
/* Except of course for the portions of code lifted from other FreeBSD
* drivers (mainly elread, elget and el_ioctl)
@@ -91,7 +91,7 @@ int el_ioctl(struct ifnet *,int,caddr_t);
int el_probe(struct isa_device *);
void el_start(struct ifnet *);
void el_reset(int);
-void el_watchdog(int);
+void el_watchdog(struct ifnet *);
static void el_stop(int);
static int el_xmit(struct el_softc *,int);
@@ -209,11 +209,9 @@ int el_attach(struct isa_device *idev)
ifp->if_unit = idev->id_unit;
ifp->if_name = "el";
ifp->if_mtu = ETHERMTU;
- ifp->if_init = el_init;
ifp->if_output = ether_output;
ifp->if_start = el_start;
ifp->if_ioctl = el_ioctl;
- ifp->if_reset = el_reset;
ifp->if_watchdog = el_watchdog;
ifp->if_flags = (IFF_BROADCAST | IFF_SIMPLEX);
@@ -819,14 +817,10 @@ el_ioctl(ifp, command, data)
}
/* Device timeout routine */
-void el_watchdog(int unit)
+void el_watchdog(struct ifnet *ifp)
{
- struct el_softc *sc;
-
- sc = &el_softc[unit];
-
- log(LOG_ERR,"el%d: device timeout\n",unit);
- sc->arpcom.ac_if.if_oerrors++;
- el_reset(unit);
+ log(LOG_ERR,"el%d: device timeout\n",ifp->if_unit);
+ ifp->if_oerrors++;
+ el_reset(ifp->if_unit);
}
#endif
diff --git a/sys/i386/isa/if_ep.c b/sys/i386/isa/if_ep.c
index 5cea129..54536f6 100644
--- a/sys/i386/isa/if_ep.c
+++ b/sys/i386/isa/if_ep.c
@@ -38,7 +38,7 @@
*/
/*
- * $Id: if_ep.c,v 1.33 1995/10/28 15:39:04 phk Exp $
+ * $Id: if_ep.c,v 1.34 1995/11/04 17:07:26 bde Exp $
*
* Promiscuous mode added and interrupt logic slightly changed
* to reduce the number of adapter failures. Transceiver select
@@ -117,7 +117,7 @@ void epread __P((struct ep_softc *));
void epreset __P((int));
void epstart __P((struct ifnet *));
void epstop __P((int));
-void epwatchdog __P((int));
+void epwatchdog __P((struct ifnet *));
static int send_ID_sequence __P((int));
static int get_eeprom_data __P((int, int));
@@ -427,12 +427,10 @@ epattach(is)
ifp->if_name = "ep";
ifp->if_mtu = ETHERMTU;
ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX;
- ifp->if_init = epinit;
ifp->if_output = ether_output;
ifp->if_start = epstart;
ifp->if_ioctl = epioctl;
ifp->if_watchdog = epwatchdog;
- ifp->if_timer=1;
if_attach(ifp);
kdc_ep[is->id_unit].kdc_state = DC_BUSY;
@@ -1246,36 +1244,19 @@ epioctl(ifp, cmd, data)
}
void
-epreset(unit)
- int unit;
-{
- int s = splimp();
-
- epstop(unit);
- epinit(unit);
- splx(s);
-}
-
-void
-epwatchdog(unit)
- int unit;
+epwatchdog(ifp)
+ struct ifnet *ifp;
{
- struct ep_softc *sc = &ep_softc[unit];
- struct ifnet *ifp=&sc->arpcom.ac_if;
-
/*
printf("ep: watchdog\n");
- log(LOG_ERR, "ep%d: watchdog\n", unit);
- ++sc->arpcom.ac_if.if_oerrors;
+ log(LOG_ERR, "ep%d: watchdog\n", ifp->if_unit);
+ ifp->if_oerrors++;
*/
- /* epreset(unit); */
ifp->if_flags &= ~IFF_OACTIVE;
epstart(ifp);
- epintr(unit);
-
- ifp->if_timer=1;
+ epintr(ifp->if_unit);
}
void
diff --git a/sys/i386/isa/if_fe.c b/sys/i386/isa/if_fe.c
index 01ec89a..a366f05 100644
--- a/sys/i386/isa/if_fe.c
+++ b/sys/i386/isa/if_fe.c
@@ -252,7 +252,7 @@ void fe_init ( int );
int fe_ioctl ( struct ifnet *, int, caddr_t );
void fe_start ( struct ifnet * );
void fe_reset ( int );
-void fe_watchdog ( int );
+void fe_watchdog ( struct ifnet * );
/* Local functions. Order of declaration is confused. FIXME. */
static int fe_probe_fmv ( struct isa_device *, struct fe_softc * );
@@ -1062,11 +1062,9 @@ fe_attach ( struct isa_device *isa_dev )
*/
sc->sc_if.if_unit = sc->sc_unit;
sc->sc_if.if_name = "fe";
- sc->sc_if.if_init = fe_init;
sc->sc_if.if_output = ether_output;
sc->sc_if.if_start = fe_start;
sc->sc_if.if_ioctl = fe_ioctl;
- sc->sc_if.if_reset = fe_reset;
sc->sc_if.if_watchdog = fe_watchdog;
/*
@@ -1246,27 +1244,27 @@ fe_stop ( int unit )
* generate an interrupt after a transmit has been started on it.
*/
void
-fe_watchdog ( int unit )
+fe_watchdog ( struct ifnet *ifp )
{
- struct fe_softc *sc = &fe_softc[unit];
+ struct fe_softc *sc = (struct fe_softc *)ifp;
#if FE_DEBUG >= 1
log( LOG_ERR, "fe%d: transmission timeout (%d+%d)%s\n",
- unit, sc->txb_sched, sc->txb_count,
- ( sc->sc_if.if_flags & IFF_UP ) ? "" : " when down" );
+ ifp->if_unit, sc->txb_sched, sc->txb_count,
+ ( ifp->if_flags & IFF_UP ) ? "" : " when down" );
#endif
#if FE_DEBUG >= 3
fe_dump( LOG_INFO, sc, NULL );
#endif
/* Record how many packets are lost by this accident. */
- sc->sc_if.if_oerrors += sc->txb_sched + sc->txb_count;
+ ifp->if_oerrors += sc->txb_sched + sc->txb_count;
/* Put the interface into known initial state. */
- if ( sc->sc_if.if_flags & IFF_UP ) {
- fe_reset( unit );
+ if ( ifp->if_flags & IFF_UP ) {
+ fe_reset( ifp->if_unit );
} else {
- fe_stop( unit );
+ fe_stop( ifp->if_unit );
}
}
diff --git a/sys/i386/isa/if_ie.c b/sys/i386/isa/if_ie.c
index 3c04d9a..069867a 100644
--- a/sys/i386/isa/if_ie.c
+++ b/sys/i386/isa/if_ie.c
@@ -43,7 +43,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: if_ie.c,v 1.28 1995/10/26 20:29:43 julian Exp $
+ * $Id: if_ie.c,v 1.29 1995/11/18 08:35:49 bde Exp $
*/
/*
@@ -588,11 +588,9 @@ ieattach(dvp)
ether_sprintf(ie->arpcom.ac_enaddr));
ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
- ifp->if_init = ieinit;
ifp->if_output = ether_output;
ifp->if_start = iestart;
ifp->if_ioctl = ieioctl;
- ifp->if_reset = iereset;
ifp->if_type = IFT_ETHER;
ifp->if_addrlen = 6;
ifp->if_hdrlen = 14;
diff --git a/sys/i386/isa/if_ix.c b/sys/i386/isa/if_ix.c
index 7d7c9f3..765b559 100644
--- a/sys/i386/isa/if_ix.c
+++ b/sys/i386/isa/if_ix.c
@@ -28,7 +28,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: if_ix.c,v 1.13 1995/10/31 18:41:11 phk Exp $
+ * $Id: if_ix.c,v 1.14 1995/11/04 17:07:31 bde Exp $
*/
#include "ix.h"
@@ -163,7 +163,7 @@ static int ixstop(struct ifnet *);
static int ixdone(struct ifnet *);
static int ixioctl(struct ifnet *, int, caddr_t);
static void ixreset(int);
-static void ixwatchdog(int);
+static void ixwatchdog(struct ifnet *);
static u_short ixeeprom_read(int, int);
static void ixeeprom_outbits(int, int, int);
static int ixeeprom_inbits(int);
@@ -591,12 +591,10 @@ ixattach(struct isa_device *dvp) {
ifp->if_unit = unit;
ifp->if_mtu = ETHERMTU;
ifp->if_flags = IFF_SIMPLEX | IFF_BROADCAST;
- ifp->if_init = ixinit;
ifp->if_output = ether_output;
ifp->if_start = ixstart;
ifp->if_done = ixdone;
ifp->if_ioctl = ixioctl;
- ifp->if_reset = ixreset;
ifp->if_watchdog = ixwatchdog;
ifp->if_type = IFT_ETHER;
ifp->if_addrlen = ETHER_ADDRESS_LENGTH;
@@ -1599,12 +1597,10 @@ ixreset(int unit) {
* watchdog from happening.
*/
void
-ixwatchdog(int unit) {
- ix_softc_t *sc = &ix_softc[unit];
-
- log(LOG_ERR, "ix%d: device timeout\n", unit);
- sc->arpcom.ac_if.if_oerrors++;
- ixreset(unit);
+ixwatchdog(struct ifnet *ifp) {
+ log(LOG_ERR, "ix%d: device timeout\n", ifp->if_unit);
+ ifp->if_oerrors++;
+ ixreset(ifp->if_unit);
return;
}
diff --git a/sys/i386/isa/if_le.c b/sys/i386/isa/if_le.c
index e22c765..2e38218 100644
--- a/sys/i386/isa/if_le.c
+++ b/sys/i386/isa/if_le.c
@@ -21,7 +21,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: if_le.c,v 1.22 1995/10/28 15:39:08 phk Exp $
+ * $Id: if_le.c,v 1.23 1995/11/04 17:07:33 bde Exp $
*/
/*
@@ -97,10 +97,10 @@ typedef u_short le_mcbits_t;
#define LE_MC_NBPW (1 << LE_MC_NBPW_LOG2)
#if __FreeBSD__ > 1
#define IF_RESET_ARGS int unit
-#define LE_RESET(ifp) (((sc)->le_if.if_reset)((sc)->le_if.if_unit))
+#define LE_RESET(ifp) (((sc)->if_reset)((sc)->le_if.if_unit))
#else
#define IF_RESET_ARGS int unit, int dummy
-#define LE_RESET(ifp) (((sc)->le_if.if_reset)((sc)->le_if.if_unit, 0))
+#define LE_RESET(ifp) (((sc)->if_reset)((sc)->le_if.if_unit, 0))
#endif
#if !defined(LE_NOLEMAC)
@@ -220,6 +220,8 @@ static void (*le_intrvec[NLE])(le_softc_t *sc);
*/
struct le_softc {
struct arpcom le_ac; /* Common Ethernet/ARP Structure */
+ void (*if_init) __P((int)); /* Interface init routine */
+ void (*if_reset) __P((int)); /* Interface reset routine */
caddr_t le_membase; /* Starting memory address (virtual) */
unsigned le_iobase; /* Starting I/O base address */
unsigned le_irq; /* Interrupt Request Value */
@@ -568,7 +570,7 @@ le_ioctl(
switch(ifa->ifa_addr->sa_family) {
#ifdef INET
case AF_INET: {
- (*ifp->if_init)(ifp->if_unit);
+ (*sc->if_init)(ifp->if_unit);
arp_ifinit((struct arpcom *)ifp, ifa);
break;
}
@@ -589,7 +591,7 @@ le_ioctl(
sizeof sc->le_ac.ac_enaddr);
}
- (*ifp->if_init)(ifp->if_unit);
+ (*sc->if_init)(ifp->if_unit);
break;
}
#endif /* IPX */
@@ -609,12 +611,12 @@ le_ioctl(
sizeof sc->le_ac.ac_enaddr);
}
- (*ifp->if_init)(ifp->if_unit);
+ (*sc->if_init)(ifp->if_unit);
break;
}
#endif /* NS */
default: {
- (*ifp->if_init)(ifp->if_unit);
+ (*sc->if_init)(ifp->if_unit);
break;
}
}
@@ -622,7 +624,7 @@ le_ioctl(
}
case SIOCSIFFLAGS: {
- (*ifp->if_init)(ifp->if_unit);
+ (*sc->if_init)(ifp->if_unit);
break;
}
@@ -638,7 +640,7 @@ le_ioctl(
if (error == ENETRESET) {
/* reset multicast filtering */
- (*ifp->if_init)(ifp->if_unit);
+ (*sc->if_init)(ifp->if_unit);
error = 0;
}
break;
@@ -885,9 +887,9 @@ lemac_probe(
/*
* Try to reset the unit
*/
- sc->le_if.if_init = lemac_init;
+ sc->if_init = lemac_init;
sc->le_if.if_start = lemac_start;
- sc->le_if.if_reset = lemac_reset;
+ sc->if_reset = lemac_reset;
sc->lemac_memmode = 2;
LE_RESET(sc);
if ((sc->le_flags & IFF_UP) == 0)
@@ -1561,8 +1563,8 @@ depca_probe(
if (!lance_init_adapmem(sc))
return 0;
- sc->le_if.if_reset = lance_reset;
- sc->le_if.if_init = lance_init;
+ sc->if_reset = lance_reset;
+ sc->if_init = lance_init;
sc->le_if.if_start = lance_start;
DEPCA_WRNICSR(sc, DEPCA_NICSR_SHE | DEPCA_NICSR_ENABINTR);
LE_RESET(sc);
diff --git a/sys/i386/isa/if_lnc.c b/sys/i386/isa/if_lnc.c
index a04c39e..ffc57a7 100644
--- a/sys/i386/isa/if_lnc.c
+++ b/sys/i386/isa/if_lnc.c
@@ -136,7 +136,7 @@ static int pcnet_probe(int);
static void lnc_init(int);
static void lnc_start(struct ifnet *);
static int lnc_ioctl(struct ifnet *, int, caddr_t);
-static void lnc_watchdog(int);
+static void lnc_watchdog(struct ifnet *);
static int lnc_probe(struct isa_device *);
static int lnc_attach(struct isa_device *);
#ifdef DEBUG
@@ -1088,11 +1088,9 @@ lnc_attach(struct isa_device * isa_dev)
sc->arpcom.ac_if.if_mtu = ETHERMTU;
sc->arpcom.ac_if.if_flags = IFF_BROADCAST | IFF_SIMPLEX;
sc->arpcom.ac_if.if_timer = 0;
- sc->arpcom.ac_if.if_init = lnc_init;
sc->arpcom.ac_if.if_output = ether_output;
sc->arpcom.ac_if.if_start = lnc_start;
sc->arpcom.ac_if.if_ioctl = lnc_ioctl;
- sc->arpcom.ac_if.if_reset = lnc_reset;
sc->arpcom.ac_if.if_watchdog = lnc_watchdog;
sc->arpcom.ac_if.if_type = IFT_ETHER;
sc->arpcom.ac_if.if_addrlen = ETHER_ADDR_LEN;
@@ -1668,11 +1666,11 @@ lnc_ioctl(struct ifnet * ifp, int command, caddr_t data)
}
static void
-lnc_watchdog(int unit)
+lnc_watchdog(struct ifnet *ifp)
{
- log(LOG_ERR, "lnc%d: Device timeout -- Resetting\n", unit);
- ++lnc_softc[unit].arpcom.ac_if.if_oerrors;
- lnc_reset(unit);
+ log(LOG_ERR, "lnc%d: Device timeout -- Resetting\n", ifp->if_unit);
+ ifp->if_oerrors++;
+ lnc_reset(ifp->if_unit);
}
#ifdef DEBUG
diff --git a/sys/i386/isa/if_ze.c b/sys/i386/isa/if_ze.c
index 15fefc1..6d964a1 100644
--- a/sys/i386/isa/if_ze.c
+++ b/sys/i386/isa/if_ze.c
@@ -47,7 +47,7 @@
*/
/*
- * $Id: if_ze.c,v 1.23 1995/10/28 15:39:12 phk Exp $
+ * $Id: if_ze.c,v 1.24 1995/11/18 08:39:28 bde Exp $
*/
#include "ze.h"
@@ -113,11 +113,11 @@
*/
struct ze_softc {
+ struct arpcom arpcom; /* ethernet common */
+
caddr_t maddr;
u_long iobase, irq;
- struct arpcom arpcom; /* ethernet common */
-
char *type_str; /* pointer to type string */
char *mau; /* type of media access unit */
u_short nic_addr; /* NIC (DS8390) I/O bus address */
@@ -158,7 +158,7 @@ static int ze_resume __P((void *visa_dev));
extern int ze_attach __P((struct isa_device *isa_dev));
extern void ze_reset __P((int unit));
extern void ze_stop __P((int unit));
-extern void ze_watchdog __P((int unit));
+extern void ze_watchdog __P((struct ifnet *ifp));
extern void ze_init __P((int unit));
static inline void ze_xmit __P((struct ifnet *ifp));
extern void ze_start __P((struct ifnet *ifp));
@@ -622,11 +622,9 @@ ze_attach(isa_dev)
ifp->if_unit = isa_dev->id_unit;
ifp->if_name = "ze" ;
ifp->if_mtu = ETHERMTU;
- ifp->if_init = ze_init;
ifp->if_output = ether_output;
ifp->if_start = ze_start;
ifp->if_ioctl = ze_ioctl;
- ifp->if_reset = ze_reset;
ifp->if_watchdog = ze_watchdog;
ifp->if_flags = (IFF_BROADCAST | IFF_SIMPLEX);
@@ -741,15 +739,15 @@ ze_stop(unit)
* generate an interrupt after a transmit has been started on it.
*/
void
-ze_watchdog(unit)
- int unit;
+ze_watchdog(ifp)
+ struct ifnet *ifp;
{
#if 1
- struct ze_softc *sc = &ze_softc[unit];
+ struct ze_softc *sc = (struct ze_softc *)ifp;
u_char isr, imr;
u_short imask;
- if(!(sc->arpcom.ac_if.if_flags & IFF_UP))
+ if(!(ifp->if_flags & IFF_UP))
return;
/* select page zero */
outb (sc->nic_addr + ED_P0_CR,
@@ -768,12 +766,12 @@ ze_watchdog(unit)
imask = inb(IO_ICU2) << 8 | inb(IO_ICU1);
log (LOG_ERR, "ze%d: device timeout, isr=%02x, imr=%02x, imask=%04x\n",
- unit, isr, imr, imask);
+ ifp->if_unit, isr, imr, imask);
#else
- log(LOG_ERR, "ze%d: device timeout\n", unit);
+ log(LOG_ERR, "ze%d: device timeout\n", ifp->if_unit);
#endif
- ze_reset(unit);
+ ze_reset(ifp->if_unit);
}
/*
diff --git a/sys/i386/isa/if_zp.c b/sys/i386/isa/if_zp.c
index 5c1dd15..80a4b24 100644
--- a/sys/i386/isa/if_zp.c
+++ b/sys/i386/isa/if_zp.c
@@ -34,7 +34,7 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* From: if_ep.c,v 1.9 1994/01/25 10:46:29 deraadt Exp $
- * $Id: if_zp.c,v 1.11 1995/10/28 15:39:13 phk Exp $
+ * $Id: if_zp.c,v 1.12 1995/11/18 08:58:14 bde Exp $
*/
/*-
* TODO:
@@ -284,7 +284,7 @@ void zpread __P((struct zp_softc *));
void zpreset __P((int));
void zpstart __P((struct ifnet *));
void zpstop __P((int));
-void zpwatchdog __P((int));
+void zpwatchdog __P((struct ifnet *));
struct isa_driver zpdriver = {
zpprobe,
@@ -913,7 +913,6 @@ zpattach(isa_dev)
ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX;
ifp->if_unit = isa_dev->id_unit;
ifp->if_name = "zp";
- ifp->if_init = zpinit;
ifp->if_output = ether_output;
ifp->if_start = zpstart;
ifp->if_ioctl = zpioctl;
@@ -2032,22 +2031,20 @@ zpreset(unit)
}
void
-zpwatchdog(unit)
- int unit;
+zpwatchdog(ifp)
+ struct ifnet *ifp;
{
- struct zp_softc *sc = &zp_softc[unit];
-
#ifdef ZP_DEBUG
printf("### zpwatchdog ####\n");
#endif /* ZP_DEBUG */
#ifdef MACH_KERNEL
- ++sc->ds_if.if_oerrors;
+ ifp->if_oerrors++;
#else /* MACH_KERNEL */
- log(LOG_ERR, "zp%d: watchdog\n", unit);
- ++sc->arpcom.ac_if.if_oerrors;
+ log(LOG_ERR, "zp%d: watchdog\n", ifp->if_unit);
+ ifp->if_oerrors++;
#endif /* MACH_KERNEL */
- zpreset(unit);
+ zpreset(ifp->if_unit);
}
void
OpenPOWER on IntegriCloud