Init the decriptors at boot time rather than at interface attach time.

Now that we have pcmcia hot-plug, it's not the same. Fixes kern/3189.
This commit is contained in:
bouyer 1998-12-04 11:04:37 +00:00
parent cdbe530495
commit 433c02431e
1 changed files with 18 additions and 22 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: bpf.c,v 1.45 1998/11/05 22:50:15 jonathan Exp $ */
/* $NetBSD: bpf.c,v 1.46 1998/12/04 11:04:37 bouyer Exp $ */
/*
* Copyright (c) 1990, 1991, 1993
@ -107,19 +107,6 @@ int bpf_bufsize = BPF_BUFSIZE;
struct bpf_if *bpf_iflist;
struct bpf_d bpf_dtab[NBPFILTER];
#if BSD >= 199207 || NetBSD0_9 >= 2
/*
* bpfilterattach() is called at boot time in new systems. We do
* nothing here since old systems will not call this.
*/
/* ARGSUSED */
void
bpfilterattach(n)
int n;
{
}
#endif
static int bpf_allocbufs __P((struct bpf_d *));
static int bpf_allocbufs __P((struct bpf_d *));
static void bpf_freed __P((struct bpf_d *));
@ -349,6 +336,23 @@ bpf_detachd(d)
#define D_MARKFREE(d) ((d)->bd_next = (d))
#define D_MARKUSED(d) ((d)->bd_next = 0)
/*
* bpfilterattach() is called at boot time.
*/
/* ARGSUSED */
void
bpfilterattach(n)
int n;
{
int i;
/*
* Mark all the descriptors free.
*/
for (i = 0; i < NBPFILTER; ++i)
D_MARKFREE(&bpf_dtab[i]);
}
/*
* Open ethernet device. Returns ENXIO for illegal minor device number,
* EBUSY if file is open by another process.
@ -1301,7 +1305,6 @@ bpfattach(driverp, ifp, dlt, hdrlen)
u_int dlt, hdrlen;
{
struct bpf_if *bp;
int i;
#if BSD < 199103
static struct bpf_if bpf_ifs[NBPFILTER];
static int bpfifno;
@ -1331,13 +1334,6 @@ bpfattach(driverp, ifp, dlt, hdrlen)
*/
bp->bif_hdrlen = BPF_WORDALIGN(hdrlen + SIZEOF_BPF_HDR) - hdrlen;
/*
* Mark all the descriptors free if this hasn't been done.
*/
if (!D_ISFREE(&bpf_dtab[0]))
for (i = 0; i < NBPFILTER; ++i)
D_MARKFREE(&bpf_dtab[i]);
#if 0
printf("bpf: %s attached\n", ifp->if_xname);
#endif