Lines Matching refs:sc
49 static uint32_t urndis_ctrl_query(struct urndis_softc *sc, uint32_t oid,
52 static uint32_t urndis_ctrl_set(struct urndis_softc *sc, uint32_t oid,
54 static uint32_t urndis_ctrl_handle_init(struct urndis_softc *sc,
56 static uint32_t urndis_ctrl_handle_query(struct urndis_softc *sc,
59 static uint32_t urndis_ctrl_handle_reset(struct urndis_softc *sc,
61 static uint32_t urndis_ctrl_init(struct urndis_softc *sc);
62 static uint32_t urndis_ctrl_halt(struct urndis_softc *sc);
187 struct urndis_softc *sc = device_get_softc(dev);
188 struct usb_ether *ue = &sc->sc_ue;
199 sc->sc_ue.ue_udev = uaa->device;
200 sc->sc_ifaceno_ctl = uaa->info.bIfaceNum;
213 mtx_init(&sc->sc_mtx, device_get_nameunit(dev), NULL, MTX_RECURSE);
224 iface_index, sc->sc_xfer, urndis_config,
225 URNDIS_N_TRANSFER, sc, &sc->sc_mtx);
235 URNDIS_LOCK(sc);
237 usbd_transfer_start(sc->sc_xfer[URNDIS_INTR_RX]);
238 URNDIS_UNLOCK(sc);
241 URNDIS_LOCK(sc);
242 error = urndis_ctrl_init(sc);
243 URNDIS_UNLOCK(sc);
251 URNDIS_LOCK(sc);
252 error = urndis_ctrl_query(sc, OID_802_3_PERMANENT_ADDRESS,
255 URNDIS_UNLOCK(sc);
264 (void)memcpy_s(&sc->sc_ue.ue_eaddr, NETIF_MAX_HWADDR_LEN, buf, NETIF_MAX_HWADDR_LEN);
267 sc->sc_filter = RNDIS_PACKET_TYPE_BROADCAST |
269 msg.ibuf.filter = htole32(sc->sc_filter);
270 URNDIS_LOCK(sc);
271 error = urndis_ctrl_set(sc, OID_GEN_CURRENT_PACKET_FILTER,
273 URNDIS_UNLOCK(sc);
279 ue->ue_sc = sc;
282 ue->ue_mtx = &sc->sc_mtx;
312 struct urndis_softc *sc = device_get_softc(dev);
313 struct usb_ether *ue = &sc->sc_ue;
316 usbd_transfer_unsetup(sc->sc_xfer, URNDIS_N_TRANSFER);
320 URNDIS_LOCK(sc);
321 (void)urndis_ctrl_halt(sc);
322 URNDIS_UNLOCK(sc);
324 mtx_destroy(&sc->sc_mtx);
332 struct urndis_softc *sc = uether_getsc(ue);
337 usbd_transfer_start(sc->sc_xfer[URNDIS_BULK_TX]);
338 usbd_transfer_start(sc->sc_xfer[URNDIS_BULK_RX]);
344 struct urndis_softc *sc = uether_getsc(ue);
348 URNDIS_LOCK_ASSERT(sc, MA_OWNED);
353 usbd_xfer_set_stall(sc->sc_xfer[URNDIS_BULK_TX]);
362 struct urndis_softc *sc = uether_getsc(ue);
366 URNDIS_LOCK_ASSERT(sc, MA_OWNED);
373 usbd_transfer_stop(sc->sc_xfer[URNDIS_BULK_RX]);
374 usbd_transfer_stop(sc->sc_xfer[URNDIS_BULK_TX]);
404 urndis_ctrl_msg(struct urndis_softc *sc, uint8_t rt, uint8_t r,
415 return (usbd_do_request_flags(sc->sc_ue.ue_udev,
416 &sc->sc_mtx, &req, buf, (rt & UT_READ) ?
421 urndis_ctrl_send(struct urndis_softc *sc, void *buf, uint16_t len)
425 err = urndis_ctrl_msg(sc, UT_WRITE_CLASS_INTERFACE,
426 UCDC_SEND_ENCAPSULATED_COMMAND, sc->sc_ifaceno_ctl, 0, buf, len);
434 urndis_ctrl_recv(struct urndis_softc *sc)
439 err = urndis_ctrl_msg(sc, UT_READ_CLASS_INTERFACE,
440 UCDC_GET_ENCAPSULATED_RESPONSE, sc->sc_ifaceno_ctl, 0,
441 sc->sc_response_buf, RNDIS_RESPONSE_LEN);
446 hdr = (struct urndis_comp_hdr *)sc->sc_response_buf;
460 urndis_ctrl_handle(struct urndis_softc *sc, struct urndis_comp_hdr *hdr,
473 rval = urndis_ctrl_handle_init(sc, hdr);
477 rval = urndis_ctrl_handle_query(sc, hdr, buf, bufsz);
481 rval = urndis_ctrl_handle_reset(sc, hdr);
491 device_printf(sc->sc_ue.ue_dev,
501 urndis_ctrl_handle_init(struct urndis_softc *sc,
538 sc->sc_lim_pktsz = le32toh(msg->rm_pktmaxsz);
544 urndis_ctrl_handle_query(struct urndis_softc *sc,
592 urndis_ctrl_handle_reset(struct urndis_softc *sc,
618 msg_filter.filter = htole32(sc->sc_filter);
620 rval = urndis_ctrl_set(sc, OID_GEN_CURRENT_PACKET_FILTER,
632 urndis_ctrl_init(struct urndis_softc *sc)
654 rval = urndis_ctrl_send(sc, &msg, sizeof(msg));
660 if ((hdr = urndis_ctrl_recv(sc)) == NULL) {
664 rval = urndis_ctrl_handle(sc, hdr, NULL, NULL);
670 urndis_ctrl_halt(struct urndis_softc *sc)
684 rval = urndis_ctrl_send(sc, &msg, sizeof(msg));
697 urndis_ctrl_query(struct urndis_softc *sc, uint32_t oid,
728 rval = urndis_ctrl_send(sc, msg, len);
734 if ((hdr = urndis_ctrl_recv(sc)) == NULL) {
738 rval = urndis_ctrl_handle(sc, hdr, rbuf, rbufsz);
744 urndis_ctrl_set(struct urndis_softc *sc, uint32_t oid,
774 rval = urndis_ctrl_send(sc, msg, len);
780 if ((hdr = urndis_ctrl_recv(sc)) == NULL) {
784 rval = urndis_ctrl_handle(sc, hdr, NULL, NULL);
796 struct urndis_softc *sc = usbd_xfer_softc(xfer);
798 struct usb_ether *ue = &sc->sc_ue;
838 struct urndis_softc *sc = usbd_xfer_softc(xfer);
924 uether_rxflush(&sc->sc_ue); /* must be last */
944 struct urndis_softc *sc = usbd_xfer_softc(xfer);
945 struct usb_ether *ue = &sc->sc_ue;