Lines Matching +full:dp +full:- +full:usb
3 /*-
6 * Copyright (c) 2015-2016 Andriy Voskoboinyk <avos@FreeBSD.org>
43 #include <dev/usb/usb.h>
44 #include <dev/usb/usbdi.h>
50 #include <dev/rtwn/usb/rtwn_usb_var.h>
52 #include <dev/rtwn/usb/rtwn_usb_attach.h>
53 #include <dev/rtwn/usb/rtwn_usb_ep.h>
54 #include <dev/rtwn/usb/rtwn_usb_reg.h>
55 #include <dev/rtwn/usb/rtwn_usb_tx.h>
93 if (uaa->usb_mode != USB_MODE_HOST) in rtwn_usb_match()
95 if (uaa->info.bConfigIndex != RTWN_CONFIG_INDEX) in rtwn_usb_match()
97 if (uaa->info.bIfaceIndex != RTWN_IFACE_INDEX) in rtwn_usb_match()
110 struct rtwn_data *dp = &data[i]; in rtwn_usb_alloc_list() local
111 dp->m = NULL; in rtwn_usb_alloc_list()
112 dp->buf = malloc(maxsz, M_USBDEV, M_NOWAIT); in rtwn_usb_alloc_list()
113 if (dp->buf == NULL) { in rtwn_usb_alloc_list()
114 device_printf(sc->sc_dev, in rtwn_usb_alloc_list()
119 dp->ni = NULL; in rtwn_usb_alloc_list()
134 error = rtwn_usb_alloc_list(sc, uc->uc_rx, RTWN_USB_RX_LIST_COUNT, in rtwn_usb_alloc_rx_list()
135 uc->uc_rx_buf_size * RTWN_USB_RXBUFSZ_UNIT); in rtwn_usb_alloc_rx_list()
139 STAILQ_INIT(&uc->uc_rx_active); in rtwn_usb_alloc_rx_list()
140 STAILQ_INIT(&uc->uc_rx_inactive); in rtwn_usb_alloc_rx_list()
143 STAILQ_INSERT_HEAD(&uc->uc_rx_inactive, &uc->uc_rx[i], next); in rtwn_usb_alloc_rx_list()
154 error = rtwn_usb_alloc_list(sc, uc->uc_tx, RTWN_USB_TX_LIST_COUNT, in rtwn_usb_alloc_tx_list()
160 STAILQ_INIT(&uc->uc_tx_active[i]); in rtwn_usb_alloc_tx_list()
161 STAILQ_INIT(&uc->uc_tx_pending[i]); in rtwn_usb_alloc_tx_list()
164 STAILQ_INIT(&uc->uc_tx_inactive); in rtwn_usb_alloc_tx_list()
166 STAILQ_INSERT_HEAD(&uc->uc_tx_inactive, &uc->uc_tx[i], next); in rtwn_usb_alloc_tx_list()
177 struct rtwn_data *dp = &data[i]; in rtwn_usb_free_list() local
179 if (dp->buf != NULL) { in rtwn_usb_free_list()
180 free(dp->buf, M_USBDEV); in rtwn_usb_free_list()
181 dp->buf = NULL; in rtwn_usb_free_list()
183 if (dp->ni != NULL) { in rtwn_usb_free_list()
184 ieee80211_free_node(dp->ni); in rtwn_usb_free_list()
185 dp->ni = NULL; in rtwn_usb_free_list()
187 if (dp->m != NULL) { in rtwn_usb_free_list()
188 m_freem(dp->m); in rtwn_usb_free_list()
189 dp->m = NULL; in rtwn_usb_free_list()
199 rtwn_usb_free_list(sc, uc->uc_rx, RTWN_USB_RX_LIST_COUNT); in rtwn_usb_free_rx_list()
201 uc->uc_rx_stat_len = 0; in rtwn_usb_free_rx_list()
202 uc->uc_rx_off = 0; in rtwn_usb_free_rx_list()
204 STAILQ_INIT(&uc->uc_rx_active); in rtwn_usb_free_rx_list()
205 STAILQ_INIT(&uc->uc_rx_inactive); in rtwn_usb_free_rx_list()
214 rtwn_usb_free_list(sc, uc->uc_tx, RTWN_USB_TX_LIST_COUNT); in rtwn_usb_free_tx_list()
217 STAILQ_INIT(&uc->uc_tx_active[i]); in rtwn_usb_free_tx_list()
218 STAILQ_INIT(&uc->uc_tx_pending[i]); in rtwn_usb_free_tx_list()
220 STAILQ_INIT(&uc->uc_tx_inactive); in rtwn_usb_free_tx_list()
232 rtwn_usb_reset_tx_list(uc, &uc->uc_tx_active[i], vap); in rtwn_usb_reset_lists()
233 rtwn_usb_reset_tx_list(uc, &uc->uc_tx_pending[i], vap); in rtwn_usb_reset_lists()
237 sc->qfullmsk = 0; in rtwn_usb_reset_lists()
246 struct rtwn_data *dp, *tmp; in rtwn_usb_reset_tx_list() local
249 id = (uvp != NULL ? uvp->id : RTWN_VAP_ID_INVALID); in rtwn_usb_reset_tx_list()
251 STAILQ_FOREACH_SAFE(dp, head, next, tmp) { in rtwn_usb_reset_tx_list()
252 if (vap == NULL || (dp->ni == NULL && in rtwn_usb_reset_tx_list()
253 (dp->id == id || id == RTWN_VAP_ID_INVALID)) || in rtwn_usb_reset_tx_list()
254 (dp->ni != NULL && dp->ni->ni_vap == vap)) { in rtwn_usb_reset_tx_list()
255 if (dp->ni != NULL) { in rtwn_usb_reset_tx_list()
256 ieee80211_free_node(dp->ni); in rtwn_usb_reset_tx_list()
257 dp->ni = NULL; in rtwn_usb_reset_tx_list()
260 if (dp->m != NULL) { in rtwn_usb_reset_tx_list()
261 m_freem(dp->m); in rtwn_usb_reset_tx_list()
262 dp->m = NULL; in rtwn_usb_reset_tx_list()
265 STAILQ_REMOVE(head, dp, rtwn_data, next); in rtwn_usb_reset_tx_list()
266 STAILQ_INSERT_TAIL(&uc->uc_tx_inactive, dp, next); in rtwn_usb_reset_tx_list()
277 struct rtwn_data *dp = &uc->uc_rx[i]; in rtwn_usb_reset_rx_list() local
279 if (dp->m != NULL) { in rtwn_usb_reset_rx_list()
280 m_freem(dp->m); in rtwn_usb_reset_rx_list()
281 dp->m = NULL; in rtwn_usb_reset_rx_list()
284 uc->uc_rx_stat_len = 0; in rtwn_usb_reset_rx_list()
285 uc->uc_rx_off = 0; in rtwn_usb_reset_rx_list()
293 usbd_transfer_start(uc->uc_xfer[RTWN_BULK_RX]); in rtwn_usb_start_xfers()
307 usbd_transfer_drain(uc->uc_xfer[i]); in rtwn_usb_abort_xfers()
335 sc->sc_write_1 = rtwn_usb_write_1; in rtwn_usb_attach_methods()
336 sc->sc_write_2 = rtwn_usb_write_2; in rtwn_usb_attach_methods()
337 sc->sc_write_4 = rtwn_usb_write_4; in rtwn_usb_attach_methods()
338 sc->sc_read_1 = rtwn_usb_read_1; in rtwn_usb_attach_methods()
339 sc->sc_read_2 = rtwn_usb_read_2; in rtwn_usb_attach_methods()
340 sc->sc_read_4 = rtwn_usb_read_4; in rtwn_usb_attach_methods()
341 sc->sc_delay = rtwn_usb_delay; in rtwn_usb_attach_methods()
342 sc->sc_tx_start = rtwn_usb_tx_start; in rtwn_usb_attach_methods()
343 sc->sc_start_xfers = rtwn_usb_start_xfers; in rtwn_usb_attach_methods()
344 sc->sc_reset_lists = rtwn_usb_reset_lists; in rtwn_usb_attach_methods()
345 sc->sc_abort_xfers = rtwn_usb_abort_xfers; in rtwn_usb_attach_methods()
346 sc->sc_fw_write_block = rtwn_usb_fw_write_block; in rtwn_usb_attach_methods()
347 sc->sc_get_qmap = rtwn_usb_get_qmap; in rtwn_usb_attach_methods()
348 sc->sc_set_desc_addr = rtwn_nop_softc; in rtwn_usb_attach_methods()
349 sc->sc_drop_incorrect_tx = rtwn_usb_drop_incorrect_tx; in rtwn_usb_attach_methods()
350 sc->sc_beacon_update_begin = rtwn_nop_softc_vap; in rtwn_usb_attach_methods()
351 sc->sc_beacon_update_end = rtwn_nop_softc_vap; in rtwn_usb_attach_methods()
352 sc->sc_beacon_unload = rtwn_nop_softc_int; in rtwn_usb_attach_methods()
354 sc->bcn_check_interval = 100; in rtwn_usb_attach_methods()
361 struct sysctl_ctx_list *ctx = device_get_sysctl_ctx(sc->sc_dev); in rtwn_usb_sysctlattach()
362 struct sysctl_oid *tree = device_get_sysctl_tree(sc->sc_dev); in rtwn_usb_sysctlattach()
367 "Rx buffer size, 512-byte units [%d...%d]", in rtwn_usb_sysctlattach()
372 uc->uc_rx_buf_size = RTWN_USB_RXBUFSZ_DEF; in rtwn_usb_sysctlattach()
374 "rx_buf_size", CTLFLAG_RDTUN, &uc->uc_rx_buf_size, in rtwn_usb_sysctlattach()
375 uc->uc_rx_buf_size, str); in rtwn_usb_sysctlattach()
376 if (uc->uc_rx_buf_size < RTWN_USB_RXBUFSZ_MIN) in rtwn_usb_sysctlattach()
377 uc->uc_rx_buf_size = RTWN_USB_RXBUFSZ_MIN; in rtwn_usb_sysctlattach()
378 if (uc->uc_rx_buf_size > RTWN_USB_RXBUFSZ_MAX) in rtwn_usb_sysctlattach()
379 uc->uc_rx_buf_size = RTWN_USB_RXBUFSZ_MAX; in rtwn_usb_sysctlattach()
387 struct rtwn_softc *sc = &uc->uc_sc; in rtwn_usb_attach()
388 struct ieee80211com *ic = &sc->sc_ic; in rtwn_usb_attach()
392 uc->uc_udev = uaa->device; in rtwn_usb_attach()
393 sc->sc_dev = self; in rtwn_usb_attach()
394 ic->ic_name = device_get_nameunit(self); in rtwn_usb_attach()
399 mtx_init(&sc->sc_mtx, ic->ic_name, MTX_NETWORK_LOCK, MTX_DEF); in rtwn_usb_attach()
433 struct rtwn_softc *sc = &uc->uc_sc; in rtwn_usb_detach()
442 /* Detach all USB transfers. */ in rtwn_usb_detach()
443 usbd_transfer_unsetup(uc->uc_xfer, RTWN_BULK_EP_COUNT); in rtwn_usb_detach()
446 mtx_destroy(&sc->sc_mtx); in rtwn_usb_detach()
456 rtwn_suspend(&uc->uc_sc); in rtwn_usb_suspend()
466 rtwn_resume(&uc->uc_sc); in rtwn_usb_resume()
490 MODULE_DEPEND(rtwn_usb, usb, 1, 1, 1);