Lines Matching defs:sc

96 hatm_open_vcc(struct hatm_softc *sc, struct atmio_openvcc *arg)
102 DBG(sc, VCC, ("Open VCC: %u.%u flags=%#x", arg->param.vpi,
115 vcc = uma_zalloc(sc->vcc_zone, M_NOWAIT | M_ZERO);
119 mtx_lock(&sc->mtx);
120 if (!(sc->ifp->if_drv_flags & IFF_DRV_RUNNING)) {
124 if (sc->vccs[cid] != NULL) {
158 (error = hatm_tx_vcc_can_open(sc, cid, vcc)) != 0)
162 sc->vccs[cid] = vcc;
163 hatm_load_vc(sc, cid, 0);
167 sc->open_vccs++;
170 mtx_unlock(&sc->mtx);
172 uma_zfree(sc->vcc_zone, vcc);
177 hatm_load_vc(struct hatm_softc *sc, u_int cid, int reopen)
179 struct hevcc *vcc = sc->vccs[cid];
182 hatm_tx_vcc_open(sc, cid);
184 hatm_rx_vcc_open(sc, cid);
192 ATMEV_SEND_VCC_CHANGED(IFP2IFATM(sc->ifp), vcc->param.vpi,
200 hatm_vcc_closed(struct hatm_softc *sc, u_int cid)
202 struct hevcc *vcc = sc->vccs[cid];
207 ATMEV_SEND_VCC_CHANGED(IFP2IFATM(sc->ifp), HE_VPI(cid), HE_VCI(cid), 0);
209 sc->open_vccs--;
210 uma_zfree(sc->vcc_zone, vcc);
211 sc->vccs[cid] = NULL;
218 hatm_close_vcc(struct hatm_softc *sc, struct atmio_closevcc *arg)
224 DBG(sc, VCC, ("Close VCC: %u.%u", arg->vpi, arg->vci));
232 mtx_lock(&sc->mtx);
233 vcc = sc->vccs[cid];
234 if (!(sc->ifp->if_drv_flags & IFF_DRV_RUNNING)) {
245 hatm_tx_vcc_close(sc, cid);
247 hatm_rx_vcc_close(sc, cid);
252 while ((sc->ifp->if_drv_flags & IFF_DRV_RUNNING) &&
254 cv_wait(&sc->vcc_cv, &sc->mtx);
256 if (!(sc->ifp->if_drv_flags & IFF_DRV_RUNNING)) {
262 hatm_tx_vcc_closed(sc, cid);
264 hatm_vcc_closed(sc, cid);
267 mtx_unlock(&sc->mtx);
279 struct hatm_softc *sc = ifp->if_softc;
286 mtx_lock(&sc->mtx);
289 hatm_initialize(sc);
301 mtx_unlock(&sc->mtx);
305 mtx_lock(&sc->mtx);
308 hatm_initialize(sc);
312 hatm_stop(sc);
315 mtx_unlock(&sc->mtx);
320 error = ifmedia_ioctl(ifp, ifr, &sc->media, cmd);
335 vtab = atm_getvccs((struct atmio_vcc **)sc->vccs,
336 HE_MAX_VCCS, sc->open_vccs, &sc->mtx, 1);
343 vtab = atm_getvccs((struct atmio_vcc **)sc->vccs,
344 HE_MAX_VCCS, sc->open_vccs, &sc->mtx, 0);
353 error = hatm_open_vcc(sc, (struct atmio_openvcc *)data);
357 error = hatm_close_vcc(sc, (struct atmio_closevcc *)data);
361 DBG(sc, IOCTL, ("cmd=%08lx arg=%p", cmd, data));