From 449f11fac6fbc28673616f03b6fa63500e2313f5 Mon Sep 17 00:00:00 2001 From: Hartmut Brandt Date: Tue, 5 Aug 2003 12:26:26 +0000 Subject: [PATCH] Use the generic getvccs function from net/if_atmsubr.c and remove the home-grown version. --- sys/dev/en/midway.c | 58 ++++----------------------------------------- 1 file changed, 4 insertions(+), 54 deletions(-) diff --git a/sys/dev/en/midway.c b/sys/dev/en/midway.c index e6726a80e376..8693ba9c3999 100644 --- a/sys/dev/en/midway.c +++ b/sys/dev/en/midway.c @@ -1511,54 +1511,6 @@ en_init(struct en_softc *sc) /* * Ioctls */ -/* - * Return a table of all currently open VCCs. - */ -static struct atmio_vcctable * -en_get_vccs(struct en_softc *sc, int flags) -{ - struct atmio_vcctable *vccs; - struct atmio_vcc *v; - u_int vci, alloc; - - alloc = 10; - vccs = NULL; - do { - vccs = reallocf(vccs, - sizeof(*vccs) + alloc * sizeof(vccs->vccs[0]), - M_TEMP, flags); - if (vccs == NULL) - return (NULL); - - vccs->count = 0; - v = vccs->vccs; - EN_LOCK(sc); - for (vci = 0; vci < MID_N_VC; vci++) { - if (sc->vccs[vci] == NULL) - continue; - - if (vccs->count++ == alloc) { - alloc *= 2; - break; - } - bzero(v, sizeof(*v)); - v->flags = ATMIO_FLAG_PVC | sc->vccs[vci]->vcc.flags; - v->vpi = 0; - v->vci = vci; - if (sc->vccs[vci]->vcc.flags & ATM_PH_AAL5) - v->aal = ATMIO_AAL_5; - else - v->aal = ATMIO_AAL_0; - v->traffic = ATMIO_TRAFFIC_UBR; - v->tparam.pcr = sc->ifatm.mib.pcr; - v++; - } - EN_UNLOCK(sc); - } while (vci < MID_N_VC); - - return (vccs); -} - /* * en_ioctl: handle ioctl requests * @@ -1641,7 +1593,8 @@ en_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) break; case SIOCATMGETVCCS: /* internal netgraph use */ - vtab = en_get_vccs(sc, M_NOWAIT); + vtab = atm_getvccs((struct atmio_vcc **)sc->vccs, + MID_N_VC, sc->vccs_open, &sc->en_mtx, 0); if (vtab == NULL) { error = ENOMEM; break; @@ -1650,11 +1603,8 @@ en_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) break; case SIOCATMGVCCS: /* return vcc table */ - vtab = en_get_vccs(sc, M_WAITOK); - if (vtab == NULL) { - error = ENOMEM; - break; - } + vtab = atm_getvccs((struct atmio_vcc **)sc->vccs, + MID_N_VC, sc->vccs_open, &sc->en_mtx, 1); error = copyout(vtab, ifr->ifr_data, sizeof(*vtab) + vtab->count * sizeof(vtab->vccs[0])); free(vtab, M_DEVBUF);