Lines Matching refs:dev
116 #define DBG(dev, fmt, args...) \ argument
117 xprintk(dev , KERN_DEBUG , fmt , ## args)
119 #define DBG(dev, fmt, args...) \ argument
126 #define VDBG(dev, fmt, args...) \ argument
130 #define ERROR(dev, fmt, args...) \ argument
131 xprintk(dev , KERN_ERR , fmt , ## args)
132 #define INFO(dev, fmt, args...) \ argument
133 xprintk(dev , KERN_INFO , fmt , ## args)
141 struct eth_dev *dev = netdev_priv(net); in ueth_change_mtu() local
146 spin_lock_irqsave(&dev->lock, flags); in ueth_change_mtu()
147 if (dev->port_usb) in ueth_change_mtu()
153 spin_unlock_irqrestore(&dev->lock, flags); in ueth_change_mtu()
160 struct eth_dev *dev = netdev_priv(net); in eth_get_drvinfo() local
164 strlcpy(p->fw_version, dev->gadget->name, sizeof(p->fw_version)); in eth_get_drvinfo()
165 strlcpy(p->bus_info, dev_name(&dev->gadget->dev), sizeof(p->bus_info)); in eth_get_drvinfo()
179 static void defer_kevent(struct eth_dev *dev, int flag) in defer_kevent() argument
181 if (test_and_set_bit(flag, &dev->todo)) in defer_kevent()
183 if (!schedule_work(&dev->work)) in defer_kevent()
184 ERROR(dev, "kevent %d may have been dropped\n", flag); in defer_kevent()
186 DBG(dev, "kevent %d scheduled\n", flag); in defer_kevent()
192 rx_submit(struct eth_dev *dev, struct usb_request *req, gfp_t gfp_flags) in rx_submit() argument
200 spin_lock_irqsave(&dev->lock, flags); in rx_submit()
201 if (dev->port_usb) in rx_submit()
202 out = dev->port_usb->out_ep; in rx_submit()
205 spin_unlock_irqrestore(&dev->lock, flags); in rx_submit()
223 size += sizeof(struct ethhdr) + dev->net->mtu + RX_EXTRA; in rx_submit()
224 size += dev->port_usb->header_len; in rx_submit()
228 if (dev->port_usb->is_fixed) in rx_submit()
229 size = max_t(size_t, size, dev->port_usb->fixed_out_len); in rx_submit()
233 DBG(dev, "no rx skb\n"); in rx_submit()
251 defer_kevent(dev, WORK_RX_MEMORY); in rx_submit()
253 DBG(dev, "rx submit --> %d\n", retval); in rx_submit()
256 spin_lock_irqsave(&dev->req_lock, flags); in rx_submit()
257 list_add(&req->list, &dev->rx_reqs); in rx_submit()
258 spin_unlock_irqrestore(&dev->req_lock, flags); in rx_submit()
266 struct eth_dev *dev = ep->driver_data; in rx_complete() local
275 if (dev->unwrap) { in rx_complete()
278 spin_lock_irqsave(&dev->lock, flags); in rx_complete()
279 if (dev->port_usb) { in rx_complete()
280 status = dev->unwrap(dev->port_usb, in rx_complete()
282 &dev->rx_frames); in rx_complete()
287 spin_unlock_irqrestore(&dev->lock, flags); in rx_complete()
289 skb_queue_tail(&dev->rx_frames, skb); in rx_complete()
293 skb2 = skb_dequeue(&dev->rx_frames); in rx_complete()
298 dev->net->stats.rx_errors++; in rx_complete()
299 dev->net->stats.rx_length_errors++; in rx_complete()
300 DBG(dev, "rx length %d\n", skb2->len); in rx_complete()
304 skb2->protocol = eth_type_trans(skb2, dev->net); in rx_complete()
305 dev->net->stats.rx_packets++; in rx_complete()
306 dev->net->stats.rx_bytes += skb2->len; in rx_complete()
313 skb2 = skb_dequeue(&dev->rx_frames); in rx_complete()
320 VDBG(dev, "rx shutdown, code %d\n", status); in rx_complete()
325 DBG(dev, "rx %s reset\n", ep->name); in rx_complete()
326 defer_kevent(dev, WORK_RX_MEMORY); in rx_complete()
333 dev->net->stats.rx_over_errors++; in rx_complete()
337 dev->net->stats.rx_errors++; in rx_complete()
338 DBG(dev, "rx status %d\n", status); in rx_complete()
344 if (!netif_running(dev->net)) { in rx_complete()
346 spin_lock(&dev->req_lock); in rx_complete()
347 list_add(&req->list, &dev->rx_reqs); in rx_complete()
348 spin_unlock(&dev->req_lock); in rx_complete()
352 rx_submit(dev, req, GFP_ATOMIC); in rx_complete()
394 static int alloc_requests(struct eth_dev *dev, struct gether *link, unsigned n) in alloc_requests() argument
398 spin_lock(&dev->req_lock); in alloc_requests()
399 status = prealloc(&dev->tx_reqs, link->in_ep, n); in alloc_requests()
402 status = prealloc(&dev->rx_reqs, link->out_ep, n); in alloc_requests()
407 DBG(dev, "can't alloc requests\n"); in alloc_requests()
409 spin_unlock(&dev->req_lock); in alloc_requests()
413 static void rx_fill(struct eth_dev *dev, gfp_t gfp_flags) in rx_fill() argument
419 spin_lock_irqsave(&dev->req_lock, flags); in rx_fill()
420 while (!list_empty(&dev->rx_reqs)) { in rx_fill()
421 req = container_of(dev->rx_reqs.next, in rx_fill()
424 spin_unlock_irqrestore(&dev->req_lock, flags); in rx_fill()
426 if (rx_submit(dev, req, gfp_flags) < 0) { in rx_fill()
427 defer_kevent(dev, WORK_RX_MEMORY); in rx_fill()
431 spin_lock_irqsave(&dev->req_lock, flags); in rx_fill()
433 spin_unlock_irqrestore(&dev->req_lock, flags); in rx_fill()
438 struct eth_dev *dev = container_of(work, struct eth_dev, work); in eth_work() local
440 if (test_and_clear_bit(WORK_RX_MEMORY, &dev->todo)) { in eth_work()
441 if (netif_running(dev->net)) in eth_work()
442 rx_fill(dev, GFP_KERNEL); in eth_work()
445 if (dev->todo) in eth_work()
446 DBG(dev, "work done, flags = 0x%lx\n", dev->todo); in eth_work()
452 struct eth_dev *dev = ep->driver_data; in tx_complete() local
456 dev->net->stats.tx_errors++; in tx_complete()
457 VDBG(dev, "tx err %d\n", req->status); in tx_complete()
463 dev->net->stats.tx_bytes += skb->len; in tx_complete()
465 dev->net->stats.tx_packets++; in tx_complete()
467 spin_lock(&dev->req_lock); in tx_complete()
468 list_add(&req->list, &dev->tx_reqs); in tx_complete()
469 spin_unlock(&dev->req_lock); in tx_complete()
472 atomic_dec(&dev->tx_qlen); in tx_complete()
473 if (netif_carrier_ok(dev->net)) in tx_complete()
474 netif_wake_queue(dev->net); in tx_complete()
485 struct eth_dev *dev = netdev_priv(net); in eth_start_xmit() local
493 spin_lock_irqsave(&dev->lock, flags); in eth_start_xmit()
494 if (dev->port_usb) { in eth_start_xmit()
495 in = dev->port_usb->in_ep; in eth_start_xmit()
496 cdc_filter = dev->port_usb->cdc_filter; in eth_start_xmit()
501 spin_unlock_irqrestore(&dev->lock, flags); in eth_start_xmit()
530 spin_lock_irqsave(&dev->req_lock, flags); in eth_start_xmit()
536 if (list_empty(&dev->tx_reqs)) { in eth_start_xmit()
537 spin_unlock_irqrestore(&dev->req_lock, flags); in eth_start_xmit()
541 req = container_of(dev->tx_reqs.next, struct usb_request, list); in eth_start_xmit()
545 if (list_empty(&dev->tx_reqs)) in eth_start_xmit()
547 spin_unlock_irqrestore(&dev->req_lock, flags); in eth_start_xmit()
553 if (dev->wrap) { in eth_start_xmit()
556 spin_lock_irqsave(&dev->lock, flags); in eth_start_xmit()
557 if (dev->port_usb) in eth_start_xmit()
558 skb = dev->wrap(dev->port_usb, skb); in eth_start_xmit()
559 spin_unlock_irqrestore(&dev->lock, flags); in eth_start_xmit()
564 if (dev->port_usb->supports_multi_frame) in eth_start_xmit()
576 if (dev->port_usb->is_fixed && in eth_start_xmit()
577 length == dev->port_usb->fixed_in_len && in eth_start_xmit()
587 if (req->zero && !dev->zlp && (length % in->maxpacket) == 0) in eth_start_xmit()
593 if (gadget_is_dualspeed(dev->gadget)) in eth_start_xmit()
594 req->no_interrupt = (dev->gadget->speed == USB_SPEED_HIGH || in eth_start_xmit()
595 dev->gadget->speed == USB_SPEED_SUPER) in eth_start_xmit()
596 ? ((atomic_read(&dev->tx_qlen) % dev->qmult) != 0) in eth_start_xmit()
602 DBG(dev, "tx queue err %d\n", retval); in eth_start_xmit()
606 atomic_inc(&dev->tx_qlen); in eth_start_xmit()
612 dev->net->stats.tx_dropped++; in eth_start_xmit()
614 spin_lock_irqsave(&dev->req_lock, flags); in eth_start_xmit()
615 if (list_empty(&dev->tx_reqs)) in eth_start_xmit()
617 list_add(&req->list, &dev->tx_reqs); in eth_start_xmit()
618 spin_unlock_irqrestore(&dev->req_lock, flags); in eth_start_xmit()
625 static void eth_start(struct eth_dev *dev, gfp_t gfp_flags) in eth_start() argument
627 DBG(dev, "%s\n", __func__); in eth_start()
630 rx_fill(dev, gfp_flags); in eth_start()
633 atomic_set(&dev->tx_qlen, 0); in eth_start()
634 netif_wake_queue(dev->net); in eth_start()
639 struct eth_dev *dev = netdev_priv(net); in eth_open() local
642 DBG(dev, "%s\n", __func__); in eth_open()
643 if (netif_carrier_ok(dev->net)) in eth_open()
644 eth_start(dev, GFP_KERNEL); in eth_open()
646 spin_lock_irq(&dev->lock); in eth_open()
647 link = dev->port_usb; in eth_open()
650 spin_unlock_irq(&dev->lock); in eth_open()
657 struct eth_dev *dev = netdev_priv(net); in eth_stop() local
660 VDBG(dev, "%s\n", __func__); in eth_stop()
663 DBG(dev, "stop stats: rx/tx %ld/%ld, errs %ld/%ld\n", in eth_stop()
664 dev->net->stats.rx_packets, dev->net->stats.tx_packets, in eth_stop()
665 dev->net->stats.rx_errors, dev->net->stats.tx_errors in eth_stop()
669 spin_lock_irqsave(&dev->lock, flags); in eth_stop()
670 if (dev->port_usb) { in eth_stop()
671 struct gether *link = dev->port_usb; in eth_stop()
692 DBG(dev, "host still using in/out endpoints\n"); in eth_stop()
699 spin_unlock_irqrestore(&dev->lock, flags); in eth_stop()
767 struct eth_dev *dev; in gether_setup_name() local
771 net = alloc_etherdev(sizeof *dev); in gether_setup_name()
775 dev = netdev_priv(net); in gether_setup_name()
776 spin_lock_init(&dev->lock); in gether_setup_name()
777 spin_lock_init(&dev->req_lock); in gether_setup_name()
778 INIT_WORK(&dev->work, eth_work); in gether_setup_name()
779 INIT_LIST_HEAD(&dev->tx_reqs); in gether_setup_name()
780 INIT_LIST_HEAD(&dev->rx_reqs); in gether_setup_name()
782 skb_queue_head_init(&dev->rx_frames); in gether_setup_name()
785 dev->net = net; in gether_setup_name()
786 dev->qmult = qmult; in gether_setup_name()
790 dev_warn(&g->dev, in gether_setup_name()
792 if (get_ether_addr(host_addr, dev->host_mac)) in gether_setup_name()
793 dev_warn(&g->dev, in gether_setup_name()
797 memcpy(ethaddr, dev->host_mac, ETH_ALEN); in gether_setup_name()
803 dev->gadget = g; in gether_setup_name()
804 SET_NETDEV_DEV(net, &g->dev); in gether_setup_name()
809 dev_dbg(&g->dev, "register_netdev failed, %d\n", status); in gether_setup_name()
811 dev = ERR_PTR(status); in gether_setup_name()
813 INFO(dev, "MAC %pM\n", net->dev_addr); in gether_setup_name()
814 INFO(dev, "HOST MAC %pM\n", dev->host_mac); in gether_setup_name()
824 return dev; in gether_setup_name()
831 struct eth_dev *dev; in gether_setup_name_default() local
833 net = alloc_etherdev(sizeof(*dev)); in gether_setup_name_default()
837 dev = netdev_priv(net); in gether_setup_name_default()
838 spin_lock_init(&dev->lock); in gether_setup_name_default()
839 spin_lock_init(&dev->req_lock); in gether_setup_name_default()
840 INIT_WORK(&dev->work, eth_work); in gether_setup_name_default()
841 INIT_LIST_HEAD(&dev->tx_reqs); in gether_setup_name_default()
842 INIT_LIST_HEAD(&dev->rx_reqs); in gether_setup_name_default()
844 skb_queue_head_init(&dev->rx_frames); in gether_setup_name_default()
847 dev->net = net; in gether_setup_name_default()
848 dev->qmult = QMULT_DEFAULT; in gether_setup_name_default()
851 eth_random_addr(dev->dev_mac); in gether_setup_name_default()
853 eth_random_addr(dev->host_mac); in gether_setup_name_default()
867 struct eth_dev *dev; in gether_register_netdev() local
872 if (!net->dev.parent) in gether_register_netdev()
874 dev = netdev_priv(net); in gether_register_netdev()
875 g = dev->gadget; in gether_register_netdev()
878 dev_dbg(&g->dev, "register_netdev failed, %d\n", status); in gether_register_netdev()
881 INFO(dev, "HOST MAC %pM\n", dev->host_mac); in gether_register_netdev()
890 memcpy(sa.sa_data, dev->dev_mac, ETH_ALEN); in gether_register_netdev()
897 INFO(dev, "MAC %pM\n", dev->dev_mac); in gether_register_netdev()
905 struct eth_dev *dev; in gether_set_gadget() local
907 dev = netdev_priv(net); in gether_set_gadget()
908 dev->gadget = g; in gether_set_gadget()
909 SET_NETDEV_DEV(net, &g->dev); in gether_set_gadget()
915 struct eth_dev *dev; in gether_set_dev_addr() local
918 dev = netdev_priv(net); in gether_set_dev_addr()
921 memcpy(dev->dev_mac, new_addr, ETH_ALEN); in gether_set_dev_addr()
928 struct eth_dev *dev; in gether_get_dev_addr() local
930 dev = netdev_priv(net); in gether_get_dev_addr()
931 return get_ether_addr_str(dev->dev_mac, dev_addr, len); in gether_get_dev_addr()
937 struct eth_dev *dev; in gether_set_host_addr() local
940 dev = netdev_priv(net); in gether_set_host_addr()
943 memcpy(dev->host_mac, new_addr, ETH_ALEN); in gether_set_host_addr()
950 struct eth_dev *dev; in gether_get_host_addr() local
952 dev = netdev_priv(net); in gether_get_host_addr()
953 return get_ether_addr_str(dev->host_mac, host_addr, len); in gether_get_host_addr()
959 struct eth_dev *dev; in gether_get_host_addr_cdc() local
964 dev = netdev_priv(net); in gether_get_host_addr_cdc()
965 snprintf(host_addr, len, "%pm", dev->host_mac); in gether_get_host_addr_cdc()
973 struct eth_dev *dev; in gether_get_host_addr_u8() local
975 dev = netdev_priv(net); in gether_get_host_addr_u8()
976 memcpy(host_mac, dev->host_mac, ETH_ALEN); in gether_get_host_addr_u8()
982 struct eth_dev *dev; in gether_set_qmult() local
984 dev = netdev_priv(net); in gether_set_qmult()
985 dev->qmult = qmult; in gether_set_qmult()
991 struct eth_dev *dev; in gether_get_qmult() local
993 dev = netdev_priv(net); in gether_get_qmult()
994 return dev->qmult; in gether_get_qmult()
1013 void gether_cleanup(struct eth_dev *dev) in gether_cleanup() argument
1015 if (!dev) in gether_cleanup()
1018 unregister_netdev(dev->net); in gether_cleanup()
1019 flush_work(&dev->work); in gether_cleanup()
1020 free_netdev(dev->net); in gether_cleanup()
1042 struct eth_dev *dev = link->ioport; in gether_connect() local
1045 if (!dev) in gether_connect()
1048 link->in_ep->driver_data = dev; in gether_connect()
1051 DBG(dev, "enable %s --> %d\n", in gether_connect()
1056 link->out_ep->driver_data = dev; in gether_connect()
1059 DBG(dev, "enable %s --> %d\n", in gether_connect()
1065 result = alloc_requests(dev, link, qlen(dev->gadget, in gether_connect()
1066 dev->qmult)); in gether_connect()
1069 dev->zlp = link->is_zlp_ok; in gether_connect()
1070 DBG(dev, "qlen %d\n", qlen(dev->gadget, dev->qmult)); in gether_connect()
1072 dev->header_len = link->header_len; in gether_connect()
1073 dev->unwrap = link->unwrap; in gether_connect()
1074 dev->wrap = link->wrap; in gether_connect()
1076 spin_lock(&dev->lock); in gether_connect()
1077 dev->port_usb = link; in gether_connect()
1078 if (netif_running(dev->net)) { in gether_connect()
1085 spin_unlock(&dev->lock); in gether_connect()
1087 netif_carrier_on(dev->net); in gether_connect()
1088 if (netif_running(dev->net)) in gether_connect()
1089 eth_start(dev, GFP_ATOMIC); in gether_connect()
1101 return dev->net; in gether_connect()
1119 struct eth_dev *dev = link->ioport; in gether_disconnect() local
1122 WARN_ON(!dev); in gether_disconnect()
1123 if (!dev) in gether_disconnect()
1126 DBG(dev, "%s\n", __func__); in gether_disconnect()
1128 netif_stop_queue(dev->net); in gether_disconnect()
1129 netif_carrier_off(dev->net); in gether_disconnect()
1136 spin_lock(&dev->req_lock); in gether_disconnect()
1137 while (!list_empty(&dev->tx_reqs)) { in gether_disconnect()
1138 req = container_of(dev->tx_reqs.next, in gether_disconnect()
1142 spin_unlock(&dev->req_lock); in gether_disconnect()
1144 spin_lock(&dev->req_lock); in gether_disconnect()
1146 spin_unlock(&dev->req_lock); in gether_disconnect()
1151 spin_lock(&dev->req_lock); in gether_disconnect()
1152 while (!list_empty(&dev->rx_reqs)) { in gether_disconnect()
1153 req = container_of(dev->rx_reqs.next, in gether_disconnect()
1157 spin_unlock(&dev->req_lock); in gether_disconnect()
1159 spin_lock(&dev->req_lock); in gether_disconnect()
1161 spin_unlock(&dev->req_lock); in gether_disconnect()
1166 dev->header_len = 0; in gether_disconnect()
1167 dev->unwrap = NULL; in gether_disconnect()
1168 dev->wrap = NULL; in gether_disconnect()
1170 spin_lock(&dev->lock); in gether_disconnect()
1171 dev->port_usb = NULL; in gether_disconnect()
1172 spin_unlock(&dev->lock); in gether_disconnect()