Lines Matching refs:vc

208 static void en_close_finish(struct en_softc *sc, struct en_vcc *vc);
968 struct en_vcc *vc;
983 (vc = sc->vccs[vci]) == NULL ||
984 (vc->vflags & VCC_CLOSE_RX)) {
990 if (vc->vcc.aal == ATMIO_AAL_5)
1051 vc->txspeed, m->m_pkthdr.len / MID_ATMDATASZ));
1090 tx = vc->txslot;
1135 * en_loadvc: load a vc tab entry from a slot
1140 en_loadvc(struct en_softc *sc, struct en_vcc *vc)
1142 uint32_t reg = en_read(sc, MID_VC(vc->vcc.vci));
1145 en_write(sc, MID_VC(vc->vcc.vci), reg);
1151 en_write(sc, MID_DST_RP(vc->vcc.vci), 0);
1153 en_write(sc, MID_WP_ST_CNT(vc->vcc.vci), 0);
1155 en_write(sc, MID_VC(vc->vcc.vci), vc->rxslot->mode);
1157 vc->rxslot->cur = vc->rxslot->start;
1159 DBG(sc, VC, ("rx%td: assigned to VCI %d", vc->rxslot - sc->rxslot,
1160 vc->vcc.vci));
1173 struct en_vcc *vc;
1182 vc = uma_zalloc(en_vcc_zone, M_NOWAIT | M_ZERO);
1183 if (vc == NULL)
1202 vc->rxslot = slot;
1203 vc->rxhand = op->rxhand;
1204 vc->vcc = op->param;
1209 slot->vcc = vc;
1213 vc->rxslot - sc->rxslot));
1215 vc->txspeed = 0;
1216 vc->txslot = sc->txslot;
1217 vc->txslot->nref++; /* bump reference count */
1219 en_loadvc(sc, vc); /* does debug printf for us */
1222 sc->vccs[vc->vcc.vci] = vc;
1223 vc = NULL;
1227 if (vc != NULL)
1228 uma_zfree(en_vcc_zone, vc);
1238 en_close_finish(struct en_softc *sc, struct en_vcc *vc)
1241 if (vc->rxslot != NULL)
1242 vc->rxslot->vcc = NULL;
1244 DBG(sc, VC, ("vci: %u free (%p)", vc->vcc.vci, vc));
1246 sc->vccs[vc->vcc.vci] = NULL;
1247 uma_zfree(en_vcc_zone, vc);
1258 struct en_vcc *vc;
1267 if ((vc = sc->vccs[cl->vci]) == NULL) {
1275 if (vc->rxslot == NULL) {
1279 if (vc->vflags & VCC_DRAIN) {
1290 vc->rxslot->mode = newmode;
1292 vc->txslot->nref--;
1295 if (_IF_QLEN(&vc->rxslot->indma) == 0 &&
1296 _IF_QLEN(&vc->rxslot->q) == 0 &&
1297 (vc->vflags & VCC_SWSL) == 0) {
1298 en_close_finish(sc, vc);
1302 vc->vflags |= VCC_DRAIN;
1305 if (vc->vcc.flags & ATMIO_FLAG_ASYNC)
1308 vc->vflags |= VCC_CLOSE_RX;
1310 (vc->vflags & VCC_DRAIN))
1313 en_close_finish(sc, vc);
1431 int vc, slot;
1452 * init obmem data structures: vc tab, dma q's, slist.
1499 for (vc = 0; vc < MID_N_VC; vc++)
1500 if (sc->vccs[vc] != NULL)
1501 en_loadvc(sc, sc->vccs[vc]);
1764 struct en_vcc *vc;
1773 if ((vc = sc->vccs[vci]) == NULL ||
1774 (vc->vcc.flags & ATMIO_FLAG_NORX)) {
1781 en_write(sc, MID_VC(vci), vc->rxslot->mode);
1787 if ((vc->vflags & VCC_SWSL) == 0) {
1790 vc->vflags |= VCC_SWSL;
1807 struct en_vcc *vc;
1820 if ((vc = slot->vcc) == NULL) {
1828 if (vc->vflags & VCC_DRAIN) {
1833 (en_read(sc, MID_VC(vc->vcc.vci)) & MIDV_INSERVICE) == 0 &&
1834 (vc->vflags & VCC_SWSL) == 0) {
1835 vc->vflags &= ~VCC_CLOSE_RX;
1836 if (vc->vcc.flags & ATMIO_FLAG_ASYNC)
1837 en_close_finish(sc, vc);
1845 ATM_PH_FLAGS(&ah) = vc->vcc.flags;
1847 ATM_PH_SETVCI(&ah, vc->vcc.vci);
1850 "hand %p", slot - sc->rxslot, vc->vcc.vci, m,
1851 EN_DQ_LEN(drq), vc->rxhand));
1856 vc->ipackets++;
1857 vc->ibytes += m->m_pkthdr.len;
1867 atm_input(sc->ifp, &ah, m, vc->rxhand);
1971 struct en_vcc *vc; /* vc we are receiving on */
1987 struct en_rxslot *slot = rx->vc->rxslot;
2023 MID_MK_RXQ_ENI(COUNT, rx->vc->vcc.vci, 0, BCODE) : \
2024 MID_MK_RXQ_ADP(COUNT, rx->vc->vcc.vci, 0, BCODE)); \
2175 struct en_vcc *vc;
2188 rx.vc = vc = sc->vccs[sc->swslist[sc->swsl_head]];
2189 slot = vc->rxslot;
2196 "0x%x", slot - sc->rxslot, vc->vcc.vci, slot->start,
2202 dstart = MIDV_DSTART(en_read(sc, MID_DST_RP(vc->vcc.vci)));
2209 vc->vflags &= ~VCC_SWSL;
2212 slot - sc->rxslot, vc->vcc.vci));
2231 } else if (vc->vcc.aal != ATMIO_AAL_5) {
2315 slot - sc->rxslot, vc->vcc.vci, m, mlen, rx.pre_skip,
2384 vc->vcc.vci, MID_DMA_END, MIDDMA_JK));
2388 vc->vcc.vci, MID_DMA_END, MIDDMA_JK));