Remove spl*() calls from the netproto/atm driver, replacing them with
authorMatthew Dillon <dillon@dragonflybsd.org>
Thu, 2 Jun 2005 22:37:52 +0000 (22:37 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Thu, 2 Jun 2005 22:37:52 +0000 (22:37 +0000)
critical sections.

23 files changed:
sys/netproto/atm/atm_aal5.c
sys/netproto/atm/atm_cm.c
sys/netproto/atm/atm_device.c
sys/netproto/atm/atm_if.c
sys/netproto/atm/atm_if.h
sys/netproto/atm/atm_signal.c
sys/netproto/atm/atm_subr.c
sys/netproto/atm/atm_usrreq.c
sys/netproto/atm/ipatm/ipatm_load.c
sys/netproto/atm/ipatm/ipatm_output.c
sys/netproto/atm/ipatm/ipatm_vcm.c
sys/netproto/atm/sigpvc/sigpvc_if.c
sys/netproto/atm/spans/spans_arp.c
sys/netproto/atm/spans/spans_cls.c
sys/netproto/atm/spans/spans_if.c
sys/netproto/atm/spans/spans_subr.c
sys/netproto/atm/uni/uni_load.c
sys/netproto/atm/uni/uniarp_input.c
sys/netproto/atm/uni/uniarp_vcm.c
sys/netproto/atm/uni/unisig_if.c
sys/netproto/atm/uni/unisig_msg.c
sys/netproto/atm/uni/unisig_sigmgr_state.c
sys/netproto/atm/uni/unisig_subr.c

index 91e9fc2..8d77ae2 100644 (file)
@@ -24,7 +24,7 @@
  * notice must be reproduced on all copies.
  *
  *     @(#) $FreeBSD: src/sys/netatm/atm_aal5.c,v 1.6 1999/10/09 23:24:59 green Exp $
- *     @(#) $DragonFly: src/sys/netproto/atm/atm_aal5.c,v 1.8 2005/02/01 00:51:50 joerg Exp $
+ *     @(#) $DragonFly: src/sys/netproto/atm/atm_aal5.c,v 1.9 2005/06/02 22:37:45 dillon Exp $
  */
 
 /*
@@ -177,8 +177,8 @@ static Atm_attributes       atm_aal5_defattr = {
  */
 #ifdef DIAGNOSTIC
 #define ATM_INTRO(f)                                           \
-       int             s, err = 0;                             \
-       s = splnet();                                           \
+       int             err = 0;                                \
+       crit_enter();                                           \
        ATM_DEBUG2("aal5 socket %s (%p)\n", f, so);             \
        /*                                                      \
         * Stack queue should have been drained                 \
@@ -188,8 +188,8 @@ static Atm_attributes       atm_aal5_defattr = {
        ;
 #else /* !DIAGNOSTIC */
 #define ATM_INTRO(f)                                           \
-       int             s, err = 0;                             \
-       s = splnet();                                           \
+       int             err = 0;                                \
+       crit_enter();                                           \
        ;
 #endif /* DIAGNOSTIC */
 
@@ -198,7 +198,7 @@ static Atm_attributes       atm_aal5_defattr = {
         * Drain any deferred calls                             \
         */                                                     \
        STACK_DRAIN();                                          \
-       (void) splx(s);                                         \
+       crit_exit();                                            \
        return (err);                                           \
        ;
 
@@ -656,7 +656,7 @@ atm_aal5_peeraddr(struct socket *so, struct sockaddr **addr)
  * problems are encountered, we will just tell the connection manager to
  * reject the call.
  *
- * Called at splnet.
+ * Called from a critical section.
  *
  * Arguments:
  *     tok     owner's matched listening token
index 13eca59..a4d867d 100644 (file)
@@ -24,7 +24,7 @@
  * notice must be reproduced on all copies.
  *
  *     @(#) $FreeBSD: src/sys/netatm/atm_cm.c,v 1.6 1999/08/28 00:48:34 peter Exp $
- *     @(#) $DragonFly: src/sys/netproto/atm/atm_cm.c,v 1.5 2004/09/16 22:59:06 joerg Exp $
+ *     @(#) $DragonFly: src/sys/netproto/atm/atm_cm.c,v 1.6 2005/06/02 22:37:45 dillon Exp $
  */
 
 /*
@@ -145,7 +145,7 @@ atm_cm_connect(epp, token, ap, copp)
        struct sigmgr   *smp;
        struct stack_list       sl;
        void            (*upf)(int, void *, int, int);
-       int             s, sli, err, err2;
+       int             sli, err, err2;
 
        *copp = NULL;
        cvp = NULL;
@@ -310,7 +310,7 @@ atm_cm_connect(epp, token, ap, copp)
         */
        sl.sl_sap[sli] = 0;
 
-       s = splnet();
+       crit_enter();
 
        /*
         * Let multiplexors decide whether we need a new VCC
@@ -346,7 +346,7 @@ atm_cm_connect(epp, token, ap, copp)
                cop->co_mxh = cvp->cvc_conn->co_mxh;
                *copp = cop;
 
-               (void) splx(s);
+               crit_exit();
                return (err);
 
        default:
@@ -466,7 +466,7 @@ atm_cm_connect(epp, token, ap, copp)
        }
 
 donex:
-       (void) splx(s);
+       crit_exit();
 
 done:
        if (err && err != EINPROGRESS) {
@@ -479,11 +479,11 @@ done:
                /*
                 * Finish connection setup
                 */
-               s = splnet();
+               crit_enter();
                cvp->cvc_flags |= CVCF_CONNQ;
                ENQUEUE(cvp, Atm_connvc, cvc_q, atm_connection_queue);
                LINK2TAIL(cop, Atm_connection, cop->co_mxh, co_next);
-               (void) splx(s);
+               crit_exit();
                *copp = cop;
        }
        return (err);
@@ -523,7 +523,7 @@ atm_cm_listen(epp, token, ap, copp)
        Atm_connection  **copp;
 {
        Atm_connection  *cop;
-       int             s, err = 0;
+       int             err = 0;
 
        *copp = NULL;
 
@@ -699,7 +699,7 @@ atm_cm_listen(epp, token, ap, copp)
        /*
         * Now try to register the listening connection
         */
-       s = splnet();
+       crit_enter();
        if (atm_cm_match(cop->co_lattr, NULL) != NULL) {
                /*
                 * Can't have matching listeners
@@ -711,7 +711,7 @@ atm_cm_listen(epp, token, ap, copp)
        LINK2TAIL(cop, Atm_connection, atm_listen_queue, co_next);
 
 donex:
-       (void) splx(s);
+       crit_exit();
 
 done:
        if (err) {
@@ -778,7 +778,7 @@ atm_cm_addllc(epp, token, llc, ecop, copp)
 {
        Atm_connection  *cop, *cop2;
        Atm_connvc      *cvp;
-       int             s, err;
+       int             err;
 
        *copp = NULL;
 
@@ -805,7 +805,7 @@ atm_cm_addllc(epp, token, llc, ecop, copp)
        cop->co_toku = token;
        cop->co_llc = *llc;
 
-       s = splnet();
+       crit_enter();
 
        /*
         * Ensure that supplied connection is really valid
@@ -877,7 +877,7 @@ atm_cm_addllc(epp, token, llc, ecop, copp)
        cop->co_mxh = ecop->co_mxh;
 
 done:
-       (void) splx(s);
+       crit_exit();
 
        if (err && err != EINPROGRESS) {
                /*
@@ -964,9 +964,8 @@ atm_cm_release(cop, cause)
        struct t_atm_cause      *cause;
 {
        Atm_connvc      *cvp;
-       int             s;
 
-       s = splnet();
+       crit_enter();
 
        /*
         * First, a quick state validation check
@@ -985,7 +984,7 @@ atm_cm_release(cop, cause)
                break;
 
        case COS_INCONN:
-               (void) splx(s);
+               crit_exit();
                return (EFAULT);
 
        default:
@@ -1006,11 +1005,11 @@ atm_cm_release(cop, cause)
                        break;
 
                case CVCS_INCOMING:
-                       (void) splx(s);
+                       crit_exit();
                        return (EFAULT);
 
                case CVCS_CLEAR:
-                       (void) splx(s);
+                       crit_exit();
                        return (EALREADY);
 
                default:
@@ -1136,7 +1135,7 @@ atm_cm_incoming(vcp, ap)
        Atm_attributes  *ap;
 {
        Atm_connvc      *cvp;
-       int             s, err;
+       int             err;
 
 
        /*
@@ -1262,9 +1261,9 @@ atm_cm_incoming(vcp, ap)
        /*
         * Control queue length
         */
-       s = splnet();
+       crit_enter();
        if (atm_incoming_qlen >= ATM_CALLQ_MAX) {
-               (void) splx(s);
+               crit_exit();
                err = EBUSY;
                goto fail;
        }
@@ -1283,7 +1282,7 @@ atm_cm_incoming(vcp, ap)
         */
        vcp->vc_connvc = cvp;
 
-       (void) splx(s);
+       crit_exit();
 
        return (0);
 
@@ -1316,9 +1315,9 @@ atm_cm_connected(cvp)
 {
        Atm_connection  *cop, *cop2;
        KBuffer         *m;
-       int             s, err;
+       int             err;
 
-       s = splnet();
+       crit_enter();
 
        /*
         * Validate connection vcc
@@ -1348,7 +1347,7 @@ atm_cm_connected(cvp)
                                cop = cop2;
                        }
                        atm_cm_closevc(cvp);
-                       (void) splx(s);
+                       crit_exit();
                        return;
                }
                break;
@@ -1398,7 +1397,7 @@ atm_cm_connected(cvp)
                cop = cop2;
        }
 
-       (void) splx(s);
+       crit_exit();
 
        /*
         * Input any queued packets
@@ -1437,7 +1436,6 @@ atm_cm_cleared(cvp)
        Atm_connvc      *cvp;
 {
        Atm_connection  *cop, *cop2;
-       int             s;
 
 #ifdef DIAGNOSTIC
        if ((cvp->cvc_state == CVCS_FREE) ||
@@ -1447,7 +1445,7 @@ atm_cm_cleared(cvp)
 
        cvp->cvc_state = CVCS_CLEAR;
 
-       s = splnet();
+       crit_enter();
 
        /*
         * Terminate all connections
@@ -1464,7 +1462,7 @@ atm_cm_cleared(cvp)
         */
        atm_cm_closevc(cvp);
 
-       (void) splx(s);
+       crit_exit();
 
        return;
 }
@@ -1488,21 +1486,20 @@ atm_cm_procinq(arg)
        void    *arg;
 {
        Atm_connvc      *cvp;
-       int             cnt = 0, s;
+       int             cnt = 0;
 
        /*
         * Only process incoming calls up to our quota
         */
        while (cnt++ < ATM_CALLQ_MAX) {
-
-               s = splnet();
+               crit_enter();
 
                /*
                 * Get next awaiting call
                 */
                cvp = Q_HEAD(atm_incoming_queue, Atm_connvc);
                if (cvp == NULL) {
-                       (void) splx(s);
+                       crit_exit();
                        break;
                }
                DEQUEUE(cvp, Atm_connvc, cvc_q, atm_incoming_queue);
@@ -1514,7 +1511,7 @@ atm_cm_procinq(arg)
                 */
                atm_cm_incall(cvp);
 
-               (void) splx(s);
+               crit_exit();
        }
 
        /*
@@ -1537,7 +1534,7 @@ atm_cm_procinq(arg)
  * If there are no listeners for the call, the signalling manager will be
  * notified of a call rejection.
  *
- * Called at splnet.
+ * Called from a critical section.
  *
  * Arguments:
  *     cvp     pointer to connection VCC for incoming call
@@ -1729,7 +1726,7 @@ fail:
  * endpoints by the Connection Manager.  If the call setup fails, then the
  * endpoints will receive a "call cleared" notification.
  *
- * Called at splnet.
+ * Called from a critical section.
  *
  * Arguments:
  *     cvp     pointer to connection VCC for incoming call
@@ -1911,7 +1908,7 @@ done:
  * argument may be supplied in order to allow multiple listeners to share 
  * an incoming call (if supported by the listeners).
  *
- * Called at splnet.
+ * Called from a critical section.
  *
  * Arguments:
  *     ap      pointer to attributes to be matched
@@ -2107,7 +2104,7 @@ atm_cm_match(ap, pcop)
  * this function will attempt to locate an existing connection which meets
  * the requirements of the supplied attributes.
  *
- * Called at splnet.
+ * Called from a critical section.
  *
  * Arguments:
  *     ap      pointer to requested attributes
@@ -2292,7 +2289,7 @@ atm_cm_share_llc(ap)
  * user, if necessary, and freeing up control block memory.  The caller
  * is responsible for managing the connection VCC.
  *
- * Called at splnet.
+ * Called from a critical section.
  *
  * Arguments:
  *     cop     pointer to connection block
@@ -2389,7 +2386,7 @@ atm_cm_closeconn(cop, cause)
  * the call to the signalling manager, terminating the VCC protocol stack,
  * and freeing up control block memory.
  *
- * Called at splnet.
+ * Called from a critical section.
  *
  * Arguments:
  *     cvp     pointer to connection VCC block
@@ -2565,7 +2562,7 @@ atm_cm_closevc(cvp)
  * Called when a previously scheduled cvc control block timer expires.  
  * Processing will be based on the current cvc state.
  *
- * Called at splnet.
+ * Called from a critical section.
  *
  * Arguments:
  *     tip     pointer to cvc timer control block
@@ -2831,7 +2828,6 @@ atm_cm_cpcs_upper(cmd, tok, arg1, arg2)
        Atm_connvc      *cvp = tok;
        KBuffer         *m;
        void            *bp;
-       int             s;
 
        switch (cmd) {
 
@@ -2898,7 +2894,7 @@ atm_cm_cpcs_upper(cmd, tok, arg1, arg2)
                        }
                        KB_DATASTART(m, bp, void *);
 
-                       s = splnet();
+                       crit_enter();
 
                        while (cop) {
                                if (KM_CMP(bp, cop->co_llc.v.llc_info,
@@ -2907,7 +2903,7 @@ atm_cm_cpcs_upper(cmd, tok, arg1, arg2)
                                cop = cop->co_next;
                        }
 
-                       (void) splx(s);
+                       crit_exit();
 
                        if (cop == NULL) {
                                /*
@@ -3390,8 +3386,7 @@ int
 atm_endpoint_register(epp)
        Atm_endpoint    *epp;
 {
-       int             s = splnet();
-
+       crit_enter();
        /*
         * See if we need to be initialized
         */
@@ -3402,11 +3397,11 @@ atm_endpoint_register(epp)
         * Validate endpoint
         */
        if (epp->ep_id > ENDPT_MAX) {
-               (void) splx(s);
+               crit_exit();
                return (EINVAL);
        }
        if (atm_endpoints[epp->ep_id] != NULL) {
-               (void) splx(s);
+               crit_exit();
                return (EEXIST);
        }
 
@@ -3415,7 +3410,7 @@ atm_endpoint_register(epp)
         */
        atm_endpoints[epp->ep_id] = epp;
 
-       (void) splx(s);
+       crit_exit();
        return (0);
 }
 
@@ -3439,17 +3434,17 @@ int
 atm_endpoint_deregister(epp)
        Atm_endpoint    *epp;
 {
-       int     s = splnet();
+       crit_enter();
 
        /*
         * Validate endpoint
         */
        if (epp->ep_id > ENDPT_MAX) {
-               (void) splx(s);
+               crit_exit();
                return (EINVAL);
        }
        if (atm_endpoints[epp->ep_id] != epp) {
-               (void) splx(s);
+               crit_exit();
                return (ENOENT);
        }
 
@@ -3458,7 +3453,7 @@ atm_endpoint_deregister(epp)
         */
        atm_endpoints[epp->ep_id] = NULL;
 
-       (void) splx(s);
+       crit_exit();
        return (0);
 }
 
index ae3e4b3..e966827 100644 (file)
@@ -24,7 +24,7 @@
  * notice must be reproduced on all copies.
  *
  *     @(#) $FreeBSD: src/sys/netatm/atm_device.c,v 1.5 1999/08/28 00:48:35 peter Exp $
- *     @(#) $DragonFly: src/sys/netproto/atm/atm_device.c,v 1.6 2005/02/01 00:51:50 joerg Exp $
+ *     @(#) $DragonFly: src/sys/netproto/atm/atm_device.c,v 1.7 2005/06/02 22:37:45 dillon Exp $
  */
 
 /*
@@ -79,7 +79,7 @@ static struct t_atm_cause     atm_dev_cause = {
 /*
  * ATM Device Stack Instantiation
  *
- * Called at splnet.
+ * Called from a critical section.
  *
  * Arguments
  *     ssp             pointer to array of stack definition pointers
@@ -220,7 +220,6 @@ atm_dev_lower(cmd, tok, arg1, arg2)
        Cmn_unit        *cup = (Cmn_unit *)cvcp->cvc_attr.nif->nif_pif;
        struct vccb     *vcp;
        u_int           state;
-       int             s;
 
        switch ( cmd ) {
 
@@ -257,20 +256,20 @@ atm_dev_lower(cmd, tok, arg1, arg2)
                 * Tell the device to open the VCC
                 */
                cvp->cv_state = CVS_INITED;
-               s = splimp();
+               crit_enter();
                if ((*cup->cu_openvcc)(cup, cvp)) {
                        atm_cm_abort(cvp->cv_connvc, &atm_dev_cause);
-                       (void) splx(s);
+                       crit_exit();
                        break;
                }
-               (void) splx(s);
+               crit_exit();
                break;
 
        case CPCS_TERM: {
                KBuffer         *m, *prev, *next;
                int             *ip;
 
-               s = splimp();
+               crit_enter();
 
                /*
                 * Disconnect the VCC - ignore return code
@@ -320,7 +319,7 @@ atm_dev_lower(cmd, tok, arg1, arg2)
                                prev = m;
                        }
                }
-               (void) splx(s);
+               crit_exit();
 
                /*
                 * Free VCC resources
@@ -404,9 +403,9 @@ atm_dev_alloc(size, align, flags)
        Mem_blk         *mbp;
        Mem_ent         *mep;
        u_int           kalign, ksize;
-       int             s, i;
+       int             i;
 
-       s = splimp();
+       crit_enter();
 
        /*
         * Find a free Mem_ent
@@ -430,7 +429,7 @@ atm_dev_alloc(size, align, flags)
                                M_INTWAIT | M_NULLOK);
                if (mbp == NULL) {
                        log(LOG_ERR, "atm_dev_alloc: Mem_blk failure\n");
-                       (void) splx(s);
+                       crit_exit();
                        return (NULL);
                }
                KM_ZERO(mbp, sizeof(Mem_blk));
@@ -468,7 +467,7 @@ atm_dev_alloc(size, align, flags)
        if (mep->me_kaddr == NULL) {
                log(LOG_ERR, "atm_dev_alloc: %skernel memory unavailable\n",
                        (flags & ATM_DEV_NONCACHE) ? "non-cacheable " : "");
-               (void) splx(s);
+               crit_exit();
                return (NULL);
        }
 
@@ -487,7 +486,7 @@ atm_dev_alloc(size, align, flags)
        ATM_DEBUG4("atm_dev_alloc: size=%d, align=%d, flags=%d, uaddr=%p\n", 
                size, align, flags, mep->me_uaddr);
 
-       (void) splx(s);
+       crit_exit();
 
        return (mep->me_uaddr);
 }
@@ -513,11 +512,11 @@ atm_dev_free(volatile void *uaddr)
 {
        Mem_blk         *mbp;
        Mem_ent         *mep;
-       int             s, i;
+       int             i;
 
        ATM_DEBUG1("atm_dev_free: uaddr=%p\n", uaddr);
 
-       s = splimp();
+       crit_enter();
 
        /*
         * Protect ourselves...
@@ -559,7 +558,7 @@ atm_dev_free(volatile void *uaddr)
         */
        mep->me_uaddr = NULL;
 
-       (void) splx(s);
+       crit_exit();
 
        return;
 }
@@ -684,8 +683,8 @@ atm_dev_vcc_find(cup, vpi, vci, type)
        u_int           type;
 {
        Cmn_vcc         *cvp;
-       int             s = splnet();
 
+       crit_enter();
        /*
         * Go find VCC
         *
@@ -699,8 +698,7 @@ atm_dev_vcc_find(cup, vpi, vci, type)
                    ((vcp->vc_type & type) == type))
                        break;
        }
-
-       (void) splx(s);
+       crit_exit();
        return (cvp);
 }
 
@@ -725,9 +723,9 @@ atm_unload()
 {
        Mem_blk         *mbp;
        Mem_ent         *mep;
-       int             s, i;
+       int             i;
 
-       s = splimp();
+       crit_enter();
 
        /*
         * Free up all of our memory management storage
@@ -751,7 +749,7 @@ atm_unload()
                KM_FREE((caddr_t) mbp, sizeof(Mem_blk), M_DEVBUF);
        }
 
-       (void) splx(s);
+       crit_exit();
 
        return;
 }
index f1688c5..9bcae49 100644 (file)
@@ -24,7 +24,7 @@
  * notice must be reproduced on all copies.
  *
  *     @(#) $FreeBSD: src/sys/netatm/atm_if.c,v 1.5 1999/08/28 00:48:35 peter Exp $
- *     @(#) $DragonFly: src/sys/netproto/atm/atm_if.c,v 1.9 2005/02/01 00:51:50 joerg Exp $
+ *     @(#) $DragonFly: src/sys/netproto/atm/atm_if.c,v 1.10 2005/06/02 22:37:45 dillon Exp $
  */
 
 /*
@@ -78,7 +78,6 @@ atm_physif_register(cup, name, sdp)
        struct stack_defn       *sdp;
 {
        struct atm_pif  *pip;
-       int             s;
 
        /*
         * See if we need to be initialized
@@ -93,7 +92,7 @@ atm_physif_register(cup, name, sdp)
                return (EALREADY);
        }
 
-       s = splnet();
+       crit_enter();
 
        /*
         * Make sure an interface is only registered once
@@ -101,7 +100,7 @@ atm_physif_register(cup, name, sdp)
        for (pip = atm_interface_head; pip != NULL; pip = pip->pif_next) {
                if ((cup->cu_unit == pip->pif_unit) && 
                    (strcmp(name, pip->pif_name) == 0)) {
-                       (void) splx(s);
+                       crit_exit();
                        return (EEXIST);
                }
        }
@@ -122,7 +121,7 @@ atm_physif_register(cup, name, sdp)
        LINK2TAIL(pip, struct atm_pif, atm_interface_head, pif_next);
        cup->cu_flags |= CUF_REGISTER;
 
-       (void) splx(s);
+       crit_exit();
        return (0);
 }
 
@@ -149,7 +148,8 @@ atm_physif_deregister(cup)
        struct atm_pif  *pip = (struct atm_pif *)&cup->cu_pif;
        Cmn_vcc         *cvp;
        int     err;
-       int     s = splnet();
+
+       crit_enter();
 
        /*
         * Detach and deregister, if needed
@@ -162,7 +162,7 @@ atm_physif_deregister(cup)
                if (pip->pif_sigmgr != NULL) {
                        err = atm_sigmgr_detach(pip);
                        if (err && (err != ENOENT)) {
-                               (void) splx(s);
+                               crit_exit();
                                return (err);
                        }
                }
@@ -171,7 +171,7 @@ atm_physif_deregister(cup)
                 * Make sure signalling manager is detached
                 */
                if (pip->pif_sigmgr != NULL) {
-                       (void) splx(s);
+                       crit_exit();
                        return (EBUSY);
                }
 
@@ -198,7 +198,7 @@ atm_physif_deregister(cup)
        }
        cup->cu_vcc = (Cmn_vcc *)NULL;
 
-       (void) splx(s);
+       crit_exit();
 
        return (0);
 }
@@ -219,8 +219,8 @@ atm_physif_freenifs(pip)
        struct atm_pif  *pip;
 {
        struct atm_nif  *nip = pip->pif_nif;
-       int     s = splnet();
 
+       crit_enter();
        while ( nip ) 
        {
                /*
@@ -238,7 +238,7 @@ atm_physif_freenifs(pip)
        }
        pip->pif_nif = (struct atm_nif *)NULL;
 
-       (void) splx(s);
+       crit_exit();
 
        return;
 }
@@ -249,7 +249,7 @@ atm_physif_freenifs(pip)
  *
  * See <netatm/atm_ioctl.h> for definitions.
  *
- * Called at splnet.
+ * Called from a critical section.
  *
  * Arguments:
  *     code                    Ioctl function (sub)code
@@ -614,8 +614,8 @@ atm_netconv_register(ncp)
        struct atm_ncm  *ncp;
 {
        struct atm_ncm  *tdp;
-       int             s = splnet();
 
+       crit_enter();
        /*
         * See if we need to be initialized
         */
@@ -626,7 +626,7 @@ atm_netconv_register(ncp)
         * Validate protocol family
         */
        if (ncp->ncm_family > AF_MAX) {
-               (void) splx(s);
+               crit_exit();
                return (EINVAL);
        }
 
@@ -635,7 +635,7 @@ atm_netconv_register(ncp)
         */
        for (tdp = atm_netconv_head; tdp != NULL; tdp = tdp->ncm_next) {
                if (tdp->ncm_family == ncp->ncm_family) {
-                       (void) splx(s);
+                       crit_exit();
                        return (EEXIST);
                }
        }
@@ -650,7 +650,7 @@ atm_netconv_register(ncp)
         */
        atm_ifouttbl[ncp->ncm_family] = ncp->ncm_ifoutput;
 
-       (void) splx(s);
+       crit_exit();
        return (0);
 }
 
@@ -674,7 +674,9 @@ int
 atm_netconv_deregister(ncp)
        struct atm_ncm  *ncp;
 {
-       int     found, s = splnet();
+       int     found;
+
+       crit_enter();
 
        /*
         * Remove module from list
@@ -682,7 +684,7 @@ atm_netconv_deregister(ncp)
        UNLINKF(ncp, struct atm_ncm, atm_netconv_head, ncm_next, found);
 
        if (!found) {
-               (void) splx(s);
+               crit_exit();
                return (ENOENT);
        }
 
@@ -691,7 +693,7 @@ atm_netconv_deregister(ncp)
         */
        atm_ifouttbl[ncp->ncm_family] = NULL;
 
-       (void) splx(s);
+       crit_exit();
        return (0);
 }
 
@@ -721,12 +723,11 @@ atm_nif_attach(nip)
        struct atm_pif  *pip, *pip2;
        struct ifnet    *ifp;
        struct atm_ncm  *ncp;
-       int             s;
 
        ifp = &nip->nif_if;
        pip = nip->nif_pif;
 
-       s = splimp();
+       crit_enter();
 
        /*
         * Verify physical interface is registered
@@ -736,7 +737,7 @@ atm_nif_attach(nip)
                        break;
        }
        if ((pip == NULL) || (pip2 == NULL)) {
-               (void) splx(s);
+               crit_exit();
                return (EFAULT);
        }
 
@@ -759,12 +760,12 @@ atm_nif_attach(nip)
                err = (*ncp->ncm_stat)(NCM_ATTACH, nip, 0);
                if (err) {
                        atm_nif_detach(nip);
-                       (void) splx(s);
+                       crit_exit();
                        return (err);
                }
        }
 
-       (void) splx(s);
+       crit_exit();
        return (0);
 }
 
@@ -791,14 +792,13 @@ atm_nif_detach(nip)
        struct atm_nif  *nip;
 {
        struct atm_ncm  *ncp;
-       int             s, i;
+       int             i;
        struct ifnet    *ifp = &nip->nif_if;
        struct ifaddr   *ifa;
        struct in_ifaddr        *ia;
        struct radix_node_head  *rnh;
 
-
-       s = splimp();
+       crit_enter();
 
        /*
         * Notify convergence modules of network i/f demise
@@ -854,7 +854,7 @@ atm_nif_detach(nip)
         */
        UNLINK(nip, struct atm_nif, nip->nif_pif->pif_nif, nif_pnext);
 
-       (void) splx(s);
+       crit_exit();
 }
 
 
@@ -926,8 +926,9 @@ atm_nif_setaddr(nip, ifa)
        struct ifaddr   *ifa;
 {
        struct atm_ncm  *ncp;
-       int     err = 0, s = splnet();
+       int     err = 0;
 
+       crit_enter();
        /*
         * Notify convergence modules of network i/f change
         */
@@ -936,7 +937,7 @@ atm_nif_setaddr(nip, ifa)
                if (err)
                        break;
        }
-       (void) splx(s);
+       crit_exit();
 
        return (err);
 }
@@ -1010,8 +1011,8 @@ atm_if_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data, struct ucred *cr)
        struct ifreq *ifr = (struct ifreq *)data;
        struct atm_nif  *nip = (struct atm_nif *)ifp;
        int     error = 0;
-       int     s = splnet();
 
+       crit_enter();
        switch ( cmd )
        {
        case SIOCGIFADDR:
@@ -1037,7 +1038,7 @@ atm_if_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data, struct ucred *cr)
                break;
        }
 
-       (void) splx(s);
+       crit_exit();
        return ( error );
 }
 
index f57d346..9cc451e 100644 (file)
@@ -24,7 +24,7 @@
  * notice must be reproduced on all copies.
  *
  *     @(#) $FreeBSD: src/sys/netatm/atm_if.h,v 1.2 1999/08/28 00:48:36 peter Exp $
- *     @(#) $DragonFly: src/sys/netproto/atm/atm_if.h,v 1.6 2005/02/01 00:51:50 joerg Exp $
+ *     @(#) $DragonFly: src/sys/netproto/atm/atm_if.h,v 1.7 2005/06/02 22:37:45 dillon Exp $
  *
  */
 
@@ -332,8 +332,8 @@ struct atm_ncm {
 /*
  * Macros to lock out device interrupts
  */
-#define        DEVICE_LOCK(u)          ((u)->cu_savepri = splimp())
-#define        DEVICE_UNLOCK(u)        ((void) splx((u)->cu_savepri))
+#define        DEVICE_LOCK(u)          crit_enter()
+#define        DEVICE_UNLOCK(u)        crit_exit()
 
 /*
  * Macro to schedule the ATM interrupt queue handler
index 8f19cbd..92b994c 100644 (file)
@@ -24,7 +24,7 @@
  * notice must be reproduced on all copies.
  *
  *     @(#) $FreeBSD: src/sys/netatm/atm_signal.c,v 1.4 1999/08/28 00:48:37 peter Exp $
- *     @(#) $DragonFly: src/sys/netproto/atm/atm_signal.c,v 1.4 2003/08/23 10:06:21 rob Exp $
+ *     @(#) $DragonFly: src/sys/netproto/atm/atm_signal.c,v 1.5 2005/06/02 22:37:45 dillon Exp $
  */
 
 /*
@@ -64,7 +64,8 @@ atm_sigmgr_register(smp)
        struct sigmgr   *smp;
 {
        struct sigmgr   *smp2;
-       int             s = splnet();
+
+       crit_enter();
 
        /*
         * See if we need to be initialized
@@ -77,7 +78,7 @@ atm_sigmgr_register(smp)
         */
        for (smp2 = atm_sigmgr_head; smp2 != NULL; smp2 = smp2->sm_next) {
                if (smp->sm_proto == smp2->sm_proto) {
-                       (void) splx(s);
+                       crit_exit();
                        return (EEXIST);
                }
        }
@@ -87,7 +88,7 @@ atm_sigmgr_register(smp)
         */
        LINK2TAIL(smp, struct sigmgr, atm_sigmgr_head, sm_next);
 
-       (void) splx(s);
+       crit_exit();
        return (0);
 }
 
@@ -113,14 +114,14 @@ int
 atm_sigmgr_deregister(smp)
        struct sigmgr   *smp;
 {
-       int             found, s = splnet();
+       int             found;
 
        /*
         * Unlink descriptor
         */
+       crit_enter();
        UNLINKF(smp, struct sigmgr, atm_sigmgr_head, sm_next, found);
-
-       (void) splx(s);
+       crit_exit();
 
        if (!found)
                return (ENOENT);
@@ -138,7 +139,7 @@ atm_sigmgr_deregister(smp)
  * since the signalling manager may initiate virtual circuit activity as part 
  * its response to this call.
  *
- * Called at splnet.
+ * Called from a critical section.
  *
  * Arguments:
  *     pip     pointer to atm physical interface control block
@@ -233,7 +234,7 @@ atm_sigmgr_attach(pip, proto)
  * The ATM interface must be detached from the signalling manager
  * before the interface can be de-registered.  
  *
- * Called at splnet.
+ * Called from a critical section.
  *
  * Arguments:
  *     pip     pointer to atm physical interface control block
@@ -316,7 +317,8 @@ atm_stack_register(sdp)
        struct stack_defn       *sdp;
 {
        struct stack_defn       *tdp;
-       int     s = splnet();
+
+       crit_enter();
 
        /*
         * See if we need to be initialized
@@ -332,7 +334,7 @@ atm_stack_register(sdp)
                        break;
        }
        if (tdp != NULL) {
-               (void) splx(s);
+               crit_exit();
                return (EEXIST);
        }
 
@@ -341,7 +343,7 @@ atm_stack_register(sdp)
         */
        LINK2TAIL(sdp, struct stack_defn, atm_stack_head, sd_next);
 
-       (void) splx(s);
+       crit_exit();
        return (0);
 }
 
@@ -365,13 +367,14 @@ int
 atm_stack_deregister(sdp)
        struct stack_defn       *sdp;
 {
-       int     found, s = splnet();
+       int     found;
 
        /*
         * Remove service from list
         */
+       crit_enter();
        UNLINKF(sdp, struct stack_defn, atm_stack_head, sd_next, found);
-       (void) splx(s);
+       crit_exit();
 
        if (!found)
                return (ENOENT);
@@ -395,7 +398,7 @@ atm_stack_deregister(sdp)
  * The service should then wait for subsequent protocol notification
  * via its stack command handlers.
  *
- * Must be called at splnet.
+ * Must be called from a critical section.
  *
  * Arguments:
  *     cvp     pointer to connection vcc block for the created stack
index 4c3ba27..f138c3e 100644 (file)
@@ -24,7 +24,7 @@
  * notice must be reproduced on all copies.
  *
  *     @(#) $FreeBSD: src/sys/netatm/atm_subr.c,v 1.7 2000/02/13 03:31:59 peter Exp $
- *     @(#) $DragonFly: src/sys/netproto/atm/atm_subr.c,v 1.16 2005/02/01 00:51:50 joerg Exp $
+ *     @(#) $DragonFly: src/sys/netproto/atm/atm_subr.c,v 1.17 2005/06/02 22:37:45 dillon Exp $
  */
 
 /*
@@ -154,7 +154,8 @@ atm_allocate(sip)
        void            *bp;
        struct sp_chunk *scp;
        struct sp_link  *slp;
-       int             s = splnet();
+
+       crit_enter();
 
        /*
         * Count calls
@@ -205,7 +206,7 @@ atm_allocate(sip)
 
                if (sip->si_chunks >= sip->si_maxallow) {
                        sip->si_fails++;
-                       (void) splx(s);
+                       crit_exit();
                        return (NULL);
                }
 
@@ -213,7 +214,7 @@ atm_allocate(sip)
                                M_INTWAIT | M_NULLOK);
                if (scp == NULL) {
                        sip->si_fails++;
-                       (void) splx(s);
+                       crit_exit();
                        return (NULL);
                }
                scp->sc_next = NULL;
@@ -271,7 +272,7 @@ atm_allocate(sip)
         */
        KM_ZERO(bp, sip->si_blksiz);
 
-       (void) splx(s);
+       crit_exit();
        return (bp);
 }
 
@@ -296,7 +297,8 @@ atm_free(bp)
        struct sp_info  *sip;
        struct sp_chunk *scp;
        struct sp_link  *slp;
-       int             s = splnet();
+
+       crit_enter();
 
        /*
         * Get containing chunk and pool info
@@ -320,7 +322,7 @@ atm_free(bp)
        sip->si_free++;
        scp->sc_used--;
 
-       (void) splx(s);
+       crit_exit();
        return;
 }
 
@@ -333,7 +335,7 @@ atm_free(bp)
  * can be freed, taking some care to avoid freeing too many chunks
  * in order to avoid memory thrashing.
  *
- * Called at splnet.
+ * Called from a critical section.
  *
  * Arguments:
  *     tip     pointer to timer control block (atm_compactimer)
@@ -436,8 +438,8 @@ atm_release_pool(sip)
        struct sp_info  *sip;
 {
        struct sp_chunk *scp, *scp_next;
-       int             s = splnet();
 
+       crit_enter();
        /*
         * Free each chunk in pool
         */
@@ -467,8 +469,7 @@ atm_release_pool(sip)
         */
        sip->si_chunksiz = 0;
        UNLINK(sip, struct sp_info, atm_pool_head, si_next);
-
-       (void) splx(s);
+       crit_exit();
        return;
 }
 
@@ -492,9 +493,8 @@ atm_timexp(arg)
        void    *arg;
 {
        struct atm_time *tip;
-       int             s = splimp();
-
 
+       crit_enter();
        /*
         * Decrement tick count
         */
@@ -526,11 +526,7 @@ atm_timexp(arg)
                 * Call timeout handler (with network interrupts locked out)
                 */
                func = tip->ti_func;
-               (void) splx(s);
-               s = splnet();
                (*func)(tip);
-               (void) splx(s);
-               s = splimp();
 
                /*
                 * Drain any deferred calls
@@ -542,7 +538,7 @@ restart:
        /*
         * Restart the timer
         */
-       (void) splx(s);
+       crit_exit();
        callout_reset(&atm_timexp_ch, hz / ATM_HZ, atm_timexp, NULL);
 }
 
@@ -574,7 +570,6 @@ atm_timeout(tip, t, func)
        void            (*func)(struct atm_time *);
 {
        struct atm_time *tip1, *tip2;
-       int             s;
 
 
        /*
@@ -592,7 +587,7 @@ atm_timeout(tip, t, func)
        /*
         * Find out where we belong on the queue
         */
-       s = splimp();
+       crit_enter();
        for (tip1 = NULL, tip2 = atm_timeq; tip2 && (tip2->ti_ticks <= t); 
                                            tip1 = tip2, tip2 = tip1->ti_next) {
                t -= tip2->ti_ticks;
@@ -617,7 +612,7 @@ atm_timeout(tip, t, func)
        tip->ti_ticks = t;
        tip->ti_func = func;
 
-       (void) splx(s);
+       crit_exit();
        return;
 }
 
@@ -640,7 +635,6 @@ atm_untimeout(tip)
        struct atm_time *tip;
 {
        struct atm_time *tip1, *tip2;
-       int             s;
 
        /*
         * Is control block queued?
@@ -651,13 +645,13 @@ atm_untimeout(tip)
        /*
         * Find control block on the queue
         */
-       s = splimp();
+       crit_enter();
        for (tip1 = NULL, tip2 = atm_timeq; tip2 && (tip2 != tip); 
                                            tip1 = tip2, tip2 = tip1->ti_next) {
        }
 
        if (tip2 == NULL) {
-               (void) splx(s);
+               crit_exit();
                return (1);
        }
 
@@ -678,7 +672,7 @@ atm_untimeout(tip)
         */
        tip->ti_flag &= ~TIF_QUEUED;
 
-       (void) splx(s);
+       crit_exit();
        return (0);
 }
 
@@ -713,14 +707,15 @@ atm_stack_enq(cmd, func, token, cvp, arg1, arg2)
        int             arg2;
 {
        struct stackq_entry     *sqp;
-       int             s = splnet();
+
+       crit_enter();
 
        /*
         * Get a new queue entry for this call
         */
        sqp = (struct stackq_entry *)atm_allocate(&atm_stackq_pool);
        if (sqp == NULL) {
-               (void) splx(s);
+               crit_exit();
                return (ENOMEM);
        }
 
@@ -744,7 +739,7 @@ atm_stack_enq(cmd, func, token, cvp, arg1, arg2)
                atm_stackq_tail->sq_next = sqp;
        atm_stackq_tail = sqp;
 
-       (void) splx(s);
+       crit_exit();
        return (0);
 }
 
@@ -765,9 +760,9 @@ void
 atm_stack_drain()
 {
        struct stackq_entry     *sqp, *qprev, *qnext;
-       int             s = splnet();
        int             cnt;
 
+       crit_enter();
        /*
         * Loop thru entire queue until queue is empty
         *      (but panic rather loop forever)
@@ -843,8 +838,7 @@ atm_stack_drain()
         */
        if (atm_stackq_head != NULL)
                panic("atm_stack_drain: Queue not emptied");
-
-       (void) splx(s);
+       crit_exit();
 }
 
 
index d547ddd..a9c1e35 100644 (file)
@@ -24,7 +24,7 @@
  * notice must be reproduced on all copies.
  *
  *     @(#) $FreeBSD: src/sys/netatm/atm_usrreq.c,v 1.6 1999/08/28 00:48:39 peter Exp $
- *     @(#) $DragonFly: src/sys/netproto/atm/atm_usrreq.c,v 1.10 2005/02/01 00:51:50 joerg Exp $
+ *     @(#) $DragonFly: src/sys/netproto/atm/atm_usrreq.c,v 1.11 2005/06/02 22:37:45 dillon Exp $
  */
 
 /*
@@ -74,8 +74,8 @@ struct pr_usrreqs     atm_dgram_usrreqs = {
  */
 #ifdef DIAGNOSTIC
 #define ATM_INTRO()                                            \
-       int             s, err = 0;                             \
-       s = splnet();                                           \
+       int             err = 0;                                \
+       crit_enter();                                           \
        /*                                                      \
         * Stack queue should have been drained                 \
         */                                                     \
@@ -84,8 +84,8 @@ struct pr_usrreqs     atm_dgram_usrreqs = {
        ;
 #else
 #define ATM_INTRO()                                            \
-       int             s, err = 0;                             \
-       s = splnet();                                           \
+       int             err = 0;                                \
+       crit_enter();                                           \
        ;
 #endif
 
@@ -94,7 +94,7 @@ struct pr_usrreqs     atm_dgram_usrreqs = {
         * Drain any deferred calls                             \
         */                                                     \
        STACK_DRAIN();                                          \
-       (void) splx(s);                                         \
+       crit_exit();                                            \
        return (err);                                           \
        ;
 
@@ -434,7 +434,7 @@ out:
 /*
  * Process AIOCINFO ioctl system calls
  *
- * Called at splnet.
+ * Called from a critical section.
  *
  * Arguments:
  *     data    pointer to AIOCINFO parameter structure
index df88253..25243dd 100644 (file)
@@ -24,7 +24,7 @@
  * notice must be reproduced on all copies.
  *
  *     @(#) $FreeBSD: src/sys/netatm/ipatm/ipatm_load.c,v 1.6 2000/01/17 20:49:43 mks Exp $
- *     @(#) $DragonFly: src/sys/netproto/atm/ipatm/ipatm_load.c,v 1.7 2005/02/01 00:51:50 joerg Exp $
+ *     @(#) $DragonFly: src/sys/netproto/atm/ipatm/ipatm_load.c,v 1.8 2005/06/02 22:37:47 dillon Exp $
  */
 
 /*
@@ -377,7 +377,7 @@ ipatm_start()
 {
        struct atm_pif  *pip;
        struct atm_nif  *nip;
-       int     err, s, i;
+       int     err, i;
 
        /*
         * Verify software version
@@ -406,7 +406,7 @@ ipatm_start()
        /*
         * Get current system configuration
         */
-       s = splnet();
+       crit_enter();
        for (pip = atm_interface_head; pip; pip = pip->pif_next) {
                /*
                 * Process each network interface
@@ -420,7 +420,7 @@ ipatm_start()
                         */
                        err = ipatm_nifstat(NCM_ATTACH, nip, 0);
                        if (err) {
-                               (void) splx(s);
+                               crit_exit();
                                goto done;
                        }
 
@@ -434,13 +434,13 @@ ipatm_start()
                        if (ia) {
                                err = ipatm_nifstat(NCM_SETADDR, nip, (int)ia);
                                if (err) {
-                                       (void) splx(s);
+                                       crit_exit();
                                        goto done;
                                }
                        }
                }
        }
-       (void) splx(s);
+       crit_exit();
 
        /*
         * Fill in union fields
@@ -531,13 +531,12 @@ ipatm_stop()
 {
        struct ip_nif   *inp;
        int     err = 0, i;
-       int     s = splnet();
 
        /*
         * Any VCCs still open??
         */
+       crit_enter();
        if (ipatm_vccnt) {
-
                /* Yes, can't stop now */
                err = EBUSY;
                goto done;
@@ -580,7 +579,7 @@ ipatm_stop()
        atm_release_pool(&ipatm_nifpool);
 
 done:
-       (void) splx(s);
+       crit_exit();
        return (err);
 }
 
index a0dfb4c..3897c9c 100644 (file)
@@ -24,7 +24,7 @@
  * notice must be reproduced on all copies.
  *
  *     @(#) $FreeBSD: src/sys/netatm/ipatm/ipatm_output.c,v 1.4.2.1 2000/06/02 22:39:08 archie Exp $
- *     @(#) $DragonFly: src/sys/netproto/atm/ipatm/ipatm_output.c,v 1.5 2005/02/01 00:51:50 joerg Exp $
+ *     @(#) $DragonFly: src/sys/netproto/atm/ipatm/ipatm_output.c,v 1.6 2005/06/02 22:37:47 dillon Exp $
  */
 
 /*
@@ -141,18 +141,17 @@ ipatm_ifoutput(ifp, m, dst)
                 */
                if (in_broadcast(((struct sockaddr_in *)dst)->sin_addr, ifp)) {
                        struct ip_nif   *inp;
-                       int     s;
 
                        /*
                         * If interface server exists and provides broadcast 
                         * services, then let it deal with this packet
                         */
-                       s = splnet();
+                       crit_enter();
                        for (inp = ipatm_nif_head; inp; inp = inp->inf_next) {
                                if (inp->inf_nif == (struct atm_nif *)ifp)
                                        break;
                        }
-                       (void) splx(s);
+                       crit_exit();
 
                        if ((inp == NULL) ||
                            (inp->inf_serv == NULL) ||
index 78c0f9d..b804709 100644 (file)
@@ -24,7 +24,7 @@
  * notice must be reproduced on all copies.
  *
  *     @(#) $FreeBSD: src/sys/netatm/ipatm/ipatm_vcm.c,v 1.4 1999/08/28 00:48:45 peter Exp $
- *     @(#) $DragonFly: src/sys/netproto/atm/ipatm/ipatm_vcm.c,v 1.6 2005/02/12 01:28:07 joerg Exp $
+ *     @(#) $DragonFly: src/sys/netproto/atm/ipatm/ipatm_vcm.c,v 1.7 2005/06/02 22:37:47 dillon Exp $
  */
 
 /*
@@ -329,7 +329,7 @@ ipatm_openpvc(pvp, sivp)
        Atm_addr_pvc    *pvcp;
        struct atm_nif  *nip;
        struct ip_nif   *inp;
-       int     s, err = 0;
+       int     err = 0;
 
        inp = pvp->ipp_ipnif;
        nip = inp->inf_nif;
@@ -410,11 +410,11 @@ ipatm_openpvc(pvp, sivp)
        /*
         * Queue VCC onto its network interface
         */
-       s = splnet();
+       crit_enter();
        ipatm_vccnt++;
        ENQUEUE(ivp, struct ipvcc, iv_elem, inp->inf_vcq);
        ivp->iv_ipnif = inp;
-       (void) splx(s);
+       crit_exit();
 
        /*
         * Set destination IP address and IPVCC state
@@ -501,7 +501,7 @@ ipatm_createsvc(ifp, daf, dst, sivp)
        struct ipvcc    *ivp;
        struct in_addr  *ip;
        Atm_addr        *atm;
-       int     s, err = 0;
+       int     err = 0;
 
        /*
         * Get IP interface and make sure its ready
@@ -638,10 +638,10 @@ ipatm_createsvc(ifp, daf, dst, sivp)
        /*
         * Queue VCC onto its network interface
         */
-       s = splnet();
+       crit_enter();
        ipatm_vccnt++;
        ENQUEUE(ivp, struct ipvcc, iv_elem, inp->inf_vcq);
-       (void) splx(s);
+       crit_exit();
        *sivp = ivp;
        return (0);
 
@@ -829,7 +829,7 @@ ipatm_activate(ivp)
  * problems are encountered, we will just tell the connection manager to
  * reject the call.
  *
- * Called at splnet.
+ * Called from a critical section.
  *
  * Arguments:
  *     tok     owner's matched listening token
@@ -1019,7 +1019,7 @@ ipatm_closevc(ivp, code)
        int             code;
 {
        struct ip_nif   *inp = ivp->iv_ipnif;
-       int     s, err;
+       int     err;
 
        /*
         * Make sure VCC hasn't been through here already
@@ -1089,7 +1089,7 @@ ipatm_closevc(ivp, code)
        /*
         * Remove VCC from network i/f
         */
-       s = splnet();
+       crit_enter();
        DEQUEUE(ivp, struct ipvcc, iv_elem, inp->inf_vcq);
 
        /*
@@ -1103,7 +1103,7 @@ ipatm_closevc(ivp, code)
        if (ivp->iv_arpconn == NULL)
                atm_free((caddr_t)ivp);
        ipatm_vccnt--;
-       (void) splx(s);
+       crit_exit();
 
        return (0);
 }
@@ -1190,7 +1190,6 @@ ipatm_iptovc(dst, nip)
        struct ip_nif   *inp;
        struct ipvcc    *ivp;
        u_long          dstip = dst->sin_addr.s_addr;
-       int     s;
 
        /*
         * Look in cache first
@@ -1201,13 +1200,13 @@ ipatm_iptovc(dst, nip)
        /*
         * Oh well, we've got to search for it...first find the interface
         */
-       s = splnet();
+       crit_enter();
        for (inp = ipatm_nif_head; inp; inp = inp->inf_next) {
                if (inp->inf_nif == nip)
                        break;
        }
        if (inp == NULL) {
-               (void) splx(s);
+               crit_exit();
                return (NULL);
        }
 
@@ -1227,7 +1226,7 @@ ipatm_iptovc(dst, nip)
                last_map_ipdst = dstip;
                last_map_ipvcc = ivp;
        }
-       (void) splx(s);
+       crit_exit();
 
        return (ivp);
 }
index 2ec1134..9eef45d 100644 (file)
@@ -24,7 +24,7 @@
  * notice must be reproduced on all copies.
  *
  *     @(#) $FreeBSD: src/sys/netatm/sigpvc/sigpvc_if.c,v 1.7 2000/01/17 20:49:46 mks Exp $
- *     @(#) $DragonFly: src/sys/netproto/atm/sigpvc/sigpvc_if.c,v 1.8 2005/02/01 00:51:50 joerg Exp $
+ *     @(#) $DragonFly: src/sys/netproto/atm/sigpvc/sigpvc_if.c,v 1.9 2005/06/02 22:37:49 dillon Exp $
  */
 
 /*
@@ -155,7 +155,8 @@ static int
 sigpvc_stop()
 {
        int     err = 0;
-       int     s = splnet();
+
+       crit_enter();
 
        /*
         * Is protocol even setup?
@@ -186,7 +187,7 @@ sigpvc_stop()
                err = ENXIO;
 
 done:
-       (void) splx(s);
+       crit_exit();
        return (err);
 }
 
@@ -200,7 +201,7 @@ done:
  * A new sigpvc protocol instance will be created and then we'll just sit
  * around waiting for connection requests.
  *
- * Function must be called at splnet.
+ * Function must be called from a critical section.
  *
  * Arguments:
  *     smp     pointer to sigpvc signalling manager control block
@@ -269,7 +270,7 @@ done:
  * detachment for all SigPVC-controlled interfaces.  All circuits will be 
  * immediately terminated.
  *
- * Function must be called at splnet.
+ * Function must be called from a critical section.
  *
  * Arguments:
  *     pip     pointer to atm physical interface control block
@@ -343,7 +344,7 @@ sigpvc_detach(pip)
  * over an ATM interface attached to the SigPVC signalling manager are handled 
  * here.  Only PVC requests are allowed.
  *
- * Function will be called at splnet.
+ * Function will be called from a critical section.
  *
  * Arguments:
  *     cvp     pointer to CM's connection VCC
@@ -407,7 +408,7 @@ done:
  * (via the atm_close_connection function), which is running over an interface 
  * attached to the SigPVC signalling manager, are handled here.
  *
- * Function will be called at splnet.
+ * Function will be called from a critical section.
  * 
  * Arguments:
  *     vcp     pointer to connection's VC control block
@@ -450,7 +451,7 @@ sigpvc_release(vcp, errp)
  * (via the atm_free_connection function), which is running over an interface 
  * attached to the SigPVC signalling manager, are handled here.
  *
- * Function will be called at splnet.
+ * Function will be called from a critical section.
  * 
  * Arguments:
  *     vcp     pointer to connection's VCC control block
@@ -507,7 +508,7 @@ sigpvc_free(vcp)
 /*
  * Process Signalling Manager PF_ATM ioctls
  * 
- * Function will be called at splnet.
+ * Function will be called from a critical section.
  *
  * Arguments:
  *     code    PF_ATM sub-operation code
index e22eb84..87b89b3 100644 (file)
@@ -24,7 +24,7 @@
  * notice must be reproduced on all copies.
  *
  *     @(#) $FreeBSD: src/sys/netatm/spans/spans_arp.c,v 1.7 2000/01/15 20:34:55 mks Exp $
- *     @(#) $DragonFly: src/sys/netproto/atm/spans/spans_arp.c,v 1.7 2005/02/01 00:51:50 joerg Exp $
+ *     @(#) $DragonFly: src/sys/netproto/atm/spans/spans_arp.c,v 1.8 2005/06/02 22:37:50 dillon Exp $
  */
 
 /*
@@ -98,14 +98,13 @@ spansarp_svcout(ivp, dst)
 {
        struct spanscls *clp;
        struct spansarp *sap;
-       int     s;
 
        ivp->iv_arpent = NULL;
 
        /*
         * Lookup destination address
         */
-       s = splnet();
+       crit_enter();
        SPANSARP_LOOKUP(dst->s_addr, sap);
 
        if (sap) {
@@ -119,14 +118,14 @@ spansarp_svcout(ivp, dst)
                 */
                if (sap->sa_flags & SAF_VALID) {
                        ivp->iv_arpent = (struct arpmap *)sap;
-                       (void) splx(s);
+                       crit_exit();
                        return (MAP_VALID);
                }
 
                /*
                 * We're already looking for this address
                 */
-               (void) splx(s);
+               crit_exit();
                return (MAP_PROCEEDING);
        }
 
@@ -139,7 +138,7 @@ spansarp_svcout(ivp, dst)
                        break;
        }
        if (clp == NULL) {
-               (void) splx(s);
+               crit_exit();
                return (MAP_FAILED);
        }
 
@@ -148,7 +147,7 @@ spansarp_svcout(ivp, dst)
         */
        sap = (struct spansarp *)atm_allocate(&spansarp_pool);
        if (sap == NULL) {
-               (void) splx(s);
+               crit_exit();
                return (MAP_FAILED);
        }
 
@@ -185,7 +184,7 @@ spansarp_svcout(ivp, dst)
         */
        (void) spansarp_request(sap);
 
-       (void) splx(s);
+       crit_exit();
        return (MAP_PROCEEDING);
 }
 
@@ -247,8 +246,8 @@ spansarp_svcactive(ivp)
        struct ipvcc    *ivp;
 {
        struct spansarp *sap;
-       int     s = splnet();
 
+       crit_enter();
        /* 
         * Find an entry for the destination address
         */
@@ -265,8 +264,7 @@ spansarp_svcactive(ivp)
                 */
                sap->sa_reftime = 0;
        }
-
-       (void) splx(s);
+       crit_exit();
        return (0);
 }
 
@@ -290,14 +288,14 @@ spansarp_vcclose(ivp)
        struct ipvcc    *ivp;
 {
        struct spansarp *sap;
-       int     s = splnet();
 
+       crit_enter();
        /*
         * Get spansarp entry
         */
        SPANSARP_LOOKUP(ivp->iv_dst.s_addr, sap);
        if (sap == NULL) {
-               (void) splx(s);
+               crit_exit();
                return;
        }
 
@@ -312,7 +310,7 @@ spansarp_vcclose(ivp)
         */
        if ((sap->sa_flags & (SAF_VALID | SAF_LOCKED)) ||
            (sap->sa_origin >= SAO_PERM)) {
-               (void) splx(s);
+               crit_exit();
                return;
        }
 
@@ -320,7 +318,7 @@ spansarp_vcclose(ivp)
         * If there are still other VCCs waiting, exit
         */
        if (sap->sa_ivp) {
-               (void) splx(s);
+               crit_exit();
                return;
        }
 
@@ -334,7 +332,7 @@ spansarp_vcclose(ivp)
         */
        SPANSARP_DELETE(sap);
        atm_free((caddr_t)sap);
-       (void) splx(s);
+       crit_exit();
 }
 
 
@@ -383,7 +381,7 @@ spansarp_stop()
  * 
  * Called whenever an IP network interface becomes active.
  *
- * Called at splnet.
+ * Called from a critical section.
  *
  * Arguments:
  *      clp     pointer to CLS interface
@@ -409,7 +407,7 @@ spansarp_ipact(clp)
  * 
  * Called whenever an IP network interface becomes inactive.
  *
- * Called at splnet.
+ * Called from a critical section.
  *
  * Arguments:
  *      clp     pointer to CLS interface
@@ -582,7 +580,7 @@ spansarp_input(clp, m)
        struct spansarp         *sap;
        struct ip_nif           *inp = clp->cls_ipnif;
        struct in_addr  in_me, in_src, in_targ;
-       int             s, err;
+       int             err;
 
        /*
         * Make sure IP interface has been activated
@@ -640,7 +638,7 @@ spansarp_input(clp, m)
        /*
         * Update arp table with source address info
         */
-       s = splnet();
+       crit_enter();
        SPANSARP_LOOKUP(in_src.s_addr, sap);
        if (sap) {
                /*
@@ -697,7 +695,7 @@ spansarp_input(clp, m)
                        SPANSARP_ADD(sap);
                }
        }
-       (void) splx(s);
+       crit_exit();
 
 chkop:
        /*
@@ -732,7 +730,7 @@ free:
  * This function is called every SPANSARP_AGING seconds, in order to age
  * all the arp table entries.
  *
- * Called at splnet.
+ * Called from a critical section.
  *
  * Arguments:
  *     tip     pointer to spansarp aging timer control block
@@ -823,7 +821,7 @@ spansarp_aging(tip)
  * assuming that IP will set a timeout to close the VCC(s) requesting the
  * failing address resolution.
  *
- * Called at splnet.
+ * Called from a critical section.
  *
  * Arguments:
  *     tip     pointer to spansarp retry timer control block
@@ -867,7 +865,7 @@ spansarp_retry(tip)
 /*
  * SPANS ARP IOCTL support
  *
- * Function will be called at splnet.
+ * Function will be called from a critical section.
  *
  * Arguments:
  *     code    PF_ATM sub-operation code
index 839962d..e7e4307 100644 (file)
@@ -24,7 +24,7 @@
  * notice must be reproduced on all copies.
  *
  *     @(#) $FreeBSD: src/sys/netatm/spans/spans_cls.c,v 1.6 1999/08/28 00:48:49 peter Exp $
- *     @(#) $DragonFly: src/sys/netproto/atm/spans/spans_cls.c,v 1.5 2003/08/23 10:06:22 rob Exp $
+ *     @(#) $DragonFly: src/sys/netproto/atm/spans/spans_cls.c,v 1.6 2005/06/02 22:37:50 dillon Exp $
  */
 
 /*
@@ -265,7 +265,7 @@ spanscls_start()
 void
 spanscls_stop()
 {
-       int     s = splnet();
+       crit_enter();
 
        /*
         * Tell ARP to stop
@@ -278,7 +278,7 @@ spanscls_stop()
        if (spanscls_head) {
                panic("spanscls_stop: bad state");
        }
-       (void) splx(s);
+       crit_exit();
 
        /*
         * De-register ourselves
@@ -298,7 +298,7 @@ spanscls_stop()
  * This function is called whenever a physical interface has been attached
  * to spans.  We will open the CLS PVC and await further events.
  *
- * Called at splnet.
+ * Called from a critical section.
  *
  * Arguments:
  *     spp     pointer to spans signalling protocol instance
@@ -371,7 +371,7 @@ spanscls_attach(spp)
  * This function is called whenever a physical interface has been detached
  * from spans.  We will close the CLS PVC and clean up everything.
  *
- * Called at splnet.
+ * Called from a critical section.
  *
  * Arguments:
  *     spp     pointer to spans signalling protocol instance
@@ -421,7 +421,7 @@ spanscls_detach(spp)
  * 
  * Called whenever an IP network interface becomes active.
  *
- * Called at splnet.
+ * Called from a critical section.
  *
  * Arguments:
  *     inp     pointer to IP network interface
@@ -471,7 +471,7 @@ spanscls_ipact(inp)
  * 
  * Called whenever an IP network interface becomes inactive.
  *
- * Called at splnet.
+ * Called from a critical section.
  *
  * Arguments:
  *     inp     pointer to IP network interface
index 20ec189..65554fe 100644 (file)
@@ -24,7 +24,7 @@
  * notice must be reproduced on all copies.
  *
  *     @(#) $FreeBSD: src/sys/netatm/spans/spans_if.c,v 1.6 1999/08/28 00:48:49 peter Exp $
- *     @(#) $DragonFly: src/sys/netproto/atm/spans/spans_if.c,v 1.8 2005/02/01 00:51:50 joerg Exp $
+ *     @(#) $DragonFly: src/sys/netproto/atm/spans/spans_if.c,v 1.9 2005/06/02 22:37:50 dillon Exp $
  */
 
 /*
@@ -175,7 +175,8 @@ static int
 spans_stop()
 {
        int     err = 0;
-       int     s = splnet();
+
+       crit_enter();
 
        /*
         * Is protocol even set up?
@@ -217,7 +218,7 @@ spans_stop()
                err = ENXIO;
 
 done:
-       (void) splx(s);
+       crit_exit();
        return (err);
 }
 
@@ -232,7 +233,7 @@ done:
  * instance will be created and then we'll just sit around waiting for
  * status or connection requests.
  *
- * Function must be called at splnet.
+ * Function must be called from a critical section.
  *
  * Arguments:
  *     smp     pointer to SPANS signalling manager control block
@@ -248,7 +249,7 @@ spans_attach(smp, pip)
        struct sigmgr   *smp;
        struct atm_pif  *pip;
 {
-       int             err = 0, n = 0, s;
+       int             err = 0, n = 0;
        struct spans    *spp = NULL;
        struct atm_nif  *np;
 
@@ -336,10 +337,10 @@ done:
                                        smp->sm_prinst, si_next);
                        KM_FREE(spp, sizeof(struct spans), M_DEVBUF);
                }
-               s = splimp();
+               crit_enter();
                pip->pif_sigmgr = NULL;
                pip->pif_siginst = NULL;
-               (void) splx(s);
+               crit_exit();
        }
 
        return (err);
@@ -354,7 +355,7 @@ done:
  * handle the detachment for all SPANS-controlled interfaces.  All
  * circuits will be immediately terminated.
  *
- * Function must be called at splnet.
+ * Function must be called from a critical section.
  *
  * Arguments:
  *     pip     pointer to ATM physical interface control block
@@ -469,7 +470,7 @@ spans_detach(pip)
  * atm_open_connection) over an ATM interface attached to the SPANS
  * signalling manager are handled here.
  *
- * Function will be called at splnet.
+ * Function will be called from a critical section.
  *
  * Arguments:
  *     cvp     pointer to user's requested connection parameters
@@ -535,7 +536,7 @@ spans_setup(cvp, errp)
  * over an interface attached to the SPANS signalling manager, are
  * handled here.
  *
- * Function will be called at splnet.
+ * Function will be called from a critical section.
  *
  * Arguments:
  *     vcp     pointer to connection's VC control block
@@ -607,7 +608,7 @@ spans_release(vcp, errp)
  * A user calls this routine (via the atm_accept_call function)
  * after it is notified that an open request was received for it.
  *
- * Function will be called at splnet.
+ * Function will be called from a critical section.
  *
  * Arguments:
  *     vcp     pointer to user's VCCB
@@ -680,7 +681,7 @@ failed:
  * A user calls this routine (via the atm_reject_call function)
  * after it is notified that an open request was received for it.
  *
- * Function will be called at splnet.
+ * Function will be called from a critical section.
  *
  * Arguments:
  *     vcp     pointer to user's VCCB
@@ -741,7 +742,7 @@ spans_reject(vcp, errp)
  * The VCC owner will be notified of the request, in order to initiate
  * termination of the connection.
  *
- * Function will be called at splnet.
+ * Function will be called from a critical section.
  *
  * Arguments:
  *     vcp     pointer to connection's VC control block
@@ -797,7 +798,7 @@ spans_abort(vcp)
  * is running over an interface attached to the SigPVC signalling
  * manager, are handled here.
  *
- * Function will be called at splnet.
+ * Function will be called from a critical section.
  *
  * Arguments:
  *     vcp     pointer to connection's VC control block
@@ -860,7 +861,7 @@ spans_free(vcp)
 /*
  * SPANS IOCTL support
  *
- * Function will be called at splnet.
+ * Function will be called from a critical section.
  *
  * Arguments:
  *     code    PF_ATM sub-operation code
index 3427c83..15304ad 100644 (file)
@@ -24,7 +24,7 @@
  * notice must be reproduced on all copies.
  *
  *     @(#) $FreeBSD: src/sys/netatm/spans/spans_subr.c,v 1.4 1999/08/28 00:48:52 peter Exp $
- *     @(#) $DragonFly: src/sys/netproto/atm/spans/spans_subr.c,v 1.4 2003/08/07 21:54:34 dillon Exp $
+ *     @(#) $DragonFly: src/sys/netproto/atm/spans/spans_subr.c,v 1.5 2005/06/02 22:37:50 dillon Exp $
  */
 
 /*
@@ -49,7 +49,7 @@
  * user will have to wait for a notify event to be sure the SVC is fully
  * open.
  *
- * Must be called at splnet.
+ * Must be called from a critical section.
  *
  * Arguments:
  *     spp     pointer to SPANS protocol instance
@@ -245,7 +245,7 @@ spans_open_vcc(spp, cvp)
  * Called when a user wants to close a VCC.  This function will clean
  * up the VCCB and, for an SVC, send a close request.
  *
- * Must be called at splnet.
+ * Must be called from a critical section.
  *
  * Arguments:
  *     spp     pointer to SPANS protocol instance
@@ -338,7 +338,7 @@ spans_close_vcc(spp, svp, force)
  * Called when the signalling manager wants to close a VCC immediately.
  * This function will clean up the VCCB and notify the owner.
  *
- * Must be called at splnet.
+ * Must be called from a critical section.
  *
  * Arguments:
  *     spp     pointer to SPANS protocol instance
@@ -430,7 +430,6 @@ spans_switch_reset(spp, cause)
        int             cause;
 
 {
-       int             s;
        struct vccb     *vcp, *vnext;
 
        ATM_DEBUG2("spans_switch_reset: spp=%p, cause=%d\n",
@@ -447,7 +446,7 @@ spans_switch_reset(spp, cause)
        /*
         * Terminate all of our VCCs
         */
-       s = splnet();
+       crit_enter();
        for (vcp = Q_HEAD(spp->sp_vccq, struct vccb); vcp;
                        vcp = vnext) {
 
@@ -485,5 +484,5 @@ spans_switch_reset(spp, cause)
                                        vcp, vcp->vc_type);
                }
        }
-       (void) splx(s);
+       crit_exit();
 }
index eda9099..dd3dcde 100644 (file)
@@ -24,7 +24,7 @@
  * notice must be reproduced on all copies.
  *
  *     @(#) $FreeBSD: src/sys/netatm/uni/uni_load.c,v 1.4 2000/01/17 20:49:54 mks Exp $
- *     @(#) $DragonFly: src/sys/netproto/atm/uni/uni_load.c,v 1.6 2005/02/01 00:51:50 joerg Exp $
+ *     @(#) $DragonFly: src/sys/netproto/atm/uni/uni_load.c,v 1.7 2005/06/02 22:37:52 dillon Exp $
  */
 
 /*
@@ -130,8 +130,9 @@ done:
 static int
 uni_stop()
 {
-       int     err, s = splnet();
+       int     err;
 
+       crit_enter();
        /*
         * Terminate uni sub-services
         */
@@ -152,7 +153,7 @@ uni_stop()
                goto done;
 
 done:
-       (void) splx(s);
+       crit_exit();
        return (err);
 }
 
index d8f56e1..9d7b17e 100644 (file)
@@ -24,7 +24,7 @@
  * notice must be reproduced on all copies.
  *
  *     @(#) $FreeBSD: src/sys/netatm/uni/uniarp_input.c,v 1.6 2000/01/17 20:49:55 mks Exp $
- *     @(#) $DragonFly: src/sys/netproto/atm/uni/uniarp_input.c,v 1.5 2003/08/23 10:06:22 rob Exp $
+ *     @(#) $DragonFly: src/sys/netproto/atm/uni/uniarp_input.c,v 1.6 2005/06/02 22:37:52 dillon Exp $
  */
 
 /*
@@ -272,8 +272,8 @@ proc_arp_req(ivp, m)
        struct uniip    *uip;
        struct uniarp   *uap;
        struct in_addr  myip;
-       int             s = splnet();
 
+       crit_enter();
        /*
         * Only an arp server should receive these
         */
@@ -378,7 +378,7 @@ proc_arp_req(ivp, m)
        }
 
 drop:
-       (void) splx(s);
+       crit_exit();
        if (m)
                KB_FREEALL(m);
        return;
@@ -407,8 +407,8 @@ proc_arp_rsp(ivp, m)
        struct uniip    *uip;
        struct uniarp   *uap;
        struct in_addr  myip;
-       int             s = splnet();
 
+       crit_enter();
        /*
         * Only the arp server should send these
         */
@@ -493,7 +493,7 @@ proc_arp_rsp(ivp, m)
        (void) uniarp_cache_svc(uip, &sip, &satm, &satmsub, UAO_LOOKUP);
 
 drop:
-       (void) splx(s);
+       crit_exit();
        KB_FREEALL(m);
        return;
 }
@@ -522,8 +522,8 @@ proc_arp_nak(ivp, m)
        struct uniarp   *uap;
        struct in_addr  myip;
        struct ipvcc    *inext;
-       int             s = splnet();
 
+       crit_enter();
        /*
         * Only the arp server should send these
         */
@@ -574,7 +574,7 @@ proc_arp_nak(ivp, m)
        }
 
 drop:
-       (void) splx(s);
+       crit_exit();
        KB_FREEALL(m);
        return;
 }
@@ -601,7 +601,8 @@ proc_inarp_req(ivp, m)
        struct siginst  *sgp;
        struct uniip    *uip;
        struct in_addr  myip;
-       int             s = splnet();
+
+       crit_enter();
 
        /*
         * Get interface pointers
@@ -703,7 +704,7 @@ proc_inarp_req(ivp, m)
        (void) uniarp_inarp_rsp(uip, &sip, &satm, &satmsub, ivp);
 
 drop:
-       (void) splx(s);
+       crit_exit();
        KB_FREEALL(m);
        return;
 }
@@ -730,7 +731,8 @@ proc_inarp_rsp(ivp, m)
        struct siginst  *sgp;
        struct uniip    *uip;
        struct in_addr  myip;
-       int             s = splnet();
+
+       crit_enter();
 
        /*
         * Get interface pointers
@@ -812,7 +814,7 @@ proc_inarp_rsp(ivp, m)
        }
 
 drop:
-       (void) splx(s);
+       crit_exit();
        KB_FREEALL(m);
        return;
 }
index 32aa03a..84739a5 100644 (file)
@@ -24,7 +24,7 @@
  * notice must be reproduced on all copies.
  *
  *     @(#) $FreeBSD: src/sys/netatm/uni/uniarp_vcm.c,v 1.5 2000/01/17 20:49:55 mks Exp $
- *     @(#) $DragonFly: src/sys/netproto/atm/uni/uniarp_vcm.c,v 1.4 2003/08/07 21:54:34 dillon Exp $
+ *     @(#) $DragonFly: src/sys/netproto/atm/uni/uniarp_vcm.c,v 1.5 2005/06/02 22:37:52 dillon Exp $
  */
 
 /*
@@ -84,7 +84,7 @@ uniarp_pvcopen(ivp)
 {
        struct uniip    *uip;
        struct uniarp   *uap;
-       int             s, err;
+       int             err;
 
        ATM_DEBUG1("uniarp_pvcopen: ivp=%p\n", ivp);
 
@@ -130,7 +130,7 @@ uniarp_pvcopen(ivp)
        /*
         * Get map entry set up
         */
-       s = splnet();
+       crit_enter();
        uap->ua_dstatm.address_format = T_ATM_ABSENT;
        uap->ua_dstatmsub.address_format = T_ATM_ABSENT;
        uap->ua_intf = uip;
@@ -156,7 +156,7 @@ uniarp_pvcopen(ivp)
         */
        uap->ua_aging = UNIARP_REVALID_AGE;
 
-       (void) splx(s);
+       crit_exit();
        return (MAP_PROCEEDING);
 }
 
@@ -187,7 +187,8 @@ uniarp_svcout(ivp, dst)
 {
        struct uniip    *uip;
        struct uniarp   *uap;
-       int     s = splnet();
+
+       crit_enter();
 
        ATM_DEBUG2("uniarp_svcout: ivp=%p,dst=0x%x\n", ivp, dst->s_addr);
 
@@ -198,7 +199,7 @@ uniarp_svcout(ivp, dst)
         */
        uip = (struct uniip *)ivp->iv_ipnif->inf_isintf;
        if (uip == NULL) {
-               (void) splx(s);
+               crit_exit();
                return (MAP_FAILED);
        }
 
@@ -212,7 +213,7 @@ uniarp_svcout(ivp, dst)
                 * We've got an entry, verify interface
                 */
                if (uap->ua_intf != uip) {
-                       (void) splx(s);
+                       crit_exit();
                        return (MAP_FAILED);
                }
 
@@ -227,13 +228,13 @@ uniarp_svcout(ivp, dst)
                        /*
                         * Entry is valid, we're done
                         */
-                       (void) splx(s);
+                       crit_exit();
                        return (MAP_VALID);
                } else {
                        /*
                         * We're already looking for this address
                         */
-                       (void) splx(s);
+                       crit_exit();
                        return (MAP_PROCEEDING);
                }
        }
@@ -245,7 +246,7 @@ uniarp_svcout(ivp, dst)
         * also deny the request.
         */
        if (uip->uip_arpstate != UIAS_CLIENT_ACTIVE) {
-               (void) splx(s);
+               crit_exit();
                return (MAP_FAILED);
        }
 
@@ -254,7 +255,7 @@ uniarp_svcout(ivp, dst)
         */
        uap = (struct uniarp *)atm_allocate(&uniarp_pool);
        if (uap == NULL) {
-               (void) splx(s);
+               crit_exit();
                return (MAP_FAILED);
        }
 
@@ -290,7 +291,7 @@ uniarp_svcout(ivp, dst)
         */
        UNIARP_TIMER(uap, UNIARP_ARP_RETRY);
 
-       (void) splx(s);
+       crit_exit();
        return (MAP_PROCEEDING);
 }
 
@@ -324,7 +325,9 @@ uniarp_svcin(ivp, dst, dstsub)
 {
        struct uniip    *uip;
        struct uniarp   *uap;
-       int     found = 0, i, s = splnet();
+       int     found = 0, i;
+
+       crit_enter();
 
        ATM_DEBUG1("uniarp_svcin: ivp=%p\n", ivp);
 
@@ -344,7 +347,7 @@ uniarp_svcin(ivp, dst, dstsub)
          */
        uip = (struct uniip *)ivp->iv_ipnif->inf_isintf;
        if (uip == NULL) {
-               (void) splx(s);
+               crit_exit();
                return (MAP_FAILED);
        }
 
@@ -352,7 +355,7 @@ uniarp_svcin(ivp, dst, dstsub)
         * Make sure we're configured as a client or server
         */
        if (uip->uip_arpstate == UIAS_NOTCONF) {
-               (void) splx(s);
+               crit_exit();
                return (MAP_FAILED);
        }
 
@@ -384,7 +387,7 @@ uniarp_svcin(ivp, dst, dstsub)
                 * We've got an entry, verify interface
                 */
                if (uap->ua_intf != uip) {
-                       (void) splx(s);
+                       crit_exit();
                        return (MAP_FAILED);
                }
 
@@ -399,13 +402,13 @@ uniarp_svcin(ivp, dst, dstsub)
                        /*
                         * Entry is valid, we're done
                         */
-                       (void) splx(s);
+                       crit_exit();
                        return (MAP_VALID);
                } else {
                        /*
                         * We're already looking for this address
                         */
-                       (void) splx(s);
+                       crit_exit();
                        return (MAP_PROCEEDING);
                }
        }
@@ -415,7 +418,7 @@ uniarp_svcin(ivp, dst, dstsub)
         */
        uap = (struct uniarp *)atm_allocate(&uniarp_pool);
        if (uap == NULL) {
-               (void) splx(s);
+               crit_exit();
                return (MAP_FAILED);
        }
 
@@ -438,7 +441,7 @@ uniarp_svcin(ivp, dst, dstsub)
         */
        LINK2TAIL(uap, struct uniarp, uniarp_nomaptab, ua_next);
 
-       (void) splx(s);
+       crit_exit();
 
        /*
         * Now we just wait for SVC to become active
@@ -468,7 +471,9 @@ uniarp_svcactive(ivp)
        struct ip_nif   *inp;
        struct uniip    *uip;
        struct uniarp   *uap;
-       int     err, s = splnet();
+       int     err;
+
+       crit_enter();
 
        ATM_DEBUG1("uniarp_svcactive: ivp=%p\n", ivp);
 
@@ -516,7 +521,7 @@ uniarp_svcactive(ivp)
                 */
                UNIIP_ARP_TIMER(uip, 1 * ATM_HZ);
 
-               (void) splx(s);
+               crit_exit();
                return (0);
        }
 
@@ -538,7 +543,7 @@ uniarp_svcactive(ivp)
            ((uap->ua_time.ti_flag & TIF_QUEUED) == 0))
                UNIARP_TIMER(uap, UNIARP_ARP_RETRY);
 
-       (void) splx(s);
+       crit_exit();
        return (0);
 }
 
@@ -563,7 +568,6 @@ uniarp_vcclose(ivp)
 {
        struct uniip    *uip;
        struct uniarp   *uap;
-       int     s;
 
        ATM_DEBUG1("uniarp_vcclose: ivp=%p\n", ivp);
 
@@ -582,7 +586,7 @@ uniarp_vcclose(ivp)
                return;
        uip = uap->ua_intf;
 
-       s = splnet();
+       crit_enter();
 
        /*
         * If this is the arpserver VCC, then schedule ourselves to
@@ -611,7 +615,7 @@ uniarp_vcclose(ivp)
                if ((uap->ua_flags & (UAF_VALID | UAF_LOCKED)) ||
                    (uap->ua_origin >= UAO_PERM) ||
                    (uap->ua_ivp != NULL)) {
-                       (void) splx(s);
+                       crit_exit();
                        return;
                }
 
@@ -637,7 +641,7 @@ uniarp_vcclose(ivp)
         */
        atm_free((caddr_t)uap);
 
-       (void) splx(s);
+       crit_exit();
        return;
 }
 
@@ -682,9 +686,8 @@ uniarp_cleared(toku, cause)
        struct t_atm_cause      *cause;
 {
        struct ipvcc    *ivp = toku;
-       int             s;
 
-       s = splnet();
+       crit_enter();
 
        /*
         * We're done with VCC
@@ -697,6 +700,6 @@ uniarp_cleared(toku, cause)
        if (ivp->iv_state == IPVCC_FREE)
                atm_free((caddr_t)ivp);
 
-       (void) splx(s);
+       crit_exit();
 }
 
index d13aae5..b385329 100644 (file)
@@ -24,7 +24,7 @@
  * notice must be reproduced on all copies.
  *
  *     @(#) $FreeBSD: src/sys/netatm/uni/unisig_if.c,v 1.8 2000/01/17 20:49:56 mks Exp $
- *     @(#) $DragonFly: src/sys/netproto/atm/uni/unisig_if.c,v 1.6 2004/04/22 05:09:46 dillon Exp $
+ *     @(#) $DragonFly: src/sys/netproto/atm/uni/unisig_if.c,v 1.7 2005/06/02 22:37:52 dillon Exp $
  */
 
 /*
@@ -180,8 +180,8 @@ int
 unisig_stop()
 {
        int     err = 0;
-       int     s = splnet();
 
+       crit_enter();
 
        /*
         * Any protocol instances still registered?
@@ -208,7 +208,7 @@ unisig_stop()
        atm_release_pool(&unisig_iepool);
 
 done:
-       (void) splx(s);
+       crit_exit();
        return (err);
 }
 
@@ -223,7 +223,7 @@ done:
  * instance will be created and then we'll just sit around waiting for
  * status or connection requests.
  *
- * Function must be called at splnet.
+ * Function must be called from a critical section.
  *
  * Arguments:
  *     smp     pointer to UNISIG signalling manager control block
@@ -239,7 +239,7 @@ unisig_attach(smp, pip)
        struct sigmgr   *smp;
        struct atm_pif  *pip;
 {
-       int                     err = 0, s;
+       int                     err = 0;
        struct unisig           *usp = NULL;
 
        ATM_DEBUG2("unisig_attach: smp=%p, pip=%p\n", smp, pip);
@@ -275,10 +275,10 @@ unisig_attach(smp, pip)
         * Link in interface
         */
        usp->us_pif = pip;
-       s = splimp();
+       crit_enter();
        pip->pif_sigmgr = smp;
        pip->pif_siginst = (struct siginst *) usp;
-       (void) splx(s);
+       crit_exit();
 
        /*
         * Clear our ATM address.  The address will be set by user
@@ -316,10 +316,10 @@ done:
                                        smp->sm_prinst, si_next);
                        KM_FREE(usp, sizeof(struct unisig), M_DEVBUF);
                }
-               s = splimp();
+               crit_enter();
                pip->pif_sigmgr = NULL;
                pip->pif_siginst = NULL;
-               (void) splx(s);
+               crit_exit();
        }
 
        return (err);
@@ -334,7 +334,7 @@ done:
  * handle the detachment for all UNISIG-controlled interfaces.  All
  * circuits will be immediately terminated.
  *
- * Function must be called at splnet.
+ * Function must be called from a critical section.
  *
  * Arguments:
  *     pip     pointer to ATM physical interface control block
@@ -390,7 +390,7 @@ unisig_detach(pip)
  * atm_open_connection) over an ATM interface attached to the UNISIG
  * signalling manager are handled here.
  *
- * Function will be called at splnet.
+ * Function will be called from a critical section.
  *
  * Arguments:
  *     cvp     pointer to user's requested connection parameters
@@ -457,7 +457,7 @@ unisig_setup(cvp, errp)
  * over an interface attached to the UNISIG signalling manager, are
  * handled here.
  *
- * Function will be called at splnet.
+ * Function will be called from a critical section.
  *
  * Arguments:
  *     vcp     pointer to connection's VC control block
@@ -520,7 +520,7 @@ unisig_release(vcp, errp)
  * A user calls this routine (via the atm_accept_call function)
  * after it is notified that an open request was received for it.
  *
- * Function will be called at splnet.
+ * Function will be called from a critical section.
  *
  * Arguments:
  *     vcp     pointer to user's VCCB
@@ -595,7 +595,7 @@ free:
  * A user calls this routine (via the atm_reject_call function)
  * after it is notified that an open request was received for it.
  *
- * Function will be called at splnet.
+ * Function will be called from a critical section.
  *
  * Arguments:
  *     uvp     pointer to user's VCCB
@@ -662,7 +662,7 @@ failed:
  * The VCC owner will be notified of the request, in order to initiate
  * termination of the connection.
  *
- * Function will be called at splnet.
+ * Function will be called from a critical section.
  *
  * Arguments:
  *      vcp     pointer to connection's VC control block
@@ -709,7 +709,7 @@ unisig_abort(vcp)
  * over an interface attached to the UNISIG signalling manager, are
  *handled here.
  *
- * Function will be called at splnet.
+ * Function will be called from a critical section.
  *
  * Arguments:
  *     vcp     pointer to connection's VC control block
@@ -758,11 +758,11 @@ unisig_free(vcp)
        if ((usp->us_state == UNISIG_DETACH) &&
                        (Q_HEAD(usp->us_vccq, struct vccb) == NULL)) {
                struct sigmgr   *smp = pip->pif_sigmgr;
-               int     s = splimp();
 
+               crit_enter();
                pip->pif_sigmgr = NULL;
                pip->pif_siginst = NULL;
-               (void) splx(s);
+               crit_exit();
 
                UNLINK((struct siginst *)usp, struct siginst,
                                smp->sm_prinst, si_next);
@@ -776,7 +776,7 @@ unisig_free(vcp)
 /*
  * UNISIG IOCTL support
  *
- * Function will be called at splnet.
+ * Function will be called from a critical section.
  *
  * Arguments:
  *     code    PF_ATM sub-operation code
index d5efac8..8caee59 100644 (file)
@@ -24,7 +24,7 @@
  * notice must be reproduced on all copies.
  *
  *     @(#) $FreeBSD: src/sys/netatm/uni/unisig_msg.c,v 1.6 2000/01/17 20:49:56 mks Exp $
- *     @(#) $DragonFly: src/sys/netproto/atm/uni/unisig_msg.c,v 1.5 2003/08/23 10:06:22 rob Exp $
+ *     @(#) $DragonFly: src/sys/netproto/atm/uni/unisig_msg.c,v 1.6 2005/06/02 22:37:52 dillon Exp $
  */
 
 /*
@@ -612,7 +612,6 @@ unisig_rcv_restart(usp, msg)
 {
        struct unisig_vccb      *uvp, *uvnext;
        struct unisig_msg       *rsta_msg;
-       int                     s;
 
        ATM_DEBUG2("unisig_rcv_restart: usp=%p, msg=%p\n",
                        usp, msg);
@@ -638,7 +637,7 @@ unisig_rcv_restart(usp, msg)
                /*
                 * Restart all VCCs
                 */
-               s = splnet();
+               crit_enter();
                for (uvp=Q_HEAD(usp->us_vccq, struct unisig_vccb); uvp;
                                uvp=uvnext) {
                        uvnext = Q_NEXT(uvp, struct unisig_vccb,
@@ -648,7 +647,7 @@ unisig_rcv_restart(usp, msg)
                                                T_ATM_CAUSE_NORMAL_CALL_CLEARING);
                        }
                }
-               (void) splx(s);
+               crit_exit();
        }
 
        /*
index f120a40..2693cd8 100644 (file)
@@ -24,7 +24,7 @@
  * notice must be reproduced on all copies.
  *
  *     @(#) $FreeBSD: src/sys/netatm/uni/unisig_sigmgr_state.c,v 1.6 2000/01/17 20:49:58 mks Exp $
- *     @(#) $DragonFly: src/sys/netproto/atm/uni/unisig_sigmgr_state.c,v 1.5 2003/08/23 10:06:22 rob Exp $
+ *     @(#) $DragonFly: src/sys/netproto/atm/uni/unisig_sigmgr_state.c,v 1.6 2005/06/02 22:37:52 dillon Exp $
  */
 
 /*
@@ -825,11 +825,11 @@ unisig_sigmgr_act14(usp, m)
        if (Q_HEAD(usp->us_vccq, struct vccb) == NULL &&
                        pip->pif_sigmgr) {
                struct sigmgr   *smp = pip->pif_sigmgr;
-               int             s = splimp();
 
+               crit_enter();
                pip->pif_sigmgr = NULL;
                pip->pif_siginst = NULL;
-               (void) splx(s);
+               crit_exit();
 
                UNLINK((struct siginst *)usp, struct siginst,
                                smp->sm_prinst, si_next);
index 103074c..cdefd17 100644 (file)
@@ -24,7 +24,7 @@
  * notice must be reproduced on all copies.
  *
  *     @(#) $FreeBSD: src/sys/netatm/uni/unisig_subr.c,v 1.7 2000/01/17 20:49:58 mks Exp $
- *     @(#) $DragonFly: src/sys/netproto/atm/uni/unisig_subr.c,v 1.4 2003/08/07 21:54:34 dillon Exp $
+ *     @(#) $DragonFly: src/sys/netproto/atm/uni/unisig_subr.c,v 1.5 2005/06/02 22:37:52 dillon Exp $
  */
 
 /*
@@ -134,7 +134,7 @@ unisig_cause_attr_from_ie(aap, iep)
  * machine.  The user will have to wait for a notify event to be sure
  * the SVC is fully open.
  *
- * Must be called at splnet.
+ * Must be called from a critical section.
  *
  * Arguments:
  *     usp     pointer to UNISIG protocol instance
@@ -314,7 +314,7 @@ unisig_open_vcc(usp, cvp)
  * Called when a user wants to close a VCC.  This function will clean
  * up the VCCB and, for an SVC, send a close request.
  *
- * Must be called at splnet.
+ * Must be called from a critical section.
  *
  * Arguments:
  *     usp     pointer to UNISIG protocol instance
@@ -374,7 +374,7 @@ unisig_close_vcc(usp, uvp)
  * Called to internally clear a VCC.  No external protocol is
  * initiated, the VCC is just closed and the owner is notified.
  *
- * Must be called at splnet.
+ * Must be called from a critical section.
  *
  * Arguments:
  *     usp     pointer to UNISIG protocol instance
@@ -455,7 +455,6 @@ unisig_switch_reset(usp, cause)
        struct unisig   *usp;
        int             cause;
 {
-       int                     s;
        struct unisig_vccb      *uvp, *vnext;
 
        ATM_DEBUG2("unisig_switch_reset: usp=%p, cause=%d\n",
@@ -464,7 +463,7 @@ unisig_switch_reset(usp, cause)
        /*
         * Terminate all of our VCCs
         */
-       s = splnet();
+       crit_enter();
        for (uvp = Q_HEAD(usp->us_vccq, struct unisig_vccb); uvp;
                        uvp = vnext) {
                vnext = Q_NEXT(uvp, struct unisig_vccb, uv_sigelem);
@@ -493,7 +492,7 @@ unisig_switch_reset(usp, cause)
                                        uvp, uvp->uv_type);
                }
        }
-       (void) splx(s);
+       crit_exit();
 }
 #endif