Lines Matching defs:ue

59 static SYSCTL_NODE(_net, OID_AUTO, ue, CTLFLAG_RD | CTLFLAG_MPSAFE, 0,
90 uether_pause(struct usb_ether *ue, unsigned _ticks)
92 if (usb_proc_is_gone(&ue->ue_tq)) {
96 usb_pause_mtx(ue->ue_mtx, _ticks);
101 ue_queue_command(struct usb_ether *ue,
107 UE_LOCK_ASSERT(ue, MA_OWNED);
109 if (usb_proc_is_gone(&ue->ue_tq)) {
118 usb_proc_msignal(&ue->ue_tq, t0, t1);
122 task->ue = ue;
128 usb_proc_mwait(&ue->ue_tq, t0, t1);
132 uether_getifp(struct usb_ether *ue)
134 return (ue->ue_ifp);
138 uether_getmii(struct usb_ether *ue)
140 return (device_get_softc(ue->ue_miibus));
144 uether_getsc(struct usb_ether *ue)
146 return (ue->ue_sc);
152 struct usb_ether *ue = arg1;
155 name = device_get_nameunit(ue->ue_dev);
160 uether_ifattach(struct usb_ether *ue)
165 if ((ue->ue_dev == NULL) ||
166 (ue->ue_udev == NULL) ||
167 (ue->ue_mtx == NULL) ||
168 (ue->ue_methods == NULL))
171 error = usb_proc_create(&ue->ue_tq, ue->ue_mtx,
172 device_get_nameunit(ue->ue_dev), USB_PRI_MED);
174 device_printf(ue->ue_dev, "could not setup taskqueue\n");
179 UE_LOCK(ue);
180 ue_queue_command(ue, ue_attach_post_task,
181 &ue->ue_sync_task[0].hdr,
182 &ue->ue_sync_task[1].hdr);
183 UE_UNLOCK(ue);
190 uether_ifattach_wait(struct usb_ether *ue)
193 UE_LOCK(ue);
194 usb_proc_mwait(&ue->ue_tq,
195 &ue->ue_sync_task[0].hdr,
196 &ue->ue_sync_task[1].hdr);
197 UE_UNLOCK(ue);
205 struct usb_ether *ue = task->ue;
211 ue->ue_methods->ue_attach_post(ue);
213 UE_UNLOCK(ue);
215 ue->ue_unit = alloc_unr(ueunit);
216 usb_callout_init_mtx(&ue->ue_watchdog, ue->ue_mtx, 0);
217 sysctl_ctx_init(&ue->ue_sysctl_ctx);
218 mbufq_init(&ue->ue_rxq, 0 /* unlimited length */);
223 if_setsoftc(ifp, ue);
224 if_initname(ifp, "ue", ue->ue_unit);
225 if (ue->ue_methods->ue_attach_post_sub != NULL) {
226 ue->ue_ifp = ifp;
227 error = ue->ue_methods->ue_attach_post_sub(ue);
230 if (ue->ue_methods->ue_ioctl != NULL)
231 if_setioctlfn(ifp, ue->ue_methods->ue_ioctl);
238 ue->ue_ifp = ifp;
240 if (ue->ue_methods->ue_mii_upd != NULL &&
241 ue->ue_methods->ue_mii_sts != NULL) {
243 error = mii_attach(ue->ue_dev, &ue->ue_miibus, ifp,
244 ue_ifmedia_upd, ue->ue_methods->ue_mii_sts,
251 device_printf(ue->ue_dev, "attaching PHYs failed\n");
255 if_printf(ifp, "<USB Ethernet> on %s\n", device_get_nameunit(ue->ue_dev));
256 ether_ifattach(ifp, ue->ue_eaddr);
263 snprintf(num, sizeof(num), "%u", ue->ue_unit);
264 ue->ue_sysctl_oid = SYSCTL_ADD_NODE(&ue->ue_sysctl_ctx,
265 &SYSCTL_NODE_CHILDREN(_net, ue),
267 SYSCTL_ADD_PROC(&ue->ue_sysctl_ctx,
268 SYSCTL_CHILDREN(ue->ue_sysctl_oid), OID_AUTO, "%parent",
269 CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, ue, 0,
272 UE_LOCK(ue);
279 mbufq_drain(&ue->ue_rxq);
282 free_unr(ueunit, ue->ue_unit);
283 if (ue->ue_ifp != NULL) {
284 if_free(ue->ue_ifp);
285 ue->ue_ifp = NULL;
287 UE_LOCK(ue);
292 uether_ifdetach(struct usb_ether *ue)
297 usb_proc_drain(&ue->ue_tq);
300 ifp = ue->ue_ifp;
304 UE_LOCK(ue);
306 UE_UNLOCK(ue);
309 usb_callout_drain(&ue->ue_watchdog);
319 bus_generic_detach(ue->ue_dev);
326 sysctl_ctx_free(&ue->ue_sysctl_ctx);
329 mbufq_drain(&ue->ue_rxq);
332 free_unr(ueunit, ue->ue_unit);
336 usb_proc_free(&ue->ue_tq);
340 uether_is_gone(struct usb_ether *ue)
342 return (usb_proc_is_gone(&ue->ue_tq));
355 struct usb_ether *ue = arg;
357 UE_LOCK(ue);
358 ue_queue_command(ue, ue_start_task,
359 &ue->ue_sync_task[0].hdr,
360 &ue->ue_sync_task[1].hdr);
361 UE_UNLOCK(ue);
369 struct usb_ether *ue = task->ue;
370 if_t ifp = ue->ue_ifp;
372 UE_LOCK_ASSERT(ue, MA_OWNED);
374 ue->ue_methods->ue_init(ue);
379 if (ue->ue_methods->ue_tick != NULL)
380 usb_callout_reset(&ue->ue_watchdog, hz, ue_watchdog, ue);
388 struct usb_ether *ue = task->ue;
390 UE_LOCK_ASSERT(ue, MA_OWNED);
392 usb_callout_stop(&ue->ue_watchdog);
394 ue->ue_methods->ue_stop(ue);
407 struct usb_ether *ue = if_getsoftc(ifp);
412 UE_LOCK(ue);
413 ue->ue_methods->ue_start(ue);
414 UE_UNLOCK(ue);
422 struct usb_ether *ue = task->ue;
424 ue->ue_methods->ue_setpromisc(ue);
432 struct usb_ether *ue = task->ue;
434 ue->ue_methods->ue_setmulti(ue);
447 struct usb_ether *ue = if_getsoftc(ifp);
450 UE_LOCK(ue);
451 ue_queue_command(ue, ue_ifmedia_task,
452 &ue->ue_media_task[0].hdr,
453 &ue->ue_media_task[1].hdr);
454 UE_UNLOCK(ue);
464 struct usb_ether *ue = task->ue;
465 if_t ifp = ue->ue_ifp;
467 ue->ue_methods->ue_mii_upd(ifp);
473 struct usb_ether *ue = arg;
474 if_t ifp = ue->ue_ifp;
479 ue_queue_command(ue, ue_tick_task,
480 &ue->ue_tick_task[0].hdr,
481 &ue->ue_tick_task[1].hdr);
483 usb_callout_reset(&ue->ue_watchdog, hz, ue_watchdog, ue);
491 struct usb_ether *ue = task->ue;
492 if_t ifp = ue->ue_ifp;
497 ue->ue_methods->ue_tick(ue);
503 struct usb_ether *ue = if_getsoftc(ifp);
510 UE_LOCK(ue);
513 ue_queue_command(ue, ue_promisc_task,
514 &ue->ue_promisc_task[0].hdr,
515 &ue->ue_promisc_task[1].hdr);
517 ue_queue_command(ue, ue_start_task,
518 &ue->ue_sync_task[0].hdr,
519 &ue->ue_sync_task[1].hdr);
521 ue_queue_command(ue, ue_stop_task,
522 &ue->ue_sync_task[0].hdr,
523 &ue->ue_sync_task[1].hdr);
525 UE_UNLOCK(ue);
529 UE_LOCK(ue);
530 ue_queue_command(ue, ue_setmulti_task,
531 &ue->ue_multi_task[0].hdr,
532 &ue->ue_multi_task[1].hdr);
533 UE_UNLOCK(ue);
537 if (ue->ue_miibus != NULL) {
538 mii = device_get_softc(ue->ue_miibus);
586 uether_rxmbuf(struct usb_ether *ue, struct mbuf *m,
589 if_t ifp = ue->ue_ifp;
591 UE_LOCK_ASSERT(ue, MA_OWNED);
599 (void)mbufq_enqueue(&ue->ue_rxq, m);
604 uether_rxbuf(struct usb_ether *ue, struct usb_page_cache *pc,
607 if_t ifp = ue->ue_ifp;
610 UE_LOCK_ASSERT(ue, MA_OWNED);
629 (void)mbufq_enqueue(&ue->ue_rxq, m);
634 uether_rxflush(struct usb_ether *ue)
636 if_t ifp = ue->ue_ifp;
640 UE_LOCK_ASSERT(ue, MA_OWNED);
642 n = mbufq_flush(&ue->ue_rxq);
643 UE_UNLOCK(ue);
651 UE_LOCK(ue);