Deleted Added
full compact
if_patm_ioctl.c (118158) if_patm_ioctl.c (118539)
1/*
2 * Copyright (c) 2003
3 * Fraunhofer Institute for Open Communication Systems (FhG Fokus).
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:

--- 15 unchanged lines hidden (view full) ---

24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25 * SUCH DAMAGE.
26 *
27 * Author: Hartmut Brandt <harti@freebsd.org>
28 *
29 * Driver for IDT77252 based cards like ProSum's.
30 */
31#include <sys/cdefs.h>
1/*
2 * Copyright (c) 2003
3 * Fraunhofer Institute for Open Communication Systems (FhG Fokus).
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:

--- 15 unchanged lines hidden (view full) ---

24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25 * SUCH DAMAGE.
26 *
27 * Author: Hartmut Brandt <harti@freebsd.org>
28 *
29 * Driver for IDT77252 based cards like ProSum's.
30 */
31#include <sys/cdefs.h>
32__FBSDID("$FreeBSD: head/sys/dev/patm/if_patm_ioctl.c 118158 2003-07-29 13:21:57Z harti $");
32__FBSDID("$FreeBSD: head/sys/dev/patm/if_patm_ioctl.c 118539 2003-08-06 13:09:36Z harti $");
33
34#include "opt_inet.h"
35#include "opt_natm.h"
36
37#include <sys/types.h>
38#include <sys/param.h>
39#include <sys/systm.h>
40#include <sys/malloc.h>

--- 29 unchanged lines hidden (view full) ---

70#include <dev/utopia/utopia.h>
71#include <dev/patm/idt77252reg.h>
72#include <dev/patm/if_patmvar.h>
73
74/*
75 * Open the VCC with the given parameters
76 */
77static int
33
34#include "opt_inet.h"
35#include "opt_natm.h"
36
37#include <sys/types.h>
38#include <sys/param.h>
39#include <sys/systm.h>
40#include <sys/malloc.h>

--- 29 unchanged lines hidden (view full) ---

70#include <dev/utopia/utopia.h>
71#include <dev/patm/idt77252reg.h>
72#include <dev/patm/if_patmvar.h>
73
74/*
75 * Open the VCC with the given parameters
76 */
77static int
78patm_open_vcc(struct patm_softc *sc, struct atmio_openvcc *arg, u_int async)
78patm_open_vcc(struct patm_softc *sc, struct atmio_openvcc *arg)
79{
80 u_int cid;
81 struct patm_vcc *vcc;
82 int error = 0;
83
84 patm_debug(sc, VCC, "Open VCC: %u.%u flags=%#x", arg->param.vpi,
85 arg->param.vci, arg->param.flags);
86

--- 28 unchanged lines hidden (view full) ---

115 /* ups, already open */
116 error = EBUSY;
117 goto done;
118 }
119
120 /* check some parameters */
121 vcc->cid = cid;
122 vcc->vcc = arg->param;
79{
80 u_int cid;
81 struct patm_vcc *vcc;
82 int error = 0;
83
84 patm_debug(sc, VCC, "Open VCC: %u.%u flags=%#x", arg->param.vpi,
85 arg->param.vci, arg->param.flags);
86

--- 28 unchanged lines hidden (view full) ---

115 /* ups, already open */
116 error = EBUSY;
117 goto done;
118 }
119
120 /* check some parameters */
121 vcc->cid = cid;
122 vcc->vcc = arg->param;
123 vcc->vflags = async;
123 vcc->vflags = 0;
124 vcc->rxhand = arg->rxhand;
125 switch (vcc->vcc.aal) {
126
127 case ATMIO_AAL_0:
128 case ATMIO_AAL_34:
129 case ATMIO_AAL_5:
130 break;
131

--- 72 unchanged lines hidden (view full) ---

204 */
205static int
206patm_open_vcc1(struct patm_softc *sc, struct atm_pseudoioctl *ph)
207{
208 struct atmio_openvcc v;
209
210 bzero(&v, sizeof(v));
211 v.param.flags = ATM_PH_FLAGS(&ph->aph) & (ATM_PH_AAL5 | ATM_PH_LLCSNAP);
124 vcc->rxhand = arg->rxhand;
125 switch (vcc->vcc.aal) {
126
127 case ATMIO_AAL_0:
128 case ATMIO_AAL_34:
129 case ATMIO_AAL_5:
130 break;
131

--- 72 unchanged lines hidden (view full) ---

204 */
205static int
206patm_open_vcc1(struct patm_softc *sc, struct atm_pseudoioctl *ph)
207{
208 struct atmio_openvcc v;
209
210 bzero(&v, sizeof(v));
211 v.param.flags = ATM_PH_FLAGS(&ph->aph) & (ATM_PH_AAL5 | ATM_PH_LLCSNAP);
212 v.param.flags |= ATMIO_FLAG_ASYNC;
213
212 v.param.vpi = ATM_PH_VPI(&ph->aph);
213 v.param.vci = ATM_PH_VCI(&ph->aph);
214 v.param.aal = (ATM_PH_FLAGS(&ph->aph) & ATM_PH_AAL5)
215 ? ATMIO_AAL_5 : ATMIO_AAL_0;
216 v.param.traffic = ATMIO_TRAFFIC_UBR;;
217 v.param.tparam.pcr = sc->ifatm.mib.pcr;
218 v.rxhand = ph->rxhand;
219
214 v.param.vpi = ATM_PH_VPI(&ph->aph);
215 v.param.vci = ATM_PH_VCI(&ph->aph);
216 v.param.aal = (ATM_PH_FLAGS(&ph->aph) & ATM_PH_AAL5)
217 ? ATMIO_AAL_5 : ATMIO_AAL_0;
218 v.param.traffic = ATMIO_TRAFFIC_UBR;;
219 v.param.tparam.pcr = sc->ifatm.mib.pcr;
220 v.rxhand = ph->rxhand;
221
220 return (patm_open_vcc(sc, &v, PATM_VCC_ASYNC));
222 return (patm_open_vcc(sc, &v));
221}
222
223/*
224 * Try to close the given VCC
225 */
226static int
227patm_close_vcc(struct patm_softc *sc, struct atmio_closevcc *arg)
228{

--- 20 unchanged lines hidden (view full) ---

249 goto done;
250 }
251
252 if (vcc->vflags & PATM_VCC_TX_OPEN)
253 patm_tx_vcc_close(sc, vcc);
254 if (vcc->vflags & PATM_VCC_RX_OPEN)
255 patm_rx_vcc_close(sc, vcc);
256
223}
224
225/*
226 * Try to close the given VCC
227 */
228static int
229patm_close_vcc(struct patm_softc *sc, struct atmio_closevcc *arg)
230{

--- 20 unchanged lines hidden (view full) ---

251 goto done;
252 }
253
254 if (vcc->vflags & PATM_VCC_TX_OPEN)
255 patm_tx_vcc_close(sc, vcc);
256 if (vcc->vflags & PATM_VCC_RX_OPEN)
257 patm_rx_vcc_close(sc, vcc);
258
257 if (vcc->vflags & PATM_VCC_ASYNC)
259 if (vcc->vcc.flags & ATMIO_FLAG_ASYNC)
258 goto done;
259
260 while (vcc->vflags & (PATM_VCC_TX_CLOSING | PATM_VCC_RX_CLOSING)) {
261 cv_wait(&sc->vcc_cv, &sc->mtx);
262 if (!(sc->ifatm.ifnet.if_flags & IFF_RUNNING)) {
263 /* ups, has been stopped */
264 error = EIO;
265 goto done;

--- 131 unchanged lines hidden (view full) ---

397 */
398 if (ifr->ifr_mtu > ATMMTU)
399 error = EINVAL;
400 else
401 ifp->if_mtu = ifr->ifr_mtu;
402 break;
403
404 case SIOCATMOPENVCC: /* netgraph/harp internal use */
260 goto done;
261
262 while (vcc->vflags & (PATM_VCC_TX_CLOSING | PATM_VCC_RX_CLOSING)) {
263 cv_wait(&sc->vcc_cv, &sc->mtx);
264 if (!(sc->ifatm.ifnet.if_flags & IFF_RUNNING)) {
265 /* ups, has been stopped */
266 error = EIO;
267 goto done;

--- 131 unchanged lines hidden (view full) ---

399 */
400 if (ifr->ifr_mtu > ATMMTU)
401 error = EINVAL;
402 else
403 ifp->if_mtu = ifr->ifr_mtu;
404 break;
405
406 case SIOCATMOPENVCC: /* netgraph/harp internal use */
405 error = patm_open_vcc(sc, (struct atmio_openvcc *)data, 0);
407 error = patm_open_vcc(sc, (struct atmio_openvcc *)data);
406 break;
407
408 case SIOCATMCLOSEVCC: /* netgraph and HARP internal use */
409 error = patm_close_vcc(sc, (struct atmio_closevcc *)data);
410 break;
411
412 case SIOCATMENA: /* NATM internal use */
413 error = patm_open_vcc1(sc, (struct atm_pseudoioctl *)data);

--- 33 unchanged lines hidden ---
408 break;
409
410 case SIOCATMCLOSEVCC: /* netgraph and HARP internal use */
411 error = patm_close_vcc(sc, (struct atmio_closevcc *)data);
412 break;
413
414 case SIOCATMENA: /* NATM internal use */
415 error = patm_open_vcc1(sc, (struct atm_pseudoioctl *)data);

--- 33 unchanged lines hidden ---