From 8f1a543ee8b7fd55a3574a31ebe124a3203fdb23 Mon Sep 17 00:00:00 2001 From: harti Date: Wed, 6 Aug 2003 13:09:36 +0000 Subject: Honor the ATMIO_FLAG_ASYNC for asynchronuous open/close of VCs. --- sys/dev/patm/if_patm_ioctl.c | 12 +++++++----- sys/dev/patm/if_patm_rx.c | 4 ++-- sys/dev/patm/if_patm_tx.c | 4 ++-- sys/dev/patm/if_patmvar.h | 1 - 4 files changed, 11 insertions(+), 10 deletions(-) (limited to 'sys/dev/patm') diff --git a/sys/dev/patm/if_patm_ioctl.c b/sys/dev/patm/if_patm_ioctl.c index f279312..1bce9db 100644 --- a/sys/dev/patm/if_patm_ioctl.c +++ b/sys/dev/patm/if_patm_ioctl.c @@ -75,7 +75,7 @@ __FBSDID("$FreeBSD$"); * Open the VCC with the given parameters */ static int -patm_open_vcc(struct patm_softc *sc, struct atmio_openvcc *arg, u_int async) +patm_open_vcc(struct patm_softc *sc, struct atmio_openvcc *arg) { u_int cid; struct patm_vcc *vcc; @@ -120,7 +120,7 @@ patm_open_vcc(struct patm_softc *sc, struct atmio_openvcc *arg, u_int async) /* check some parameters */ vcc->cid = cid; vcc->vcc = arg->param; - vcc->vflags = async; + vcc->vflags = 0; vcc->rxhand = arg->rxhand; switch (vcc->vcc.aal) { @@ -209,6 +209,8 @@ patm_open_vcc1(struct patm_softc *sc, struct atm_pseudoioctl *ph) bzero(&v, sizeof(v)); v.param.flags = ATM_PH_FLAGS(&ph->aph) & (ATM_PH_AAL5 | ATM_PH_LLCSNAP); + v.param.flags |= ATMIO_FLAG_ASYNC; + v.param.vpi = ATM_PH_VPI(&ph->aph); v.param.vci = ATM_PH_VCI(&ph->aph); v.param.aal = (ATM_PH_FLAGS(&ph->aph) & ATM_PH_AAL5) @@ -217,7 +219,7 @@ patm_open_vcc1(struct patm_softc *sc, struct atm_pseudoioctl *ph) v.param.tparam.pcr = sc->ifatm.mib.pcr; v.rxhand = ph->rxhand; - return (patm_open_vcc(sc, &v, PATM_VCC_ASYNC)); + return (patm_open_vcc(sc, &v)); } /* @@ -254,7 +256,7 @@ patm_close_vcc(struct patm_softc *sc, struct atmio_closevcc *arg) if (vcc->vflags & PATM_VCC_RX_OPEN) patm_rx_vcc_close(sc, vcc); - if (vcc->vflags & PATM_VCC_ASYNC) + if (vcc->vcc.flags & ATMIO_FLAG_ASYNC) goto done; while (vcc->vflags & (PATM_VCC_TX_CLOSING | PATM_VCC_RX_CLOSING)) { @@ -402,7 +404,7 @@ patm_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) break; case SIOCATMOPENVCC: /* netgraph/harp internal use */ - error = patm_open_vcc(sc, (struct atmio_openvcc *)data, 0); + error = patm_open_vcc(sc, (struct atmio_openvcc *)data); break; case SIOCATMCLOSEVCC: /* netgraph and HARP internal use */ diff --git a/sys/dev/patm/if_patm_rx.c b/sys/dev/patm/if_patm_rx.c index 1df191c..419c9ad 100644 --- a/sys/dev/patm/if_patm_rx.c +++ b/sys/dev/patm/if_patm_rx.c @@ -216,7 +216,7 @@ patm_rx(struct patm_softc *sc, struct idt_rsqe *rsqe) patm_debug(sc, VCC, "%u.%u RX closed", vcc->vcc.vpi, vcc->vcc.vci); vcc->vflags &= ~PATM_VCC_RX_CLOSING; - if (vcc->vflags & PATM_VCC_ASYNC) { + if (vcc->vcc.flags & ATMIO_FLAG_ASYNC) { patm_rx_vcc_closed(sc, vcc); if (!(vcc->vflags & PATM_VCC_OPEN)) patm_vcc_closed(sc, vcc); @@ -323,7 +323,7 @@ patm_rx(struct patm_softc *sc, struct idt_rsqe *rsqe) #ifdef ENABLE_BPF if (!(vcc->vcc.flags & ATMIO_FLAG_NG) && - (vcc->vcc.flags & ATM_PH_AAL5) && + (vcc->vcc.aal == ATMIO_AAL_5) && (vcc->vcc.flags & ATM_PH_LLCSNAP)) BPF_MTAP(&sc->ifatm.ifnet, m); #endif diff --git a/sys/dev/patm/if_patm_tx.c b/sys/dev/patm/if_patm_tx.c index dad999e..f8338b8 100644 --- a/sys/dev/patm/if_patm_tx.c +++ b/sys/dev/patm/if_patm_tx.c @@ -385,7 +385,7 @@ patm_start(struct ifnet *ifp) #ifdef ENABLE_BPF if (!(vcc->vcc.flags & ATMIO_FLAG_NG) && - (vcc->vcc.flags & ATM_PH_AAL5) && + (vcc->vcc.aal == ATMIO_AAL_5) && (vcc->vcc.flags & ATM_PH_LLCSNAP)) BPF_MTAP(ifp, m); #endif @@ -712,7 +712,7 @@ patm_tx(struct patm_softc *sc, u_int stamp, u_int status) vcc->scd = NULL; vcc->vflags &= ~PATM_VCC_TX_CLOSING; - if (vcc->vflags & PATM_VCC_ASYNC) { + if (vcc->vcc.flags & ATMIO_FLAG_ASYNC) { patm_tx_vcc_closed(sc, vcc); if (!(vcc->vflags & PATM_VCC_OPEN)) patm_vcc_closed(sc, vcc); diff --git a/sys/dev/patm/if_patmvar.h b/sys/dev/patm/if_patmvar.h index c146990..5a350ed 100644 --- a/sys/dev/patm/if_patmvar.h +++ b/sys/dev/patm/if_patmvar.h @@ -207,7 +207,6 @@ struct patm_vcc { #define PATM_VCC_TX_CLOSING 0x0004 #define PATM_VCC_RX_CLOSING 0x0008 #define PATM_VCC_OPEN 0x000f /* all the above */ -#define PATM_VCC_ASYNC 0x0010 #define PATM_RAW_CELL 0x0000 /* 53 byte cells */ #define PATM_RAW_NOHEC 0x0100 /* 52 byte cells */ -- cgit v1.1