Lines Matching refs:ue

60 static SYSCTL_NODE(_net, OID_AUTO, ue, CTLFLAG_RD, 0,
91 uether_pause(struct usb_ether *ue, unsigned int _ticks)
93 if (usb_proc_is_gone(&ue->ue_tq)) {
97 usb_pause_mtx(ue->ue_mtx, _ticks);
102 ue_queue_command(struct usb_ether *ue,
108 UE_LOCK_ASSERT(ue, MA_OWNED);
110 if (usb_proc_is_gone(&ue->ue_tq)) {
119 usb_proc_msignal(&ue->ue_tq, t0, t1);
123 task->ue = ue;
129 usb_proc_mwait(&ue->ue_tq, t0, t1);
133 uether_getifp(struct usb_ether *ue)
135 return (ue->ue_ifp);
139 uether_getmii(struct usb_ether *ue)
141 return (device_get_softc(ue->ue_miibus));
145 uether_getsc(struct usb_ether *ue)
147 return (ue->ue_sc);
153 struct usb_ether *ue = arg1;
156 name = device_get_nameunit(ue->ue_dev);
161 uether_ifattach(struct usb_ether *ue)
166 if ((ue->ue_dev == NULL) ||
167 (ue->ue_udev == NULL) ||
168 (ue->ue_mtx == NULL) ||
169 (ue->ue_methods == NULL))
172 error = usb_proc_create(&ue->ue_tq, ue->ue_mtx,
173 device_get_nameunit(ue->ue_dev), USB_PRI_MED);
175 device_printf(ue->ue_dev, "could not setup taskqueue\n");
180 UE_LOCK(ue);
181 ue_queue_command(ue, ue_attach_post_task,
182 &ue->ue_sync_task[0].hdr,
183 &ue->ue_sync_task[1].hdr);
184 UE_UNLOCK(ue);
195 struct usb_ether *ue = task->ue;
201 ue->ue_methods->ue_attach_post(ue);
203 UE_UNLOCK(ue);
205 ue->ue_unit = alloc_unr(ueunit);
206 usb_callout_init_mtx(&ue->ue_watchdog, ue->ue_mtx, 0);
207 sysctl_ctx_init(&ue->ue_sysctl_ctx);
213 device_printf(ue->ue_dev, "could not allocate ifnet\n");
217 ifp->if_softc = ue;
218 if_initname(ifp, "ue", ue->ue_unit);
219 if (ue->ue_methods->ue_attach_post_sub != NULL) {
220 ue->ue_ifp = ifp;
221 error = ue->ue_methods->ue_attach_post_sub(ue);
225 if (ue->ue_methods->ue_ioctl != NULL)
226 ifp->if_ioctl = ue->ue_methods->ue_ioctl;
234 ue->ue_ifp = ifp;
236 if (ue->ue_methods->ue_mii_upd != NULL &&
237 ue->ue_methods->ue_mii_sts != NULL) {
240 error = mii_attach(ue->ue_dev, &ue->ue_miibus, ifp,
241 ue_ifmedia_upd, ue->ue_methods->ue_mii_sts,
248 device_printf(ue->ue_dev, "attaching PHYs failed\n");
252 if_printf(ifp, "<USB Ethernet> on %s\n", device_get_nameunit(ue->ue_dev));
253 ether_ifattach(ifp, ue->ue_eaddr);
260 snprintf(num, sizeof(num), "%u", ue->ue_unit);
261 ue->ue_sysctl_oid = SYSCTL_ADD_NODE(&ue->ue_sysctl_ctx,
262 &SYSCTL_NODE_CHILDREN(_net, ue),
264 SYSCTL_ADD_PROC(&ue->ue_sysctl_ctx,
265 SYSCTL_CHILDREN(ue->ue_sysctl_oid), OID_AUTO,
266 "%parent", CTLTYPE_STRING | CTLFLAG_RD, ue, 0,
269 UE_LOCK(ue);
274 free_unr(ueunit, ue->ue_unit);
275 if (ue->ue_ifp != NULL) {
276 if_free(ue->ue_ifp);
277 ue->ue_ifp = NULL;
279 UE_LOCK(ue);
284 uether_ifdetach(struct usb_ether *ue)
289 usb_proc_drain(&ue->ue_tq);
292 ifp = ue->ue_ifp;
297 UE_LOCK(ue);
299 UE_UNLOCK(ue);
302 usb_callout_drain(&ue->ue_watchdog);
305 if (ue->ue_miibus != NULL) {
307 device_delete_child(ue->ue_dev, ue->ue_miibus);
318 sysctl_ctx_free(&ue->ue_sysctl_ctx);
321 free_unr(ueunit, ue->ue_unit);
325 usb_proc_free(&ue->ue_tq);
329 uether_is_gone(struct usb_ether *ue)
331 return (usb_proc_is_gone(&ue->ue_tq));
344 struct usb_ether *ue = arg;
346 UE_LOCK(ue);
347 ue_queue_command(ue, ue_start_task,
348 &ue->ue_sync_task[0].hdr,
349 &ue->ue_sync_task[1].hdr);
350 UE_UNLOCK(ue);
358 struct usb_ether *ue = task->ue;
359 struct ifnet *ifp = ue->ue_ifp;
361 UE_LOCK_ASSERT(ue, MA_OWNED);
363 ue->ue_methods->ue_init(ue);
368 if (ue->ue_methods->ue_tick != NULL)
369 usb_callout_reset(&ue->ue_watchdog, hz, ue_watchdog, ue);
377 struct usb_ether *ue = task->ue;
379 UE_LOCK_ASSERT(ue, MA_OWNED);
381 usb_callout_stop(&ue->ue_watchdog);
383 ue->ue_methods->ue_stop(ue);
396 struct usb_ether *ue = ifp->if_softc;
401 UE_LOCK(ue);
402 ue->ue_methods->ue_start(ue);
403 UE_UNLOCK(ue);
411 struct usb_ether *ue = task->ue;
413 ue->ue_methods->ue_setpromisc(ue);
421 struct usb_ether *ue = task->ue;
423 ue->ue_methods->ue_setmulti(ue);
436 struct usb_ether *ue = ifp->if_softc;
439 UE_LOCK(ue);
440 ue_queue_command(ue, ue_ifmedia_task,
441 &ue->ue_media_task[0].hdr,
442 &ue->ue_media_task[1].hdr);
443 UE_UNLOCK(ue);
453 struct usb_ether *ue = task->ue;
454 struct ifnet *ifp = ue->ue_ifp;
456 ue->ue_methods->ue_mii_upd(ifp);
462 struct usb_ether *ue = arg;
463 struct ifnet *ifp = ue->ue_ifp;
468 ue_queue_command(ue, ue_tick_task,
469 &ue->ue_tick_task[0].hdr,
470 &ue->ue_tick_task[1].hdr);
472 usb_callout_reset(&ue->ue_watchdog, hz, ue_watchdog, ue);
480 struct usb_ether *ue = task->ue;
481 struct ifnet *ifp = ue->ue_ifp;
486 ue->ue_methods->ue_tick(ue);
492 struct usb_ether *ue = ifp->if_softc;
499 UE_LOCK(ue);
502 ue_queue_command(ue, ue_promisc_task,
503 &ue->ue_promisc_task[0].hdr,
504 &ue->ue_promisc_task[1].hdr);
506 ue_queue_command(ue, ue_start_task,
507 &ue->ue_sync_task[0].hdr,
508 &ue->ue_sync_task[1].hdr);
510 ue_queue_command(ue, ue_stop_task,
511 &ue->ue_sync_task[0].hdr,
512 &ue->ue_sync_task[1].hdr);
514 UE_UNLOCK(ue);
518 UE_LOCK(ue);
519 ue_queue_command(ue, ue_setmulti_task,
520 &ue->ue_multi_task[0].hdr,
521 &ue->ue_multi_task[1].hdr);
522 UE_UNLOCK(ue);
526 if (ue->ue_miibus != NULL) {
527 mii = device_get_softc(ue->ue_miibus);
575 uether_rxmbuf(struct usb_ether *ue, struct mbuf *m,
578 struct ifnet *ifp = ue->ue_ifp;
580 UE_LOCK_ASSERT(ue, MA_OWNED);
588 _IF_ENQUEUE(&ue->ue_rxq, m);
593 uether_rxbuf(struct usb_ether *ue, struct usb_page_cache *pc,
596 struct ifnet *ifp = ue->ue_ifp;
599 UE_LOCK_ASSERT(ue, MA_OWNED);
618 _IF_ENQUEUE(&ue->ue_rxq, m);
623 uether_rxflush(struct usb_ether *ue)
625 struct ifnet *ifp = ue->ue_ifp;
628 UE_LOCK_ASSERT(ue, MA_OWNED);
631 _IF_DEQUEUE(&ue->ue_rxq, m);
638 UE_UNLOCK(ue);
640 UE_LOCK(ue);