Lines Matching refs:ch
710 struct vmbus_channel *ch; in vmbus_event_flags_proc() local
732 ch = sc->sc_chanmap[chanid]; in vmbus_event_flags_proc()
733 if (__predict_false(ch == NULL)) { in vmbus_event_flags_proc()
738 if (ch->ch_state != VMBUS_CHANSTATE_OPENED) { in vmbus_event_flags_proc()
743 ch->ch_evcnt.ev_count++; in vmbus_event_flags_proc()
744 vmbus_channel_schedule(ch); in vmbus_event_flags_proc()
1024 struct vmbus_channel *ch; in vmbus_channel_alloc() local
1026 ch = kmem_zalloc(sizeof(*ch), KM_SLEEP); in vmbus_channel_alloc()
1028 ch->ch_monprm = hyperv_dma_alloc(sc->sc_dmat, &ch->ch_monprm_dma, in vmbus_channel_alloc()
1029 sizeof(*ch->ch_monprm), 8, 0, 1); in vmbus_channel_alloc()
1030 if (ch->ch_monprm == NULL) { in vmbus_channel_alloc()
1032 kmem_free(ch, sizeof(*ch)); in vmbus_channel_alloc()
1036 ch->ch_refs = 1; in vmbus_channel_alloc()
1037 ch->ch_sc = sc; in vmbus_channel_alloc()
1038 mutex_init(&ch->ch_event_lock, MUTEX_DEFAULT, IPL_NET); in vmbus_channel_alloc()
1039 cv_init(&ch->ch_event_cv, "hvevwait"); in vmbus_channel_alloc()
1040 mutex_init(&ch->ch_subchannel_lock, MUTEX_DEFAULT, IPL_NET); in vmbus_channel_alloc()
1041 cv_init(&ch->ch_subchannel_cv, "hvsubch"); in vmbus_channel_alloc()
1042 TAILQ_INIT(&ch->ch_subchannels); in vmbus_channel_alloc()
1044 ch->ch_state = VMBUS_CHANSTATE_CLOSED; in vmbus_channel_alloc()
1046 return ch; in vmbus_channel_alloc()
1050 vmbus_channel_free(struct vmbus_channel *ch) in vmbus_channel_free() argument
1052 struct vmbus_softc *sc = ch->ch_sc; in vmbus_channel_free()
1054 KASSERTMSG(TAILQ_EMPTY(&ch->ch_subchannels) && in vmbus_channel_free()
1055 ch->ch_subchannel_count == 0, "still owns sub-channels"); in vmbus_channel_free()
1056 KASSERTMSG(ch->ch_state == 0 || ch->ch_state == VMBUS_CHANSTATE_CLOSED, in vmbus_channel_free()
1058 KASSERTMSG(ch->ch_refs == 0, "channel %u: invalid refcnt %d", in vmbus_channel_free()
1059 ch->ch_id, ch->ch_refs); in vmbus_channel_free()
1061 hyperv_dma_free(sc->sc_dmat, &ch->ch_monprm_dma); in vmbus_channel_free()
1062 mutex_destroy(&ch->ch_event_lock); in vmbus_channel_free()
1063 cv_destroy(&ch->ch_event_cv); in vmbus_channel_free()
1064 mutex_destroy(&ch->ch_subchannel_lock); in vmbus_channel_free()
1065 cv_destroy(&ch->ch_subchannel_cv); in vmbus_channel_free()
1067 if (ch->ch_taskq != NULL) in vmbus_channel_free()
1068 softint_disestablish(ch->ch_taskq); in vmbus_channel_free()
1069 kmem_free(ch, sizeof(*ch)); in vmbus_channel_free()
1076 struct vmbus_channel *ch; in vmbus_channel_add() local
1089 TAILQ_FOREACH(ch, &sc->sc_prichans, ch_prientry) { in vmbus_channel_add()
1090 if (!memcmp(&ch->ch_type, &nch->ch_type, sizeof(ch->ch_type)) && in vmbus_channel_add()
1091 !memcmp(&ch->ch_inst, &nch->ch_inst, sizeof(ch->ch_inst))) in vmbus_channel_add()
1095 if (ch == NULL) { in vmbus_channel_add()
1106 if (ch == NULL) { in vmbus_channel_add()
1116 KASSERT(ch != NULL); in vmbus_channel_add()
1121 nch->ch_primary_channel = ch; in vmbus_channel_add()
1122 nch->ch_dev = ch->ch_dev; in vmbus_channel_add()
1124 mutex_enter(&ch->ch_subchannel_lock); in vmbus_channel_add()
1125 TAILQ_INSERT_TAIL(&ch->ch_subchannels, nch, ch_subentry); in vmbus_channel_add()
1126 ch->ch_subchannel_count++; in vmbus_channel_add()
1127 cv_signal(&ch->ch_subchannel_cv); in vmbus_channel_add()
1128 mutex_exit(&ch->ch_subchannel_lock); in vmbus_channel_add()
1141 vmbus_channel_cpu_set(struct vmbus_channel *ch, int cpu) in vmbus_channel_cpu_set() argument
1143 struct vmbus_softc *sc = ch->ch_sc; in vmbus_channel_cpu_set()
1153 ch->ch_cpuid = cpu; in vmbus_channel_cpu_set()
1154 ch->ch_vcpu = hyperv_get_vcpuid(cpu); in vmbus_channel_cpu_set()
1156 aprint_debug_dev(ch->ch_dev != NULL ? ch->ch_dev : sc->sc_dev, in vmbus_channel_cpu_set()
1158 ch->ch_id, ch->ch_cpuid, ch->ch_vcpu); in vmbus_channel_cpu_set()
1162 vmbus_channel_cpu_rr(struct vmbus_channel *ch) in vmbus_channel_cpu_rr() argument
1168 vmbus_channel_cpu_set(ch, cpu); in vmbus_channel_cpu_rr()
1172 vmbus_channel_cpu_default(struct vmbus_channel *ch) in vmbus_channel_cpu_default() argument
1180 vmbus_channel_cpu_set(ch, 0); in vmbus_channel_cpu_default()
1184 vmbus_channel_is_revoked(struct vmbus_channel *ch) in vmbus_channel_is_revoked() argument
1187 return (ch->ch_flags & CHF_REVOKED) ? true : false; in vmbus_channel_is_revoked()
1193 struct vmbus_channel *ch; in vmbus_process_offer() local
1195 ch = vmbus_channel_alloc(sc); in vmbus_process_offer()
1196 if (ch == NULL) { in vmbus_process_offer()
1207 ch->ch_flags |= CHF_BATCHED; in vmbus_process_offer()
1209 hyperv_guid_sprint(&co->chm_chtype, ch->ch_ident, in vmbus_process_offer()
1210 sizeof(ch->ch_ident)); in vmbus_process_offer()
1212 ch->ch_monprm->mp_connid = VMBUS_CONNID_EVENT; in vmbus_process_offer()
1214 ch->ch_monprm->mp_connid = co->chm_connid; in vmbus_process_offer()
1217 ch->ch_mgroup = co->chm_montrig / VMBUS_MONTRIG_LEN; in vmbus_process_offer()
1218 ch->ch_mindex = co->chm_montrig % VMBUS_MONTRIG_LEN; in vmbus_process_offer()
1219 ch->ch_flags |= CHF_MONITOR; in vmbus_process_offer()
1222 ch->ch_id = co->chm_chanid; in vmbus_process_offer()
1223 ch->ch_subidx = co->chm_subidx; in vmbus_process_offer()
1225 memcpy(&ch->ch_type, &co->chm_chtype, sizeof(ch->ch_type)); in vmbus_process_offer()
1226 memcpy(&ch->ch_inst, &co->chm_chinst, sizeof(ch->ch_inst)); in vmbus_process_offer()
1228 if (vmbus_channel_add(ch) != 0) { in vmbus_process_offer()
1229 atomic_dec_uint(&ch->ch_refs); in vmbus_process_offer()
1230 vmbus_channel_free(ch); in vmbus_process_offer()
1234 ch->ch_state = VMBUS_CHANSTATE_OFFERED; in vmbus_process_offer()
1236 vmbus_devq_enqueue(sc, VMBUS_DEV_TYPE_ATTACH, ch); in vmbus_process_offer()
1239 printf("%s: channel %u: \"%s\"", device_xname(sc->sc_dev), ch->ch_id, in vmbus_process_offer()
1240 ch->ch_ident); in vmbus_process_offer()
1241 if (ch->ch_flags & CHF_MONITOR) in vmbus_process_offer()
1252 struct vmbus_channel *ch; in vmbus_process_rescind() local
1261 ch = vmbus_channel_lookup(sc, cr->chm_chanid); in vmbus_process_rescind()
1262 if (ch == NULL) { in vmbus_process_rescind()
1268 TAILQ_REMOVE(&sc->sc_channels, ch, ch_entry); in vmbus_process_rescind()
1271 if (VMBUS_CHAN_ISPRIMARY(ch)) { in vmbus_process_rescind()
1273 TAILQ_REMOVE(&sc->sc_prichans, ch, ch_prientry); in vmbus_process_rescind()
1277 KASSERTMSG(!(ch->ch_flags & CHF_REVOKED), in vmbus_process_rescind()
1278 "channel%u has already been revoked", ch->ch_id); in vmbus_process_rescind()
1279 atomic_or_uint(&ch->ch_flags, CHF_REVOKED); in vmbus_process_rescind()
1281 vmbus_channel_detach(ch); in vmbus_process_rescind()
1285 vmbus_channel_release(struct vmbus_channel *ch) in vmbus_channel_release() argument
1287 struct vmbus_softc *sc = ch->ch_sc; in vmbus_channel_release()
1293 cmd.chm_chanid = ch->ch_id; in vmbus_channel_release()
1308 struct vmbus_channel **ret, *ch; in vmbus_subchannel_get() local
1337 TAILQ_FOREACH(ch, &prich->ch_subchannels, ch_subentry) { in vmbus_subchannel_get()
1338 ret[i] = ch; /* XXX inc refs */ in vmbus_subchannel_get()
1384 struct vmbus_channel *ch = NULL; in vmbus_channel_lookup() local
1386 TAILQ_FOREACH(ch, &sc->sc_channels, ch_entry) { in vmbus_channel_lookup()
1387 if (ch->ch_id == chanid) in vmbus_channel_lookup()
1388 return ch; in vmbus_channel_lookup()
1394 vmbus_channel_ring_create(struct vmbus_channel *ch, uint32_t buflen) in vmbus_channel_ring_create() argument
1396 struct vmbus_softc *sc = ch->ch_sc; in vmbus_channel_ring_create()
1399 ch->ch_ring_size = 2 * buflen; in vmbus_channel_ring_create()
1401 ch->ch_ring = hyperv_dma_alloc(sc->sc_dmat, &ch->ch_ring_dma, in vmbus_channel_ring_create()
1402 ch->ch_ring_size, PAGE_SIZE, 0, 1); in vmbus_channel_ring_create()
1403 if (ch->ch_ring == NULL) { in vmbus_channel_ring_create()
1409 memset(&ch->ch_wrd, 0, sizeof(ch->ch_wrd)); in vmbus_channel_ring_create()
1410 ch->ch_wrd.rd_ring = (struct vmbus_bufring *)ch->ch_ring; in vmbus_channel_ring_create()
1411 ch->ch_wrd.rd_size = buflen; in vmbus_channel_ring_create()
1412 ch->ch_wrd.rd_dsize = buflen - sizeof(struct vmbus_bufring); in vmbus_channel_ring_create()
1413 mutex_init(&ch->ch_wrd.rd_lock, MUTEX_DEFAULT, IPL_NET); in vmbus_channel_ring_create()
1415 memset(&ch->ch_rrd, 0, sizeof(ch->ch_rrd)); in vmbus_channel_ring_create()
1416 ch->ch_rrd.rd_ring = (struct vmbus_bufring *)((uint8_t *)ch->ch_ring + in vmbus_channel_ring_create()
1418 ch->ch_rrd.rd_size = buflen; in vmbus_channel_ring_create()
1419 ch->ch_rrd.rd_dsize = buflen - sizeof(struct vmbus_bufring); in vmbus_channel_ring_create()
1420 mutex_init(&ch->ch_rrd.rd_lock, MUTEX_DEFAULT, IPL_NET); in vmbus_channel_ring_create()
1422 if (vmbus_handle_alloc(ch, &ch->ch_ring_dma, ch->ch_ring_size, in vmbus_channel_ring_create()
1423 &ch->ch_ring_gpadl)) { in vmbus_channel_ring_create()
1426 vmbus_channel_ring_destroy(ch); in vmbus_channel_ring_create()
1434 vmbus_channel_ring_destroy(struct vmbus_channel *ch) in vmbus_channel_ring_destroy() argument
1436 struct vmbus_softc *sc = ch->ch_sc; in vmbus_channel_ring_destroy()
1438 hyperv_dma_free(sc->sc_dmat, &ch->ch_ring_dma); in vmbus_channel_ring_destroy()
1439 ch->ch_ring = NULL; in vmbus_channel_ring_destroy()
1440 vmbus_handle_free(ch, ch->ch_ring_gpadl); in vmbus_channel_ring_destroy()
1442 mutex_destroy(&ch->ch_wrd.rd_lock); in vmbus_channel_ring_destroy()
1443 memset(&ch->ch_wrd, 0, sizeof(ch->ch_wrd)); in vmbus_channel_ring_destroy()
1444 mutex_destroy(&ch->ch_rrd.rd_lock); in vmbus_channel_ring_destroy()
1445 memset(&ch->ch_rrd, 0, sizeof(ch->ch_rrd)); in vmbus_channel_ring_destroy()
1449 vmbus_channel_open(struct vmbus_channel *ch, size_t buflen, void *udata, in vmbus_channel_open() argument
1452 struct vmbus_softc *sc = ch->ch_sc; in vmbus_channel_open()
1457 if (ch->ch_ring == NULL && in vmbus_channel_open()
1458 (rv = vmbus_channel_ring_create(ch, buflen))) { in vmbus_channel_open()
1465 sc->sc_chanmap[ch->ch_id] = ch; in vmbus_channel_open()
1469 cmd.chm_openid = ch->ch_id; in vmbus_channel_open()
1470 cmd.chm_chanid = ch->ch_id; in vmbus_channel_open()
1471 cmd.chm_gpadl = ch->ch_ring_gpadl; in vmbus_channel_open()
1472 cmd.chm_txbr_pgcnt = atop(ch->ch_wrd.rd_size); in vmbus_channel_open()
1473 cmd.chm_vcpuid = ch->ch_vcpu; in vmbus_channel_open()
1479 ch->ch_handler = handler; in vmbus_channel_open()
1480 ch->ch_ctx = arg; in vmbus_channel_open()
1481 ch->ch_state = VMBUS_CHANSTATE_OPENED; in vmbus_channel_open()
1485 sc->sc_chanmap[ch->ch_id] = NULL; in vmbus_channel_open()
1486 vmbus_channel_ring_destroy(ch); in vmbus_channel_open()
1489 ch->ch_handler = NULL; in vmbus_channel_open()
1490 ch->ch_ctx = NULL; in vmbus_channel_open()
1491 ch->ch_state = VMBUS_CHANSTATE_OFFERED; in vmbus_channel_open()
1498 vmbus_channel_detach(struct vmbus_channel *ch) in vmbus_channel_detach() argument
1502 KASSERTMSG(ch->ch_refs > 0, "channel%u: invalid refcnt %d", in vmbus_channel_detach()
1503 ch->ch_id, ch->ch_refs); in vmbus_channel_detach()
1506 refs = atomic_dec_uint_nv(&ch->ch_refs); in vmbus_channel_detach()
1510 vmbus_devq_enqueue(ch->ch_sc, VMBUS_DEV_TYPE_DETACH, ch); in vmbus_channel_detach()
1515 vmbus_channel_close_internal(struct vmbus_channel *ch) in vmbus_channel_close_internal() argument
1517 struct vmbus_softc *sc = ch->ch_sc; in vmbus_channel_close_internal()
1521 sc->sc_chanmap[ch->ch_id] = NULL; in vmbus_channel_close_internal()
1525 cmd.chm_chanid = ch->ch_id; in vmbus_channel_close_internal()
1527 ch->ch_state = VMBUS_CHANSTATE_CLOSING; in vmbus_channel_close_internal()
1535 ch->ch_state = VMBUS_CHANSTATE_CLOSED; in vmbus_channel_close_internal()
1536 vmbus_channel_ring_destroy(ch); in vmbus_channel_close_internal()
1541 vmbus_channel_close_direct(struct vmbus_channel *ch) in vmbus_channel_close_direct() argument
1545 rv = vmbus_channel_close_internal(ch); in vmbus_channel_close_direct()
1546 if (!VMBUS_CHAN_ISPRIMARY(ch)) in vmbus_channel_close_direct()
1547 vmbus_channel_detach(ch); in vmbus_channel_close_direct()
1552 vmbus_channel_close(struct vmbus_channel *ch) in vmbus_channel_close() argument
1557 if (!VMBUS_CHAN_ISPRIMARY(ch)) in vmbus_channel_close()
1560 cnt = ch->ch_subchannel_count; in vmbus_channel_close()
1562 subch = vmbus_subchannel_get(ch, cnt); in vmbus_channel_close()
1563 for (i = 0; i < ch->ch_subchannel_count; i++) { in vmbus_channel_close()
1566 vmbus_channel_detach(ch); in vmbus_channel_close()
1571 return vmbus_channel_close_internal(ch); in vmbus_channel_close()
1575 vmbus_channel_setevent(struct vmbus_softc *sc, struct vmbus_channel *ch) in vmbus_channel_setevent() argument
1580 set_bit(ch->ch_id, sc->sc_wevents); in vmbus_channel_setevent()
1581 if (ch->ch_flags & CHF_MONITOR) { in vmbus_channel_setevent()
1582 mtg = &sc->sc_monitor[1]->mnf_trigs[ch->ch_mgroup]; in vmbus_channel_setevent()
1583 set_bit(ch->ch_mindex, &mtg->mt_pending); in vmbus_channel_setevent()
1585 vmbus_intr_signal(sc, hyperv_dma_get_paddr(&ch->ch_monprm_dma)); in vmbus_channel_setevent()
1591 struct vmbus_channel *ch = arg; in vmbus_channel_intr() local
1593 if (vmbus_channel_ready(ch)) in vmbus_channel_intr()
1594 ch->ch_handler(ch->ch_ctx); in vmbus_channel_intr()
1596 if (vmbus_channel_unpause(ch) == 0) in vmbus_channel_intr()
1599 vmbus_channel_pause(ch); in vmbus_channel_intr()
1600 vmbus_channel_schedule(ch); in vmbus_channel_intr()
1604 vmbus_channel_setdeferred(struct vmbus_channel *ch, const char *name) in vmbus_channel_setdeferred() argument
1607 ch->ch_taskq = softint_establish(SOFTINT_NET | SOFTINT_MPSAFE, in vmbus_channel_setdeferred()
1608 vmbus_channel_intr, ch); in vmbus_channel_setdeferred()
1609 if (ch->ch_taskq == NULL) in vmbus_channel_setdeferred()
1615 vmbus_channel_schedule(struct vmbus_channel *ch) in vmbus_channel_schedule() argument
1618 if (ch->ch_handler) { in vmbus_channel_schedule()
1619 if (!cold && (ch->ch_flags & CHF_BATCHED)) { in vmbus_channel_schedule()
1620 vmbus_channel_pause(ch); in vmbus_channel_schedule()
1621 softint_schedule(ch->ch_taskq); in vmbus_channel_schedule()
1623 ch->ch_handler(ch->ch_ctx); in vmbus_channel_schedule()
1722 vmbus_channel_send(struct vmbus_channel *ch, void *data, uint32_t datalen, in vmbus_channel_send() argument
1725 struct vmbus_softc *sc = ch->ch_sc; in vmbus_channel_send()
1750 mutex_enter(&ch->ch_wrd.rd_lock); in vmbus_channel_send()
1751 rv = vmbus_ring_write(&ch->ch_wrd, iov, 3, &needsig); in vmbus_channel_send()
1752 mutex_exit(&ch->ch_wrd.rd_lock); in vmbus_channel_send()
1754 vmbus_channel_setevent(sc, ch); in vmbus_channel_send()
1760 vmbus_channel_send_sgl(struct vmbus_channel *ch, struct vmbus_gpa *sgl, in vmbus_channel_send_sgl() argument
1763 struct vmbus_softc *sc = ch->ch_sc; in vmbus_channel_send_sgl()
1794 mutex_enter(&ch->ch_wrd.rd_lock); in vmbus_channel_send_sgl()
1795 rv = vmbus_ring_write(&ch->ch_wrd, iov, 4, &needsig); in vmbus_channel_send_sgl()
1796 mutex_exit(&ch->ch_wrd.rd_lock); in vmbus_channel_send_sgl()
1798 vmbus_channel_setevent(sc, ch); in vmbus_channel_send_sgl()
1804 vmbus_channel_send_prpl(struct vmbus_channel *ch, struct vmbus_gpa_range *prpl, in vmbus_channel_send_prpl() argument
1807 struct vmbus_softc *sc = ch->ch_sc; in vmbus_channel_send_prpl()
1838 mutex_enter(&ch->ch_wrd.rd_lock); in vmbus_channel_send_prpl()
1839 rv = vmbus_ring_write(&ch->ch_wrd, iov, 4, &needsig); in vmbus_channel_send_prpl()
1840 mutex_exit(&ch->ch_wrd.rd_lock); in vmbus_channel_send_prpl()
1842 vmbus_channel_setevent(sc, ch); in vmbus_channel_send_prpl()
1893 vmbus_channel_recv(struct vmbus_channel *ch, void *data, uint32_t datalen, in vmbus_channel_recv() argument
1896 struct vmbus_softc *sc = ch->ch_sc; in vmbus_channel_recv()
1903 mutex_enter(&ch->ch_rrd.rd_lock); in vmbus_channel_recv()
1905 if ((rv = vmbus_ring_peek(&ch->ch_rrd, &cph, sizeof(cph))) != 0) { in vmbus_channel_recv()
1906 mutex_exit(&ch->ch_rrd.rd_lock); in vmbus_channel_recv()
1913 mutex_exit(&ch->ch_rrd.rd_lock); in vmbus_channel_recv()
1919 rv = vmbus_ring_read(&ch->ch_rrd, data, pktlen, offset); in vmbus_channel_recv()
1925 mutex_exit(&ch->ch_rrd.rd_lock); in vmbus_channel_recv()
1949 vmbus_channel_pause(struct vmbus_channel *ch) in vmbus_channel_pause() argument
1952 atomic_or_ulong(&ch->ch_sc->sc_evtmask[ch->ch_id / VMBUS_EVTFLAG_LEN], in vmbus_channel_pause()
1953 __BIT(ch->ch_id % VMBUS_EVTFLAG_LEN)); in vmbus_channel_pause()
1954 vmbus_ring_mask(&ch->ch_rrd); in vmbus_channel_pause()
1958 vmbus_channel_unpause(struct vmbus_channel *ch) in vmbus_channel_unpause() argument
1962 atomic_and_ulong(&ch->ch_sc->sc_evtmask[ch->ch_id / VMBUS_EVTFLAG_LEN], in vmbus_channel_unpause()
1963 ~__BIT(ch->ch_id % VMBUS_EVTFLAG_LEN)); in vmbus_channel_unpause()
1964 vmbus_ring_unmask(&ch->ch_rrd); in vmbus_channel_unpause()
1965 vmbus_ring_avail(&ch->ch_rrd, NULL, &avail); in vmbus_channel_unpause()
1971 vmbus_channel_ready(struct vmbus_channel *ch) in vmbus_channel_ready() argument
1975 vmbus_ring_avail(&ch->ch_rrd, NULL, &avail); in vmbus_channel_ready()
1981 vmbus_channel_tx_empty(struct vmbus_channel *ch) in vmbus_channel_tx_empty() argument
1984 return vmbus_ring_is_empty(&ch->ch_wrd); in vmbus_channel_tx_empty()
1988 vmbus_channel_rx_empty(struct vmbus_channel *ch) in vmbus_channel_rx_empty() argument
1991 return vmbus_ring_is_empty(&ch->ch_rrd); in vmbus_channel_rx_empty()
2003 vmbus_handle_alloc(struct vmbus_channel *ch, const struct hyperv_dma *dma, in vmbus_handle_alloc() argument
2006 struct vmbus_softc *sc = ch->ch_sc; in vmbus_handle_alloc()
2061 hdr->chm_chanid = ch->ch_id; in vmbus_handle_alloc()
2129 vmbus_handle_free(struct vmbus_channel *ch, uint32_t handle) in vmbus_handle_free() argument
2131 struct vmbus_softc *sc = ch->ch_sc; in vmbus_handle_free()
2138 cmd.chm_chanid = ch->ch_id; in vmbus_handle_free()
2227 vmbus_devq_enqueue(struct vmbus_softc *sc, int type, struct vmbus_channel *ch) in vmbus_devq_enqueue() argument
2238 vd->vd_chan = ch; in vmbus_devq_enqueue()
2240 if (VMBUS_CHAN_ISPRIMARY(ch)) { in vmbus_devq_enqueue()
2258 struct vmbus_channel *ch; in vmbus_process_devq() local
2270 ch = vd->vd_chan; in vmbus_process_devq()
2271 vaa.aa_type = &ch->ch_type; in vmbus_process_devq()
2272 vaa.aa_inst = &ch->ch_inst; in vmbus_process_devq()
2273 vaa.aa_ident = ch->ch_ident; in vmbus_process_devq()
2274 vaa.aa_chan = ch; in vmbus_process_devq()
2277 ch->ch_dev = config_found(sc->sc_dev, in vmbus_process_devq()
2282 ch = vd->vd_chan; in vmbus_process_devq()
2283 if (ch->ch_dev != NULL) { in vmbus_process_devq()
2284 config_detach(ch->ch_dev, DETACH_FORCE); in vmbus_process_devq()
2285 ch->ch_dev = NULL; in vmbus_process_devq()
2287 vmbus_channel_release(ch); in vmbus_process_devq()
2288 vmbus_channel_free(ch); in vmbus_process_devq()
2326 struct vmbus_channel *ch, *prich; in vmbus_subchannel_devq_thread() local
2346 ch = vd->vd_chan; in vmbus_subchannel_devq_thread()
2348 vmbus_channel_release(ch); in vmbus_subchannel_devq_thread()
2350 prich = ch->ch_primary_channel; in vmbus_subchannel_devq_thread()
2352 TAILQ_REMOVE(&prich->ch_subchannels, ch, in vmbus_subchannel_devq_thread()
2358 vmbus_channel_free(ch); in vmbus_subchannel_devq_thread()