1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * USB Network driver infrastructure
4 * Copyright (C) 2000-2005 by David Brownell
5 * Copyright (C) 2003-2005 David Hollis <dhollis@davehollis.com>
9 * This is a generic "USB networking" framework that works with several
10 * kinds of full and high speed networking devices: host-to-host cables,
11 * smart usb peripherals, and actual Ethernet adapters.
13 * These devices usually differ in terms of control protocols (if they
14 * even have one!) and sometimes they define new framing to wrap or batch
15 * Ethernet packets. Otherwise, they talk to USB pretty much the same,
16 * so interface (un)binding, endpoint I/O queues, fault handling, and other
17 * issues can usefully be addressed by this framework.
20 // #define DEBUG // error path messages, extra info
21 // #define VERBOSE // more; success messages
23 #include <linux/module.h>
24 #include <linux/init.h>
25 #include <linux/netdevice.h>
26 #include <linux/etherdevice.h>
27 #include <linux/ctype.h>
28 #include <linux/ethtool.h>
29 #include <linux/workqueue.h>
30 #include <linux/mii.h>
31 #include <linux/usb.h>
32 #include <linux/usb/usbnet.h>
33 #include <linux/slab.h>
34 #include <linux/kernel.h>
35 #include <linux/pm_runtime.h>
37 #define DRIVER_VERSION "22-Aug-2005"
40 /*-------------------------------------------------------------------------*/
43 * Nineteen USB 1.1 max size bulk transactions per frame (ms), max.
44 * Several dozen bytes of IPv4 data can fit in two such transactions.
45 * One maximum size Ethernet packet takes twenty four of them.
46 * For high speed, each frame comfortably fits almost 36 max size
47 * Ethernet packets (so queues should be bigger).
49 * The goal is to let the USB host controller be busy for 5msec or
50 * more before an irq is required, under load. Jumbograms change
53 #define MAX_QUEUE_MEMORY (60 * 1518)
54 #define RX_QLEN(dev) ((dev)->rx_qlen)
55 #define TX_QLEN(dev) ((dev)->tx_qlen)
57 // reawaken network queue this soon after stopping; else watchdog barks
58 #define TX_TIMEOUT_JIFFIES (5*HZ)
60 /* throttle rx/tx briefly after some faults, so hub_wq might disconnect()
61 * us (it polls at HZ/4 usually) before we report too many false errors.
63 #define THROTTLE_JIFFIES (HZ/8)
66 #define UNLINK_TIMEOUT_MS 3
68 /*-------------------------------------------------------------------------*/
70 // randomly generated ethernet address
71 static u8 node_id
[ETH_ALEN
];
73 /* use ethtool to change the level for any given device */
74 static int msg_level
= -1;
75 module_param (msg_level
, int, 0);
76 MODULE_PARM_DESC (msg_level
, "Override default message level");
78 /*-------------------------------------------------------------------------*/
80 /* handles CDC Ethernet and many other network "bulk data" interfaces */
81 int usbnet_get_endpoints(struct usbnet
*dev
, struct usb_interface
*intf
)
84 struct usb_host_interface
*alt
= NULL
;
85 struct usb_host_endpoint
*in
= NULL
, *out
= NULL
;
86 struct usb_host_endpoint
*status
= NULL
;
88 for (tmp
= 0; tmp
< intf
->num_altsetting
; tmp
++) {
91 in
= out
= status
= NULL
;
92 alt
= intf
->altsetting
+ tmp
;
94 /* take the first altsetting with in-bulk + out-bulk;
95 * remember any status endpoint, just in case;
96 * ignore other endpoints and altsettings.
98 for (ep
= 0; ep
< alt
->desc
.bNumEndpoints
; ep
++) {
99 struct usb_host_endpoint
*e
;
102 e
= alt
->endpoint
+ ep
;
104 /* ignore endpoints which cannot transfer data */
105 if (!usb_endpoint_maxp(&e
->desc
))
108 switch (e
->desc
.bmAttributes
) {
109 case USB_ENDPOINT_XFER_INT
:
110 if (!usb_endpoint_dir_in(&e
->desc
))
114 case USB_ENDPOINT_XFER_BULK
:
119 if (usb_endpoint_dir_in(&e
->desc
)) {
122 else if (intr
&& !status
)
132 if (!alt
|| !in
|| !out
)
135 if (alt
->desc
.bAlternateSetting
!= 0 ||
136 !(dev
->driver_info
->flags
& FLAG_NO_SETINT
)) {
137 tmp
= usb_set_interface (dev
->udev
, alt
->desc
.bInterfaceNumber
,
138 alt
->desc
.bAlternateSetting
);
143 dev
->in
= usb_rcvbulkpipe (dev
->udev
,
144 in
->desc
.bEndpointAddress
& USB_ENDPOINT_NUMBER_MASK
);
145 dev
->out
= usb_sndbulkpipe (dev
->udev
,
146 out
->desc
.bEndpointAddress
& USB_ENDPOINT_NUMBER_MASK
);
147 dev
->status
= status
;
150 EXPORT_SYMBOL_GPL(usbnet_get_endpoints
);
152 int usbnet_get_ethernet_addr(struct usbnet
*dev
, int iMACAddress
)
155 unsigned char buf
[13];
157 ret
= usb_string(dev
->udev
, iMACAddress
, buf
, sizeof buf
);
159 tmp
= hex2bin(dev
->net
->dev_addr
, buf
, 6);
161 dev_dbg(&dev
->udev
->dev
,
162 "bad MAC string %d fetch, %d\n", iMACAddress
, tmp
);
169 EXPORT_SYMBOL_GPL(usbnet_get_ethernet_addr
);
171 static void intr_complete (struct urb
*urb
)
173 struct usbnet
*dev
= urb
->context
;
174 int status
= urb
->status
;
179 dev
->driver_info
->status(dev
, urb
);
182 /* software-driven interface shutdown */
183 case -ENOENT
: /* urb killed */
184 case -ESHUTDOWN
: /* hardware gone */
185 netif_dbg(dev
, ifdown
, dev
->net
,
186 "intr shutdown, code %d\n", status
);
189 /* NOTE: not throttling like RX/TX, since this endpoint
190 * already polls infrequently
193 netdev_dbg(dev
->net
, "intr status %d\n", status
);
197 status
= usb_submit_urb (urb
, GFP_ATOMIC
);
199 netif_err(dev
, timer
, dev
->net
,
200 "intr resubmit --> %d\n", status
);
203 static int init_status (struct usbnet
*dev
, struct usb_interface
*intf
)
210 if (!dev
->driver_info
->status
)
213 pipe
= usb_rcvintpipe (dev
->udev
,
214 dev
->status
->desc
.bEndpointAddress
215 & USB_ENDPOINT_NUMBER_MASK
);
216 maxp
= usb_maxpacket (dev
->udev
, pipe
, 0);
218 /* avoid 1 msec chatter: min 8 msec poll rate */
219 period
= max ((int) dev
->status
->desc
.bInterval
,
220 (dev
->udev
->speed
== USB_SPEED_HIGH
) ? 7 : 3);
222 buf
= kmalloc (maxp
, GFP_KERNEL
);
224 dev
->interrupt
= usb_alloc_urb (0, GFP_KERNEL
);
225 if (!dev
->interrupt
) {
229 usb_fill_int_urb(dev
->interrupt
, dev
->udev
, pipe
,
230 buf
, maxp
, intr_complete
, dev
, period
);
231 dev
->interrupt
->transfer_flags
|= URB_FREE_BUFFER
;
233 "status ep%din, %d bytes period %d\n",
234 usb_pipeendpoint(pipe
), maxp
, period
);
240 /* Submit the interrupt URB if not previously submitted, increasing refcount */
241 int usbnet_status_start(struct usbnet
*dev
, gfp_t mem_flags
)
245 WARN_ON_ONCE(dev
->interrupt
== NULL
);
246 if (dev
->interrupt
) {
247 mutex_lock(&dev
->interrupt_mutex
);
249 if (++dev
->interrupt_count
== 1)
250 ret
= usb_submit_urb(dev
->interrupt
, mem_flags
);
252 dev_dbg(&dev
->udev
->dev
, "incremented interrupt URB count to %d\n",
253 dev
->interrupt_count
);
254 mutex_unlock(&dev
->interrupt_mutex
);
258 EXPORT_SYMBOL_GPL(usbnet_status_start
);
260 /* For resume; submit interrupt URB if previously submitted */
261 static int __usbnet_status_start_force(struct usbnet
*dev
, gfp_t mem_flags
)
265 mutex_lock(&dev
->interrupt_mutex
);
266 if (dev
->interrupt_count
) {
267 ret
= usb_submit_urb(dev
->interrupt
, mem_flags
);
268 dev_dbg(&dev
->udev
->dev
,
269 "submitted interrupt URB for resume\n");
271 mutex_unlock(&dev
->interrupt_mutex
);
275 /* Kill the interrupt URB if all submitters want it killed */
276 void usbnet_status_stop(struct usbnet
*dev
)
278 if (dev
->interrupt
) {
279 mutex_lock(&dev
->interrupt_mutex
);
280 WARN_ON(dev
->interrupt_count
== 0);
282 if (dev
->interrupt_count
&& --dev
->interrupt_count
== 0)
283 usb_kill_urb(dev
->interrupt
);
285 dev_dbg(&dev
->udev
->dev
,
286 "decremented interrupt URB count to %d\n",
287 dev
->interrupt_count
);
288 mutex_unlock(&dev
->interrupt_mutex
);
291 EXPORT_SYMBOL_GPL(usbnet_status_stop
);
293 /* For suspend; always kill interrupt URB */
294 static void __usbnet_status_stop_force(struct usbnet
*dev
)
296 if (dev
->interrupt
) {
297 mutex_lock(&dev
->interrupt_mutex
);
298 usb_kill_urb(dev
->interrupt
);
299 dev_dbg(&dev
->udev
->dev
, "killed interrupt URB for suspend\n");
300 mutex_unlock(&dev
->interrupt_mutex
);
304 /* Passes this packet up the stack, updating its accounting.
305 * Some link protocols batch packets, so their rx_fixup paths
306 * can return clones as well as just modify the original skb.
308 void usbnet_skb_return (struct usbnet
*dev
, struct sk_buff
*skb
)
310 struct pcpu_sw_netstats
*stats64
= this_cpu_ptr(dev
->stats64
);
314 if (test_bit(EVENT_RX_PAUSED
, &dev
->flags
)) {
315 skb_queue_tail(&dev
->rxq_pause
, skb
);
319 /* only update if unset to allow minidriver rx_fixup override */
320 if (skb
->protocol
== 0)
321 skb
->protocol
= eth_type_trans (skb
, dev
->net
);
323 flags
= u64_stats_update_begin_irqsave(&stats64
->syncp
);
324 stats64
->rx_packets
++;
325 stats64
->rx_bytes
+= skb
->len
;
326 u64_stats_update_end_irqrestore(&stats64
->syncp
, flags
);
328 netif_dbg(dev
, rx_status
, dev
->net
, "< rx, len %zu, type 0x%x\n",
329 skb
->len
+ sizeof (struct ethhdr
), skb
->protocol
);
330 memset (skb
->cb
, 0, sizeof (struct skb_data
));
332 if (skb_defer_rx_timestamp(skb
))
335 status
= netif_rx (skb
);
336 if (status
!= NET_RX_SUCCESS
)
337 netif_dbg(dev
, rx_err
, dev
->net
,
338 "netif_rx status %d\n", status
);
340 EXPORT_SYMBOL_GPL(usbnet_skb_return
);
342 /* must be called if hard_mtu or rx_urb_size changed */
343 void usbnet_update_max_qlen(struct usbnet
*dev
)
345 enum usb_device_speed speed
= dev
->udev
->speed
;
347 if (!dev
->rx_urb_size
|| !dev
->hard_mtu
)
351 dev
->rx_qlen
= MAX_QUEUE_MEMORY
/ dev
->rx_urb_size
;
352 dev
->tx_qlen
= MAX_QUEUE_MEMORY
/ dev
->hard_mtu
;
354 case USB_SPEED_SUPER
:
355 case USB_SPEED_SUPER_PLUS
:
357 * Not take default 5ms qlen for super speed HC to
358 * save memory, and iperf tests show 2.5ms qlen can
361 dev
->rx_qlen
= 5 * MAX_QUEUE_MEMORY
/ dev
->rx_urb_size
;
362 dev
->tx_qlen
= 5 * MAX_QUEUE_MEMORY
/ dev
->hard_mtu
;
366 dev
->rx_qlen
= dev
->tx_qlen
= 4;
369 EXPORT_SYMBOL_GPL(usbnet_update_max_qlen
);
372 /*-------------------------------------------------------------------------
374 * Network Device Driver (peer link to "Host Device", from USB host)
376 *-------------------------------------------------------------------------*/
378 int usbnet_change_mtu (struct net_device
*net
, int new_mtu
)
380 struct usbnet
*dev
= netdev_priv(net
);
381 int ll_mtu
= new_mtu
+ net
->hard_header_len
;
382 int old_hard_mtu
= dev
->hard_mtu
;
383 int old_rx_urb_size
= dev
->rx_urb_size
;
385 // no second zero-length packet read wanted after mtu-sized packets
386 if ((ll_mtu
% dev
->maxpacket
) == 0)
390 dev
->hard_mtu
= net
->mtu
+ net
->hard_header_len
;
391 if (dev
->rx_urb_size
== old_hard_mtu
) {
392 dev
->rx_urb_size
= dev
->hard_mtu
;
393 if (dev
->rx_urb_size
> old_rx_urb_size
) {
394 usbnet_pause_rx(dev
);
395 usbnet_unlink_rx_urbs(dev
);
396 usbnet_resume_rx(dev
);
400 /* max qlen depend on hard_mtu and rx_urb_size */
401 usbnet_update_max_qlen(dev
);
405 EXPORT_SYMBOL_GPL(usbnet_change_mtu
);
407 /* The caller must hold list->lock */
408 static void __usbnet_queue_skb(struct sk_buff_head
*list
,
409 struct sk_buff
*newsk
, enum skb_state state
)
411 struct skb_data
*entry
= (struct skb_data
*) newsk
->cb
;
413 __skb_queue_tail(list
, newsk
);
414 entry
->state
= state
;
417 /*-------------------------------------------------------------------------*/
419 /* some LK 2.4 HCDs oopsed if we freed or resubmitted urbs from
420 * completion callbacks. 2.5 should have fixed those bugs...
423 static enum skb_state
defer_bh(struct usbnet
*dev
, struct sk_buff
*skb
,
424 struct sk_buff_head
*list
, enum skb_state state
)
427 enum skb_state old_state
;
428 struct skb_data
*entry
= (struct skb_data
*) skb
->cb
;
430 spin_lock_irqsave(&list
->lock
, flags
);
431 old_state
= entry
->state
;
432 entry
->state
= state
;
433 __skb_unlink(skb
, list
);
435 /* defer_bh() is never called with list == &dev->done.
436 * spin_lock_nested() tells lockdep that it is OK to take
437 * dev->done.lock here with list->lock held.
439 spin_lock_nested(&dev
->done
.lock
, SINGLE_DEPTH_NESTING
);
441 __skb_queue_tail(&dev
->done
, skb
);
442 if (dev
->done
.qlen
== 1)
443 tasklet_schedule(&dev
->bh
);
444 spin_unlock(&dev
->done
.lock
);
445 spin_unlock_irqrestore(&list
->lock
, flags
);
449 /* some work can't be done in tasklets, so we use keventd
451 * NOTE: annoying asymmetry: if it's active, schedule_work() fails,
452 * but tasklet_schedule() doesn't. hope the failure is rare.
454 void usbnet_defer_kevent (struct usbnet
*dev
, int work
)
456 set_bit (work
, &dev
->flags
);
457 if (!schedule_work (&dev
->kevent
))
458 netdev_dbg(dev
->net
, "kevent %d may have been dropped\n", work
);
460 netdev_dbg(dev
->net
, "kevent %d scheduled\n", work
);
462 EXPORT_SYMBOL_GPL(usbnet_defer_kevent
);
464 /*-------------------------------------------------------------------------*/
466 static void rx_complete (struct urb
*urb
);
468 static int rx_submit (struct usbnet
*dev
, struct urb
*urb
, gfp_t flags
)
471 struct skb_data
*entry
;
473 unsigned long lockflags
;
474 size_t size
= dev
->rx_urb_size
;
476 /* prevent rx skb allocation when error ratio is high */
477 if (test_bit(EVENT_RX_KILL
, &dev
->flags
)) {
482 if (test_bit(EVENT_NO_IP_ALIGN
, &dev
->flags
))
483 skb
= __netdev_alloc_skb(dev
->net
, size
, flags
);
485 skb
= __netdev_alloc_skb_ip_align(dev
->net
, size
, flags
);
487 netif_dbg(dev
, rx_err
, dev
->net
, "no rx skb\n");
488 usbnet_defer_kevent (dev
, EVENT_RX_MEMORY
);
493 entry
= (struct skb_data
*) skb
->cb
;
498 usb_fill_bulk_urb (urb
, dev
->udev
, dev
->in
,
499 skb
->data
, size
, rx_complete
, skb
);
501 spin_lock_irqsave (&dev
->rxq
.lock
, lockflags
);
503 if (netif_running (dev
->net
) &&
504 netif_device_present (dev
->net
) &&
505 test_bit(EVENT_DEV_OPEN
, &dev
->flags
) &&
506 !test_bit (EVENT_RX_HALT
, &dev
->flags
) &&
507 !test_bit (EVENT_DEV_ASLEEP
, &dev
->flags
)) {
508 switch (retval
= usb_submit_urb (urb
, GFP_ATOMIC
)) {
510 usbnet_defer_kevent (dev
, EVENT_RX_HALT
);
513 usbnet_defer_kevent (dev
, EVENT_RX_MEMORY
);
516 netif_dbg(dev
, ifdown
, dev
->net
, "device gone\n");
517 netif_device_detach (dev
->net
);
523 netif_dbg(dev
, rx_err
, dev
->net
,
524 "rx submit, %d\n", retval
);
525 tasklet_schedule (&dev
->bh
);
528 __usbnet_queue_skb(&dev
->rxq
, skb
, rx_start
);
531 netif_dbg(dev
, ifdown
, dev
->net
, "rx: stopped\n");
534 spin_unlock_irqrestore (&dev
->rxq
.lock
, lockflags
);
536 dev_kfree_skb_any (skb
);
543 /*-------------------------------------------------------------------------*/
545 static inline void rx_process (struct usbnet
*dev
, struct sk_buff
*skb
)
547 if (dev
->driver_info
->rx_fixup
&&
548 !dev
->driver_info
->rx_fixup (dev
, skb
)) {
549 /* With RX_ASSEMBLE, rx_fixup() must update counters */
550 if (!(dev
->driver_info
->flags
& FLAG_RX_ASSEMBLE
))
551 dev
->net
->stats
.rx_errors
++;
554 // else network stack removes extra byte if we forced a short packet
556 /* all data was already cloned from skb inside the driver */
557 if (dev
->driver_info
->flags
& FLAG_MULTI_PACKET
)
560 if (skb
->len
< ETH_HLEN
) {
561 dev
->net
->stats
.rx_errors
++;
562 dev
->net
->stats
.rx_length_errors
++;
563 netif_dbg(dev
, rx_err
, dev
->net
, "rx length %d\n", skb
->len
);
565 usbnet_skb_return(dev
, skb
);
570 skb_queue_tail(&dev
->done
, skb
);
573 /*-------------------------------------------------------------------------*/
575 static void rx_complete (struct urb
*urb
)
577 struct sk_buff
*skb
= (struct sk_buff
*) urb
->context
;
578 struct skb_data
*entry
= (struct skb_data
*) skb
->cb
;
579 struct usbnet
*dev
= entry
->dev
;
580 int urb_status
= urb
->status
;
581 enum skb_state state
;
583 skb_put (skb
, urb
->actual_length
);
587 switch (urb_status
) {
592 /* stalls need manual reset. this is rare ... except that
593 * when going through USB 2.0 TTs, unplug appears this way.
594 * we avoid the highspeed version of the ETIMEDOUT/EILSEQ
595 * storm, recovering as needed.
598 dev
->net
->stats
.rx_errors
++;
599 usbnet_defer_kevent (dev
, EVENT_RX_HALT
);
602 /* software-driven interface shutdown */
603 case -ECONNRESET
: /* async unlink */
604 case -ESHUTDOWN
: /* hardware gone */
605 netif_dbg(dev
, ifdown
, dev
->net
,
606 "rx shutdown, code %d\n", urb_status
);
609 /* we get controller i/o faults during hub_wq disconnect() delays.
610 * throttle down resubmits, to avoid log floods; just temporarily,
611 * so we still recover when the fault isn't a hub_wq delay.
616 dev
->net
->stats
.rx_errors
++;
617 if (!timer_pending (&dev
->delay
)) {
618 mod_timer (&dev
->delay
, jiffies
+ THROTTLE_JIFFIES
);
619 netif_dbg(dev
, link
, dev
->net
,
620 "rx throttle %d\n", urb_status
);
628 /* data overrun ... flush fifo? */
630 dev
->net
->stats
.rx_over_errors
++;
635 dev
->net
->stats
.rx_errors
++;
636 netif_dbg(dev
, rx_err
, dev
->net
, "rx status %d\n", urb_status
);
640 /* stop rx if packet error rate is high */
641 if (++dev
->pkt_cnt
> 30) {
645 if (state
== rx_cleanup
)
647 if (dev
->pkt_err
> 20)
648 set_bit(EVENT_RX_KILL
, &dev
->flags
);
651 state
= defer_bh(dev
, skb
, &dev
->rxq
, state
);
654 if (netif_running (dev
->net
) &&
655 !test_bit (EVENT_RX_HALT
, &dev
->flags
) &&
656 state
!= unlink_start
) {
657 rx_submit (dev
, urb
, GFP_ATOMIC
);
658 usb_mark_last_busy(dev
->udev
);
663 netif_dbg(dev
, rx_err
, dev
->net
, "no read resubmitted\n");
666 /*-------------------------------------------------------------------------*/
667 void usbnet_pause_rx(struct usbnet
*dev
)
669 set_bit(EVENT_RX_PAUSED
, &dev
->flags
);
671 netif_dbg(dev
, rx_status
, dev
->net
, "paused rx queue enabled\n");
673 EXPORT_SYMBOL_GPL(usbnet_pause_rx
);
675 void usbnet_resume_rx(struct usbnet
*dev
)
680 clear_bit(EVENT_RX_PAUSED
, &dev
->flags
);
682 while ((skb
= skb_dequeue(&dev
->rxq_pause
)) != NULL
) {
683 usbnet_skb_return(dev
, skb
);
687 tasklet_schedule(&dev
->bh
);
689 netif_dbg(dev
, rx_status
, dev
->net
,
690 "paused rx queue disabled, %d skbs requeued\n", num
);
692 EXPORT_SYMBOL_GPL(usbnet_resume_rx
);
694 void usbnet_purge_paused_rxq(struct usbnet
*dev
)
696 skb_queue_purge(&dev
->rxq_pause
);
698 EXPORT_SYMBOL_GPL(usbnet_purge_paused_rxq
);
700 /*-------------------------------------------------------------------------*/
702 // unlink pending rx/tx; completion handlers do all other cleanup
704 static int unlink_urbs (struct usbnet
*dev
, struct sk_buff_head
*q
)
710 spin_lock_irqsave (&q
->lock
, flags
);
711 while (!skb_queue_empty(q
)) {
712 struct skb_data
*entry
;
716 skb_queue_walk(q
, skb
) {
717 entry
= (struct skb_data
*) skb
->cb
;
718 if (entry
->state
!= unlink_start
)
723 entry
->state
= unlink_start
;
727 * Get reference count of the URB to avoid it to be
728 * freed during usb_unlink_urb, which may trigger
729 * use-after-free problem inside usb_unlink_urb since
730 * usb_unlink_urb is always racing with .complete
731 * handler(include defer_bh).
734 spin_unlock_irqrestore(&q
->lock
, flags
);
735 // during some PM-driven resume scenarios,
736 // these (async) unlinks complete immediately
737 retval
= usb_unlink_urb (urb
);
738 if (retval
!= -EINPROGRESS
&& retval
!= 0)
739 netdev_dbg(dev
->net
, "unlink urb err, %d\n", retval
);
743 spin_lock_irqsave(&q
->lock
, flags
);
745 spin_unlock_irqrestore (&q
->lock
, flags
);
749 // Flush all pending rx urbs
750 // minidrivers may need to do this when the MTU changes
752 void usbnet_unlink_rx_urbs(struct usbnet
*dev
)
754 if (netif_running(dev
->net
)) {
755 (void) unlink_urbs (dev
, &dev
->rxq
);
756 tasklet_schedule(&dev
->bh
);
759 EXPORT_SYMBOL_GPL(usbnet_unlink_rx_urbs
);
761 /*-------------------------------------------------------------------------*/
763 static void wait_skb_queue_empty(struct sk_buff_head
*q
)
767 spin_lock_irqsave(&q
->lock
, flags
);
768 while (!skb_queue_empty(q
)) {
769 spin_unlock_irqrestore(&q
->lock
, flags
);
770 schedule_timeout(msecs_to_jiffies(UNLINK_TIMEOUT_MS
));
771 set_current_state(TASK_UNINTERRUPTIBLE
);
772 spin_lock_irqsave(&q
->lock
, flags
);
774 spin_unlock_irqrestore(&q
->lock
, flags
);
777 // precondition: never called in_interrupt
778 static void usbnet_terminate_urbs(struct usbnet
*dev
)
780 DECLARE_WAITQUEUE(wait
, current
);
783 /* ensure there are no more active urbs */
784 add_wait_queue(&dev
->wait
, &wait
);
785 set_current_state(TASK_UNINTERRUPTIBLE
);
786 temp
= unlink_urbs(dev
, &dev
->txq
) +
787 unlink_urbs(dev
, &dev
->rxq
);
789 /* maybe wait for deletions to finish. */
790 wait_skb_queue_empty(&dev
->rxq
);
791 wait_skb_queue_empty(&dev
->txq
);
792 wait_skb_queue_empty(&dev
->done
);
793 netif_dbg(dev
, ifdown
, dev
->net
,
794 "waited for %d urb completions\n", temp
);
795 set_current_state(TASK_RUNNING
);
796 remove_wait_queue(&dev
->wait
, &wait
);
799 int usbnet_stop (struct net_device
*net
)
801 struct usbnet
*dev
= netdev_priv(net
);
802 const struct driver_info
*info
= dev
->driver_info
;
805 clear_bit(EVENT_DEV_OPEN
, &dev
->flags
);
806 netif_stop_queue (net
);
808 netif_info(dev
, ifdown
, dev
->net
,
809 "stop stats: rx/tx %lu/%lu, errs %lu/%lu\n",
810 net
->stats
.rx_packets
, net
->stats
.tx_packets
,
811 net
->stats
.rx_errors
, net
->stats
.tx_errors
);
813 /* to not race resume */
814 pm
= usb_autopm_get_interface(dev
->intf
);
815 /* allow minidriver to stop correctly (wireless devices to turn off
818 retval
= info
->stop(dev
);
820 netif_info(dev
, ifdown
, dev
->net
,
821 "stop fail (%d) usbnet usb-%s-%s, %s\n",
823 dev
->udev
->bus
->bus_name
, dev
->udev
->devpath
,
827 if (!(info
->flags
& FLAG_AVOID_UNLINK_URBS
))
828 usbnet_terminate_urbs(dev
);
830 usbnet_status_stop(dev
);
832 usbnet_purge_paused_rxq(dev
);
834 mpn
= !test_and_clear_bit(EVENT_NO_RUNTIME_PM
, &dev
->flags
);
836 /* deferred work (task, timer, softirq) must also stop.
837 * can't flush_scheduled_work() until we drop rtnl (later),
838 * else workers could deadlock; so make workers a NOP.
841 del_timer_sync (&dev
->delay
);
842 tasklet_kill (&dev
->bh
);
844 usb_autopm_put_interface(dev
->intf
);
846 if (info
->manage_power
&& mpn
)
847 info
->manage_power(dev
, 0);
849 usb_autopm_put_interface(dev
->intf
);
853 EXPORT_SYMBOL_GPL(usbnet_stop
);
855 /*-------------------------------------------------------------------------*/
857 // posts reads, and enables write queuing
859 // precondition: never called in_interrupt
861 int usbnet_open (struct net_device
*net
)
863 struct usbnet
*dev
= netdev_priv(net
);
865 const struct driver_info
*info
= dev
->driver_info
;
867 if ((retval
= usb_autopm_get_interface(dev
->intf
)) < 0) {
868 netif_info(dev
, ifup
, dev
->net
,
869 "resumption fail (%d) usbnet usb-%s-%s, %s\n",
871 dev
->udev
->bus
->bus_name
,
877 // put into "known safe" state
878 if (info
->reset
&& (retval
= info
->reset (dev
)) < 0) {
879 netif_info(dev
, ifup
, dev
->net
,
880 "open reset fail (%d) usbnet usb-%s-%s, %s\n",
882 dev
->udev
->bus
->bus_name
,
888 /* hard_mtu or rx_urb_size may change in reset() */
889 usbnet_update_max_qlen(dev
);
891 // insist peer be connected
892 if (info
->check_connect
&& (retval
= info
->check_connect (dev
)) < 0) {
893 netif_dbg(dev
, ifup
, dev
->net
, "can't open; %d\n", retval
);
897 /* start any status interrupt transfer */
898 if (dev
->interrupt
) {
899 retval
= usbnet_status_start(dev
, GFP_KERNEL
);
901 netif_err(dev
, ifup
, dev
->net
,
902 "intr submit %d\n", retval
);
907 set_bit(EVENT_DEV_OPEN
, &dev
->flags
);
908 netif_start_queue (net
);
909 netif_info(dev
, ifup
, dev
->net
,
910 "open: enable queueing (rx %d, tx %d) mtu %d %s framing\n",
911 (int)RX_QLEN(dev
), (int)TX_QLEN(dev
),
913 (dev
->driver_info
->flags
& FLAG_FRAMING_NC
) ? "NetChip" :
914 (dev
->driver_info
->flags
& FLAG_FRAMING_GL
) ? "GeneSys" :
915 (dev
->driver_info
->flags
& FLAG_FRAMING_Z
) ? "Zaurus" :
916 (dev
->driver_info
->flags
& FLAG_FRAMING_RN
) ? "RNDIS" :
917 (dev
->driver_info
->flags
& FLAG_FRAMING_AX
) ? "ASIX" :
920 /* reset rx error state */
923 clear_bit(EVENT_RX_KILL
, &dev
->flags
);
925 // delay posting reads until we're fully open
926 tasklet_schedule (&dev
->bh
);
927 if (info
->manage_power
) {
928 retval
= info
->manage_power(dev
, 1);
931 set_bit(EVENT_NO_RUNTIME_PM
, &dev
->flags
);
933 usb_autopm_put_interface(dev
->intf
);
938 usb_autopm_put_interface(dev
->intf
);
942 EXPORT_SYMBOL_GPL(usbnet_open
);
944 /*-------------------------------------------------------------------------*/
946 /* ethtool methods; minidrivers may need to add some more, but
947 * they'll probably want to use this base set.
950 int usbnet_get_link_ksettings(struct net_device
*net
,
951 struct ethtool_link_ksettings
*cmd
)
953 struct usbnet
*dev
= netdev_priv(net
);
955 if (!dev
->mii
.mdio_read
)
958 mii_ethtool_get_link_ksettings(&dev
->mii
, cmd
);
962 EXPORT_SYMBOL_GPL(usbnet_get_link_ksettings
);
964 int usbnet_set_link_ksettings(struct net_device
*net
,
965 const struct ethtool_link_ksettings
*cmd
)
967 struct usbnet
*dev
= netdev_priv(net
);
970 if (!dev
->mii
.mdio_write
)
973 retval
= mii_ethtool_set_link_ksettings(&dev
->mii
, cmd
);
975 /* link speed/duplex might have changed */
976 if (dev
->driver_info
->link_reset
)
977 dev
->driver_info
->link_reset(dev
);
979 /* hard_mtu or rx_urb_size may change in link_reset() */
980 usbnet_update_max_qlen(dev
);
984 EXPORT_SYMBOL_GPL(usbnet_set_link_ksettings
);
986 void usbnet_get_stats64(struct net_device
*net
, struct rtnl_link_stats64
*stats
)
988 struct usbnet
*dev
= netdev_priv(net
);
992 netdev_stats_to_stats64(stats
, &net
->stats
);
994 for_each_possible_cpu(cpu
) {
995 struct pcpu_sw_netstats
*stats64
;
996 u64 rx_packets
, rx_bytes
;
997 u64 tx_packets
, tx_bytes
;
999 stats64
= per_cpu_ptr(dev
->stats64
, cpu
);
1002 start
= u64_stats_fetch_begin_irq(&stats64
->syncp
);
1003 rx_packets
= stats64
->rx_packets
;
1004 rx_bytes
= stats64
->rx_bytes
;
1005 tx_packets
= stats64
->tx_packets
;
1006 tx_bytes
= stats64
->tx_bytes
;
1007 } while (u64_stats_fetch_retry_irq(&stats64
->syncp
, start
));
1009 stats
->rx_packets
+= rx_packets
;
1010 stats
->rx_bytes
+= rx_bytes
;
1011 stats
->tx_packets
+= tx_packets
;
1012 stats
->tx_bytes
+= tx_bytes
;
1015 EXPORT_SYMBOL_GPL(usbnet_get_stats64
);
1017 u32
usbnet_get_link (struct net_device
*net
)
1019 struct usbnet
*dev
= netdev_priv(net
);
1021 /* If a check_connect is defined, return its result */
1022 if (dev
->driver_info
->check_connect
)
1023 return dev
->driver_info
->check_connect (dev
) == 0;
1025 /* if the device has mii operations, use those */
1026 if (dev
->mii
.mdio_read
)
1027 return mii_link_ok(&dev
->mii
);
1029 /* Otherwise, dtrt for drivers calling netif_carrier_{on,off} */
1030 return ethtool_op_get_link(net
);
1032 EXPORT_SYMBOL_GPL(usbnet_get_link
);
1034 int usbnet_nway_reset(struct net_device
*net
)
1036 struct usbnet
*dev
= netdev_priv(net
);
1038 if (!dev
->mii
.mdio_write
)
1041 return mii_nway_restart(&dev
->mii
);
1043 EXPORT_SYMBOL_GPL(usbnet_nway_reset
);
1045 void usbnet_get_drvinfo (struct net_device
*net
, struct ethtool_drvinfo
*info
)
1047 struct usbnet
*dev
= netdev_priv(net
);
1049 strlcpy (info
->driver
, dev
->driver_name
, sizeof info
->driver
);
1050 strlcpy (info
->version
, DRIVER_VERSION
, sizeof info
->version
);
1051 strlcpy (info
->fw_version
, dev
->driver_info
->description
,
1052 sizeof info
->fw_version
);
1053 usb_make_path (dev
->udev
, info
->bus_info
, sizeof info
->bus_info
);
1055 EXPORT_SYMBOL_GPL(usbnet_get_drvinfo
);
1057 u32
usbnet_get_msglevel (struct net_device
*net
)
1059 struct usbnet
*dev
= netdev_priv(net
);
1061 return dev
->msg_enable
;
1063 EXPORT_SYMBOL_GPL(usbnet_get_msglevel
);
1065 void usbnet_set_msglevel (struct net_device
*net
, u32 level
)
1067 struct usbnet
*dev
= netdev_priv(net
);
1069 dev
->msg_enable
= level
;
1071 EXPORT_SYMBOL_GPL(usbnet_set_msglevel
);
1073 /* drivers may override default ethtool_ops in their bind() routine */
1074 static const struct ethtool_ops usbnet_ethtool_ops
= {
1075 .get_link
= usbnet_get_link
,
1076 .nway_reset
= usbnet_nway_reset
,
1077 .get_drvinfo
= usbnet_get_drvinfo
,
1078 .get_msglevel
= usbnet_get_msglevel
,
1079 .set_msglevel
= usbnet_set_msglevel
,
1080 .get_ts_info
= ethtool_op_get_ts_info
,
1081 .get_link_ksettings
= usbnet_get_link_ksettings
,
1082 .set_link_ksettings
= usbnet_set_link_ksettings
,
1085 /*-------------------------------------------------------------------------*/
1087 static void __handle_link_change(struct usbnet
*dev
)
1089 if (!test_bit(EVENT_DEV_OPEN
, &dev
->flags
))
1092 if (!netif_carrier_ok(dev
->net
)) {
1093 /* kill URBs for reading packets to save bus bandwidth */
1094 unlink_urbs(dev
, &dev
->rxq
);
1097 * tx_timeout will unlink URBs for sending packets and
1098 * tx queue is stopped by netcore after link becomes off
1101 /* submitting URBs for reading packets */
1102 tasklet_schedule(&dev
->bh
);
1105 /* hard_mtu or rx_urb_size may change during link change */
1106 usbnet_update_max_qlen(dev
);
1108 clear_bit(EVENT_LINK_CHANGE
, &dev
->flags
);
1111 static void usbnet_set_rx_mode(struct net_device
*net
)
1113 struct usbnet
*dev
= netdev_priv(net
);
1115 usbnet_defer_kevent(dev
, EVENT_SET_RX_MODE
);
1118 static void __handle_set_rx_mode(struct usbnet
*dev
)
1120 if (dev
->driver_info
->set_rx_mode
)
1121 (dev
->driver_info
->set_rx_mode
)(dev
);
1123 clear_bit(EVENT_SET_RX_MODE
, &dev
->flags
);
1126 /* work that cannot be done in interrupt context uses keventd.
1128 * NOTE: with 2.5 we could do more of this using completion callbacks,
1129 * especially now that control transfers can be queued.
1132 usbnet_deferred_kevent (struct work_struct
*work
)
1134 struct usbnet
*dev
=
1135 container_of(work
, struct usbnet
, kevent
);
1138 /* usb_clear_halt() needs a thread context */
1139 if (test_bit (EVENT_TX_HALT
, &dev
->flags
)) {
1140 unlink_urbs (dev
, &dev
->txq
);
1141 status
= usb_autopm_get_interface(dev
->intf
);
1144 status
= usb_clear_halt (dev
->udev
, dev
->out
);
1145 usb_autopm_put_interface(dev
->intf
);
1148 status
!= -ESHUTDOWN
) {
1149 if (netif_msg_tx_err (dev
))
1151 netdev_err(dev
->net
, "can't clear tx halt, status %d\n",
1154 clear_bit (EVENT_TX_HALT
, &dev
->flags
);
1155 if (status
!= -ESHUTDOWN
)
1156 netif_wake_queue (dev
->net
);
1159 if (test_bit (EVENT_RX_HALT
, &dev
->flags
)) {
1160 unlink_urbs (dev
, &dev
->rxq
);
1161 status
= usb_autopm_get_interface(dev
->intf
);
1164 status
= usb_clear_halt (dev
->udev
, dev
->in
);
1165 usb_autopm_put_interface(dev
->intf
);
1168 status
!= -ESHUTDOWN
) {
1169 if (netif_msg_rx_err (dev
))
1171 netdev_err(dev
->net
, "can't clear rx halt, status %d\n",
1174 clear_bit (EVENT_RX_HALT
, &dev
->flags
);
1175 tasklet_schedule (&dev
->bh
);
1179 /* tasklet could resubmit itself forever if memory is tight */
1180 if (test_bit (EVENT_RX_MEMORY
, &dev
->flags
)) {
1181 struct urb
*urb
= NULL
;
1184 if (netif_running (dev
->net
))
1185 urb
= usb_alloc_urb (0, GFP_KERNEL
);
1187 clear_bit (EVENT_RX_MEMORY
, &dev
->flags
);
1189 clear_bit (EVENT_RX_MEMORY
, &dev
->flags
);
1190 status
= usb_autopm_get_interface(dev
->intf
);
1195 if (rx_submit (dev
, urb
, GFP_KERNEL
) == -ENOLINK
)
1197 usb_autopm_put_interface(dev
->intf
);
1200 tasklet_schedule (&dev
->bh
);
1204 if (test_bit (EVENT_LINK_RESET
, &dev
->flags
)) {
1205 const struct driver_info
*info
= dev
->driver_info
;
1208 clear_bit (EVENT_LINK_RESET
, &dev
->flags
);
1209 status
= usb_autopm_get_interface(dev
->intf
);
1212 if(info
->link_reset
&& (retval
= info
->link_reset(dev
)) < 0) {
1213 usb_autopm_put_interface(dev
->intf
);
1215 netdev_info(dev
->net
, "link reset failed (%d) usbnet usb-%s-%s, %s\n",
1217 dev
->udev
->bus
->bus_name
,
1221 usb_autopm_put_interface(dev
->intf
);
1224 /* handle link change from link resetting */
1225 __handle_link_change(dev
);
1228 if (test_bit (EVENT_LINK_CHANGE
, &dev
->flags
))
1229 __handle_link_change(dev
);
1231 if (test_bit (EVENT_SET_RX_MODE
, &dev
->flags
))
1232 __handle_set_rx_mode(dev
);
1236 netdev_dbg(dev
->net
, "kevent done, flags = 0x%lx\n", dev
->flags
);
1239 /*-------------------------------------------------------------------------*/
1241 static void tx_complete (struct urb
*urb
)
1243 struct sk_buff
*skb
= (struct sk_buff
*) urb
->context
;
1244 struct skb_data
*entry
= (struct skb_data
*) skb
->cb
;
1245 struct usbnet
*dev
= entry
->dev
;
1247 if (urb
->status
== 0) {
1248 struct pcpu_sw_netstats
*stats64
= this_cpu_ptr(dev
->stats64
);
1249 unsigned long flags
;
1251 flags
= u64_stats_update_begin_irqsave(&stats64
->syncp
);
1252 stats64
->tx_packets
+= entry
->packets
;
1253 stats64
->tx_bytes
+= entry
->length
;
1254 u64_stats_update_end_irqrestore(&stats64
->syncp
, flags
);
1256 dev
->net
->stats
.tx_errors
++;
1258 switch (urb
->status
) {
1260 usbnet_defer_kevent (dev
, EVENT_TX_HALT
);
1263 /* software-driven interface shutdown */
1264 case -ECONNRESET
: // async unlink
1265 case -ESHUTDOWN
: // hardware gone
1268 /* like rx, tx gets controller i/o faults during hub_wq
1269 * delays and so it uses the same throttling mechanism.
1274 usb_mark_last_busy(dev
->udev
);
1275 if (!timer_pending (&dev
->delay
)) {
1276 mod_timer (&dev
->delay
,
1277 jiffies
+ THROTTLE_JIFFIES
);
1278 netif_dbg(dev
, link
, dev
->net
,
1279 "tx throttle %d\n", urb
->status
);
1281 netif_stop_queue (dev
->net
);
1284 netif_dbg(dev
, tx_err
, dev
->net
,
1285 "tx err %d\n", entry
->urb
->status
);
1290 usb_autopm_put_interface_async(dev
->intf
);
1291 (void) defer_bh(dev
, skb
, &dev
->txq
, tx_done
);
1294 /*-------------------------------------------------------------------------*/
1296 void usbnet_tx_timeout (struct net_device
*net
, unsigned int txqueue
)
1298 struct usbnet
*dev
= netdev_priv(net
);
1300 unlink_urbs (dev
, &dev
->txq
);
1301 tasklet_schedule (&dev
->bh
);
1302 /* this needs to be handled individually because the generic layer
1303 * doesn't know what is sufficient and could not restore private
1304 * information if a remedy of an unconditional reset were used.
1306 if (dev
->driver_info
->recover
)
1307 (dev
->driver_info
->recover
)(dev
);
1309 EXPORT_SYMBOL_GPL(usbnet_tx_timeout
);
1311 /*-------------------------------------------------------------------------*/
1313 static int build_dma_sg(const struct sk_buff
*skb
, struct urb
*urb
)
1315 unsigned num_sgs
, total_len
= 0;
1318 num_sgs
= skb_shinfo(skb
)->nr_frags
+ 1;
1322 /* reserve one for zero packet */
1323 urb
->sg
= kmalloc_array(num_sgs
+ 1, sizeof(struct scatterlist
),
1328 urb
->num_sgs
= num_sgs
;
1329 sg_init_table(urb
->sg
, urb
->num_sgs
+ 1);
1331 sg_set_buf(&urb
->sg
[s
++], skb
->data
, skb_headlen(skb
));
1332 total_len
+= skb_headlen(skb
);
1334 for (i
= 0; i
< skb_shinfo(skb
)->nr_frags
; i
++) {
1335 skb_frag_t
*f
= &skb_shinfo(skb
)->frags
[i
];
1337 total_len
+= skb_frag_size(f
);
1338 sg_set_page(&urb
->sg
[i
+ s
], skb_frag_page(f
), skb_frag_size(f
),
1341 urb
->transfer_buffer_length
= total_len
;
1346 netdev_tx_t
usbnet_start_xmit (struct sk_buff
*skb
,
1347 struct net_device
*net
)
1349 struct usbnet
*dev
= netdev_priv(net
);
1350 unsigned int length
;
1351 struct urb
*urb
= NULL
;
1352 struct skb_data
*entry
;
1353 const struct driver_info
*info
= dev
->driver_info
;
1354 unsigned long flags
;
1358 skb_tx_timestamp(skb
);
1360 // some devices want funky USB-level framing, for
1361 // win32 driver (usually) and/or hardware quirks
1362 if (info
->tx_fixup
) {
1363 skb
= info
->tx_fixup (dev
, skb
, GFP_ATOMIC
);
1365 /* packet collected; minidriver waiting for more */
1366 if (info
->flags
& FLAG_MULTI_PACKET
)
1368 netif_dbg(dev
, tx_err
, dev
->net
, "can't tx_fixup skb\n");
1373 if (!(urb
= usb_alloc_urb (0, GFP_ATOMIC
))) {
1374 netif_dbg(dev
, tx_err
, dev
->net
, "no urb\n");
1378 entry
= (struct skb_data
*) skb
->cb
;
1382 usb_fill_bulk_urb (urb
, dev
->udev
, dev
->out
,
1383 skb
->data
, skb
->len
, tx_complete
, skb
);
1384 if (dev
->can_dma_sg
) {
1385 if (build_dma_sg(skb
, urb
) < 0)
1388 length
= urb
->transfer_buffer_length
;
1390 /* don't assume the hardware handles USB_ZERO_PACKET
1391 * NOTE: strictly conforming cdc-ether devices should expect
1392 * the ZLP here, but ignore the one-byte packet.
1393 * NOTE2: CDC NCM specification is different from CDC ECM when
1394 * handling ZLP/short packets, so cdc_ncm driver will make short
1395 * packet itself if needed.
1397 if (length
% dev
->maxpacket
== 0) {
1398 if (!(info
->flags
& FLAG_SEND_ZLP
)) {
1399 if (!(info
->flags
& FLAG_MULTI_PACKET
)) {
1401 if (skb_tailroom(skb
) && !urb
->num_sgs
) {
1402 skb
->data
[skb
->len
] = 0;
1404 } else if (urb
->num_sgs
)
1405 sg_set_buf(&urb
->sg
[urb
->num_sgs
++],
1406 dev
->padding_pkt
, 1);
1409 urb
->transfer_flags
|= URB_ZERO_PACKET
;
1411 urb
->transfer_buffer_length
= length
;
1413 if (info
->flags
& FLAG_MULTI_PACKET
) {
1414 /* Driver has set number of packets and a length delta.
1415 * Calculate the complete length and ensure that it's
1418 entry
->length
+= length
;
1419 if (WARN_ON_ONCE(entry
->length
<= 0))
1420 entry
->length
= length
;
1422 usbnet_set_skb_tx_stats(skb
, 1, length
);
1425 spin_lock_irqsave(&dev
->txq
.lock
, flags
);
1426 retval
= usb_autopm_get_interface_async(dev
->intf
);
1428 spin_unlock_irqrestore(&dev
->txq
.lock
, flags
);
1431 if (netif_queue_stopped(net
)) {
1432 usb_autopm_put_interface_async(dev
->intf
);
1433 spin_unlock_irqrestore(&dev
->txq
.lock
, flags
);
1438 /* if this triggers the device is still a sleep */
1439 if (test_bit(EVENT_DEV_ASLEEP
, &dev
->flags
)) {
1440 /* transmission will be done in resume */
1441 usb_anchor_urb(urb
, &dev
->deferred
);
1442 /* no use to process more packets */
1443 netif_stop_queue(net
);
1445 spin_unlock_irqrestore(&dev
->txq
.lock
, flags
);
1446 netdev_dbg(dev
->net
, "Delaying transmission for resumption\n");
1451 switch ((retval
= usb_submit_urb (urb
, GFP_ATOMIC
))) {
1453 netif_stop_queue (net
);
1454 usbnet_defer_kevent (dev
, EVENT_TX_HALT
);
1455 usb_autopm_put_interface_async(dev
->intf
);
1458 usb_autopm_put_interface_async(dev
->intf
);
1459 netif_dbg(dev
, tx_err
, dev
->net
,
1460 "tx: submit urb err %d\n", retval
);
1463 netif_trans_update(net
);
1464 __usbnet_queue_skb(&dev
->txq
, skb
, tx_start
);
1465 if (dev
->txq
.qlen
>= TX_QLEN (dev
))
1466 netif_stop_queue (net
);
1468 spin_unlock_irqrestore (&dev
->txq
.lock
, flags
);
1471 netif_dbg(dev
, tx_err
, dev
->net
, "drop, code %d\n", retval
);
1473 dev
->net
->stats
.tx_dropped
++;
1476 dev_kfree_skb_any (skb
);
1482 netif_dbg(dev
, tx_queued
, dev
->net
,
1483 "> tx, len %u, type 0x%x\n", length
, skb
->protocol
);
1487 return NETDEV_TX_OK
;
1489 EXPORT_SYMBOL_GPL(usbnet_start_xmit
);
1491 static int rx_alloc_submit(struct usbnet
*dev
, gfp_t flags
)
1497 /* don't refill the queue all at once */
1498 for (i
= 0; i
< 10 && dev
->rxq
.qlen
< RX_QLEN(dev
); i
++) {
1499 urb
= usb_alloc_urb(0, flags
);
1501 ret
= rx_submit(dev
, urb
, flags
);
1513 /*-------------------------------------------------------------------------*/
1515 // tasklet (work deferred from completions, in_irq) or timer
1517 static void usbnet_bh (struct timer_list
*t
)
1519 struct usbnet
*dev
= from_timer(dev
, t
, delay
);
1520 struct sk_buff
*skb
;
1521 struct skb_data
*entry
;
1523 while ((skb
= skb_dequeue (&dev
->done
))) {
1524 entry
= (struct skb_data
*) skb
->cb
;
1525 switch (entry
->state
) {
1527 entry
->state
= rx_cleanup
;
1528 rx_process (dev
, skb
);
1531 kfree(entry
->urb
->sg
);
1534 usb_free_urb (entry
->urb
);
1535 dev_kfree_skb (skb
);
1538 netdev_dbg(dev
->net
, "bogus skb state %d\n", entry
->state
);
1542 /* restart RX again after disabling due to high error rate */
1543 clear_bit(EVENT_RX_KILL
, &dev
->flags
);
1545 /* waiting for all pending urbs to complete?
1546 * only then can we forgo submitting anew
1548 if (waitqueue_active(&dev
->wait
)) {
1549 if (dev
->txq
.qlen
+ dev
->rxq
.qlen
+ dev
->done
.qlen
== 0)
1550 wake_up_all(&dev
->wait
);
1552 // or are we maybe short a few urbs?
1553 } else if (netif_running (dev
->net
) &&
1554 netif_device_present (dev
->net
) &&
1555 netif_carrier_ok(dev
->net
) &&
1556 !timer_pending(&dev
->delay
) &&
1557 !test_bit(EVENT_RX_PAUSED
, &dev
->flags
) &&
1558 !test_bit(EVENT_RX_HALT
, &dev
->flags
)) {
1559 int temp
= dev
->rxq
.qlen
;
1561 if (temp
< RX_QLEN(dev
)) {
1562 if (rx_alloc_submit(dev
, GFP_ATOMIC
) == -ENOLINK
)
1564 if (temp
!= dev
->rxq
.qlen
)
1565 netif_dbg(dev
, link
, dev
->net
,
1566 "rxqlen %d --> %d\n",
1567 temp
, dev
->rxq
.qlen
);
1568 if (dev
->rxq
.qlen
< RX_QLEN(dev
))
1569 tasklet_schedule (&dev
->bh
);
1571 if (dev
->txq
.qlen
< TX_QLEN (dev
))
1572 netif_wake_queue (dev
->net
);
1576 static void usbnet_bh_tasklet(unsigned long data
)
1578 struct timer_list
*t
= (struct timer_list
*)data
;
1584 /*-------------------------------------------------------------------------
1586 * USB Device Driver support
1588 *-------------------------------------------------------------------------*/
1590 // precondition: never called in_interrupt
1592 void usbnet_disconnect (struct usb_interface
*intf
)
1595 struct usb_device
*xdev
;
1596 struct net_device
*net
;
1598 dev
= usb_get_intfdata(intf
);
1599 usb_set_intfdata(intf
, NULL
);
1603 xdev
= interface_to_usbdev (intf
);
1605 netif_info(dev
, probe
, dev
->net
, "unregister '%s' usb-%s-%s, %s\n",
1606 intf
->dev
.driver
->name
,
1607 xdev
->bus
->bus_name
, xdev
->devpath
,
1608 dev
->driver_info
->description
);
1611 unregister_netdev (net
);
1613 cancel_work_sync(&dev
->kevent
);
1615 usb_scuttle_anchored_urbs(&dev
->deferred
);
1617 if (dev
->driver_info
->unbind
)
1618 dev
->driver_info
->unbind (dev
, intf
);
1620 usb_kill_urb(dev
->interrupt
);
1621 usb_free_urb(dev
->interrupt
);
1622 kfree(dev
->padding_pkt
);
1624 free_percpu(dev
->stats64
);
1627 EXPORT_SYMBOL_GPL(usbnet_disconnect
);
1629 static const struct net_device_ops usbnet_netdev_ops
= {
1630 .ndo_open
= usbnet_open
,
1631 .ndo_stop
= usbnet_stop
,
1632 .ndo_start_xmit
= usbnet_start_xmit
,
1633 .ndo_tx_timeout
= usbnet_tx_timeout
,
1634 .ndo_set_rx_mode
= usbnet_set_rx_mode
,
1635 .ndo_change_mtu
= usbnet_change_mtu
,
1636 .ndo_get_stats64
= usbnet_get_stats64
,
1637 .ndo_set_mac_address
= eth_mac_addr
,
1638 .ndo_validate_addr
= eth_validate_addr
,
1641 /*-------------------------------------------------------------------------*/
1643 // precondition: never called in_interrupt
1645 static struct device_type wlan_type
= {
1649 static struct device_type wwan_type
= {
1654 usbnet_probe (struct usb_interface
*udev
, const struct usb_device_id
*prod
)
1657 struct net_device
*net
;
1658 struct usb_host_interface
*interface
;
1659 const struct driver_info
*info
;
1660 struct usb_device
*xdev
;
1663 struct usb_driver
*driver
= to_usb_driver(udev
->dev
.driver
);
1665 /* usbnet already took usb runtime pm, so have to enable the feature
1666 * for usb interface, otherwise usb_autopm_get_interface may return
1667 * failure if RUNTIME_PM is enabled.
1669 if (!driver
->supports_autosuspend
) {
1670 driver
->supports_autosuspend
= 1;
1671 pm_runtime_enable(&udev
->dev
);
1674 name
= udev
->dev
.driver
->name
;
1675 info
= (const struct driver_info
*) prod
->driver_info
;
1677 dev_dbg (&udev
->dev
, "blacklisted by %s\n", name
);
1680 xdev
= interface_to_usbdev (udev
);
1681 interface
= udev
->cur_altsetting
;
1685 // set up our own records
1686 net
= alloc_etherdev(sizeof(*dev
));
1690 /* netdev_printk() needs this so do it as early as possible */
1691 SET_NETDEV_DEV(net
, &udev
->dev
);
1693 dev
= netdev_priv(net
);
1696 dev
->driver_info
= info
;
1697 dev
->driver_name
= name
;
1699 dev
->stats64
= netdev_alloc_pcpu_stats(struct pcpu_sw_netstats
);
1703 dev
->msg_enable
= netif_msg_init (msg_level
, NETIF_MSG_DRV
1704 | NETIF_MSG_PROBE
| NETIF_MSG_LINK
);
1705 init_waitqueue_head(&dev
->wait
);
1706 skb_queue_head_init (&dev
->rxq
);
1707 skb_queue_head_init (&dev
->txq
);
1708 skb_queue_head_init (&dev
->done
);
1709 skb_queue_head_init(&dev
->rxq_pause
);
1710 dev
->bh
.func
= usbnet_bh_tasklet
;
1711 dev
->bh
.data
= (unsigned long)&dev
->delay
;
1712 INIT_WORK (&dev
->kevent
, usbnet_deferred_kevent
);
1713 init_usb_anchor(&dev
->deferred
);
1714 timer_setup(&dev
->delay
, usbnet_bh
, 0);
1715 mutex_init (&dev
->phy_mutex
);
1716 mutex_init(&dev
->interrupt_mutex
);
1717 dev
->interrupt_count
= 0;
1720 strcpy (net
->name
, "usb%d");
1721 memcpy (net
->dev_addr
, node_id
, sizeof node_id
);
1723 /* rx and tx sides can use different message sizes;
1724 * bind() should set rx_urb_size in that case.
1726 dev
->hard_mtu
= net
->mtu
+ net
->hard_header_len
;
1728 net
->max_mtu
= ETH_MAX_MTU
;
1730 net
->netdev_ops
= &usbnet_netdev_ops
;
1731 net
->watchdog_timeo
= TX_TIMEOUT_JIFFIES
;
1732 net
->ethtool_ops
= &usbnet_ethtool_ops
;
1734 // allow device-specific bind/init procedures
1735 // NOTE net->name still not usable ...
1737 status
= info
->bind (dev
, udev
);
1741 // heuristic: "usb%d" for links we know are two-host,
1742 // else "eth%d" when there's reasonable doubt. userspace
1743 // can rename the link if it knows better.
1744 if ((dev
->driver_info
->flags
& FLAG_ETHER
) != 0 &&
1745 ((dev
->driver_info
->flags
& FLAG_POINTTOPOINT
) == 0 ||
1746 (net
->dev_addr
[0] & 0x02) == 0))
1747 strcpy (net
->name
, "eth%d");
1748 /* WLAN devices should always be named "wlan%d" */
1749 if ((dev
->driver_info
->flags
& FLAG_WLAN
) != 0)
1750 strcpy(net
->name
, "wlan%d");
1751 /* WWAN devices should always be named "wwan%d" */
1752 if ((dev
->driver_info
->flags
& FLAG_WWAN
) != 0)
1753 strcpy(net
->name
, "wwan%d");
1755 /* devices that cannot do ARP */
1756 if ((dev
->driver_info
->flags
& FLAG_NOARP
) != 0)
1757 net
->flags
|= IFF_NOARP
;
1759 /* maybe the remote can't receive an Ethernet MTU */
1760 if (net
->mtu
> (dev
->hard_mtu
- net
->hard_header_len
))
1761 net
->mtu
= dev
->hard_mtu
- net
->hard_header_len
;
1762 } else if (!info
->in
|| !info
->out
)
1763 status
= usbnet_get_endpoints (dev
, udev
);
1765 dev
->in
= usb_rcvbulkpipe (xdev
, info
->in
);
1766 dev
->out
= usb_sndbulkpipe (xdev
, info
->out
);
1767 if (!(info
->flags
& FLAG_NO_SETINT
))
1768 status
= usb_set_interface (xdev
,
1769 interface
->desc
.bInterfaceNumber
,
1770 interface
->desc
.bAlternateSetting
);
1775 if (status
>= 0 && dev
->status
)
1776 status
= init_status (dev
, udev
);
1780 if (!dev
->rx_urb_size
)
1781 dev
->rx_urb_size
= dev
->hard_mtu
;
1782 dev
->maxpacket
= usb_maxpacket (dev
->udev
, dev
->out
, 1);
1784 /* let userspace know we have a random address */
1785 if (ether_addr_equal(net
->dev_addr
, node_id
))
1786 net
->addr_assign_type
= NET_ADDR_RANDOM
;
1788 if ((dev
->driver_info
->flags
& FLAG_WLAN
) != 0)
1789 SET_NETDEV_DEVTYPE(net
, &wlan_type
);
1790 if ((dev
->driver_info
->flags
& FLAG_WWAN
) != 0)
1791 SET_NETDEV_DEVTYPE(net
, &wwan_type
);
1793 /* initialize max rx_qlen and tx_qlen */
1794 usbnet_update_max_qlen(dev
);
1796 if (dev
->can_dma_sg
&& !(info
->flags
& FLAG_SEND_ZLP
) &&
1797 !(info
->flags
& FLAG_MULTI_PACKET
)) {
1798 dev
->padding_pkt
= kzalloc(1, GFP_KERNEL
);
1799 if (!dev
->padding_pkt
) {
1805 status
= register_netdev (net
);
1808 netif_info(dev
, probe
, dev
->net
,
1809 "register '%s' at usb-%s-%s, %s, %pM\n",
1810 udev
->dev
.driver
->name
,
1811 xdev
->bus
->bus_name
, xdev
->devpath
,
1812 dev
->driver_info
->description
,
1815 // ok, it's ready to go.
1816 usb_set_intfdata (udev
, dev
);
1818 netif_device_attach (net
);
1820 if (dev
->driver_info
->flags
& FLAG_LINK_INTR
)
1821 usbnet_link_change(dev
, 0, 0);
1826 kfree(dev
->padding_pkt
);
1828 usb_free_urb(dev
->interrupt
);
1831 info
->unbind (dev
, udev
);
1833 /* subdrivers must undo all they did in bind() if they
1834 * fail it, but we may fail later and a deferred kevent
1835 * may trigger an error resubmitting itself and, worse,
1836 * schedule a timer. So we kill it all just in case.
1838 cancel_work_sync(&dev
->kevent
);
1839 del_timer_sync(&dev
->delay
);
1840 free_percpu(dev
->stats64
);
1846 EXPORT_SYMBOL_GPL(usbnet_probe
);
1848 /*-------------------------------------------------------------------------*/
1851 * suspend the whole driver as soon as the first interface is suspended
1852 * resume only when the last interface is resumed
1855 int usbnet_suspend (struct usb_interface
*intf
, pm_message_t message
)
1857 struct usbnet
*dev
= usb_get_intfdata(intf
);
1859 if (!dev
->suspend_count
++) {
1860 spin_lock_irq(&dev
->txq
.lock
);
1861 /* don't autosuspend while transmitting */
1862 if (dev
->txq
.qlen
&& PMSG_IS_AUTO(message
)) {
1863 dev
->suspend_count
--;
1864 spin_unlock_irq(&dev
->txq
.lock
);
1867 set_bit(EVENT_DEV_ASLEEP
, &dev
->flags
);
1868 spin_unlock_irq(&dev
->txq
.lock
);
1871 * accelerate emptying of the rx and queues, to avoid
1872 * having everything error out.
1874 netif_device_detach (dev
->net
);
1875 usbnet_terminate_urbs(dev
);
1876 __usbnet_status_stop_force(dev
);
1879 * reattach so runtime management can use and
1882 netif_device_attach (dev
->net
);
1886 EXPORT_SYMBOL_GPL(usbnet_suspend
);
1888 int usbnet_resume (struct usb_interface
*intf
)
1890 struct usbnet
*dev
= usb_get_intfdata(intf
);
1891 struct sk_buff
*skb
;
1895 if (!--dev
->suspend_count
) {
1896 /* resume interrupt URB if it was previously submitted */
1897 __usbnet_status_start_force(dev
, GFP_NOIO
);
1899 spin_lock_irq(&dev
->txq
.lock
);
1900 while ((res
= usb_get_from_anchor(&dev
->deferred
))) {
1902 skb
= (struct sk_buff
*)res
->context
;
1903 retval
= usb_submit_urb(res
, GFP_ATOMIC
);
1905 dev_kfree_skb_any(skb
);
1908 usb_autopm_put_interface_async(dev
->intf
);
1910 netif_trans_update(dev
->net
);
1911 __skb_queue_tail(&dev
->txq
, skb
);
1916 clear_bit(EVENT_DEV_ASLEEP
, &dev
->flags
);
1917 spin_unlock_irq(&dev
->txq
.lock
);
1919 if (test_bit(EVENT_DEV_OPEN
, &dev
->flags
)) {
1920 /* handle remote wakeup ASAP
1921 * we cannot race against stop
1923 if (netif_device_present(dev
->net
) &&
1924 !timer_pending(&dev
->delay
) &&
1925 !test_bit(EVENT_RX_HALT
, &dev
->flags
))
1926 rx_alloc_submit(dev
, GFP_NOIO
);
1928 if (!(dev
->txq
.qlen
>= TX_QLEN(dev
)))
1929 netif_tx_wake_all_queues(dev
->net
);
1930 tasklet_schedule (&dev
->bh
);
1934 if (test_and_clear_bit(EVENT_DEVICE_REPORT_IDLE
, &dev
->flags
))
1935 usb_autopm_get_interface_no_resume(intf
);
1939 EXPORT_SYMBOL_GPL(usbnet_resume
);
1942 * Either a subdriver implements manage_power, then it is assumed to always
1943 * be ready to be suspended or it reports the readiness to be suspended
1946 void usbnet_device_suggests_idle(struct usbnet
*dev
)
1948 if (!test_and_set_bit(EVENT_DEVICE_REPORT_IDLE
, &dev
->flags
)) {
1949 dev
->intf
->needs_remote_wakeup
= 1;
1950 usb_autopm_put_interface_async(dev
->intf
);
1953 EXPORT_SYMBOL(usbnet_device_suggests_idle
);
1956 * For devices that can do without special commands
1958 int usbnet_manage_power(struct usbnet
*dev
, int on
)
1960 dev
->intf
->needs_remote_wakeup
= on
;
1963 EXPORT_SYMBOL(usbnet_manage_power
);
1965 void usbnet_link_change(struct usbnet
*dev
, bool link
, bool need_reset
)
1967 /* update link after link is reseted */
1968 if (link
&& !need_reset
)
1969 netif_carrier_on(dev
->net
);
1971 netif_carrier_off(dev
->net
);
1973 if (need_reset
&& link
)
1974 usbnet_defer_kevent(dev
, EVENT_LINK_RESET
);
1976 usbnet_defer_kevent(dev
, EVENT_LINK_CHANGE
);
1978 EXPORT_SYMBOL(usbnet_link_change
);
1980 /*-------------------------------------------------------------------------*/
1981 static int __usbnet_read_cmd(struct usbnet
*dev
, u8 cmd
, u8 reqtype
,
1982 u16 value
, u16 index
, void *data
, u16 size
)
1987 netdev_dbg(dev
->net
, "usbnet_read_cmd cmd=0x%02x reqtype=%02x"
1988 " value=0x%04x index=0x%04x size=%d\n",
1989 cmd
, reqtype
, value
, index
, size
);
1992 buf
= kmalloc(size
, GFP_KERNEL
);
1997 err
= usb_control_msg(dev
->udev
, usb_rcvctrlpipe(dev
->udev
, 0),
1998 cmd
, reqtype
, value
, index
, buf
, size
,
1999 USB_CTRL_GET_TIMEOUT
);
2000 if (err
> 0 && err
<= size
) {
2002 memcpy(data
, buf
, err
);
2004 netdev_dbg(dev
->net
,
2005 "Huh? Data requested but thrown away.\n");
2012 static int __usbnet_write_cmd(struct usbnet
*dev
, u8 cmd
, u8 reqtype
,
2013 u16 value
, u16 index
, const void *data
,
2019 netdev_dbg(dev
->net
, "usbnet_write_cmd cmd=0x%02x reqtype=%02x"
2020 " value=0x%04x index=0x%04x size=%d\n",
2021 cmd
, reqtype
, value
, index
, size
);
2024 buf
= kmemdup(data
, size
, GFP_KERNEL
);
2035 err
= usb_control_msg(dev
->udev
, usb_sndctrlpipe(dev
->udev
, 0),
2036 cmd
, reqtype
, value
, index
, buf
, size
,
2037 USB_CTRL_SET_TIMEOUT
);
2045 * The function can't be called inside suspend/resume callback,
2046 * otherwise deadlock will be caused.
2048 int usbnet_read_cmd(struct usbnet
*dev
, u8 cmd
, u8 reqtype
,
2049 u16 value
, u16 index
, void *data
, u16 size
)
2053 if (usb_autopm_get_interface(dev
->intf
) < 0)
2055 ret
= __usbnet_read_cmd(dev
, cmd
, reqtype
, value
, index
,
2057 usb_autopm_put_interface(dev
->intf
);
2060 EXPORT_SYMBOL_GPL(usbnet_read_cmd
);
2063 * The function can't be called inside suspend/resume callback,
2064 * otherwise deadlock will be caused.
2066 int usbnet_write_cmd(struct usbnet
*dev
, u8 cmd
, u8 reqtype
,
2067 u16 value
, u16 index
, const void *data
, u16 size
)
2071 if (usb_autopm_get_interface(dev
->intf
) < 0)
2073 ret
= __usbnet_write_cmd(dev
, cmd
, reqtype
, value
, index
,
2075 usb_autopm_put_interface(dev
->intf
);
2078 EXPORT_SYMBOL_GPL(usbnet_write_cmd
);
2081 * The function can be called inside suspend/resume callback safely
2082 * and should only be called by suspend/resume callback generally.
2084 int usbnet_read_cmd_nopm(struct usbnet
*dev
, u8 cmd
, u8 reqtype
,
2085 u16 value
, u16 index
, void *data
, u16 size
)
2087 return __usbnet_read_cmd(dev
, cmd
, reqtype
, value
, index
,
2090 EXPORT_SYMBOL_GPL(usbnet_read_cmd_nopm
);
2093 * The function can be called inside suspend/resume callback safely
2094 * and should only be called by suspend/resume callback generally.
2096 int usbnet_write_cmd_nopm(struct usbnet
*dev
, u8 cmd
, u8 reqtype
,
2097 u16 value
, u16 index
, const void *data
,
2100 return __usbnet_write_cmd(dev
, cmd
, reqtype
, value
, index
,
2103 EXPORT_SYMBOL_GPL(usbnet_write_cmd_nopm
);
2105 static void usbnet_async_cmd_cb(struct urb
*urb
)
2107 struct usb_ctrlrequest
*req
= (struct usb_ctrlrequest
*)urb
->context
;
2108 int status
= urb
->status
;
2111 dev_dbg(&urb
->dev
->dev
, "%s failed with %d",
2119 * The caller must make sure that device can't be put into suspend
2120 * state until the control URB completes.
2122 int usbnet_write_cmd_async(struct usbnet
*dev
, u8 cmd
, u8 reqtype
,
2123 u16 value
, u16 index
, const void *data
, u16 size
)
2125 struct usb_ctrlrequest
*req
= NULL
;
2130 netdev_dbg(dev
->net
, "usbnet_write_cmd cmd=0x%02x reqtype=%02x"
2131 " value=0x%04x index=0x%04x size=%d\n",
2132 cmd
, reqtype
, value
, index
, size
);
2134 urb
= usb_alloc_urb(0, GFP_ATOMIC
);
2139 buf
= kmemdup(data
, size
, GFP_ATOMIC
);
2141 netdev_err(dev
->net
, "Error allocating buffer"
2142 " in %s!\n", __func__
);
2147 req
= kmalloc(sizeof(struct usb_ctrlrequest
), GFP_ATOMIC
);
2151 req
->bRequestType
= reqtype
;
2152 req
->bRequest
= cmd
;
2153 req
->wValue
= cpu_to_le16(value
);
2154 req
->wIndex
= cpu_to_le16(index
);
2155 req
->wLength
= cpu_to_le16(size
);
2157 usb_fill_control_urb(urb
, dev
->udev
,
2158 usb_sndctrlpipe(dev
->udev
, 0),
2159 (void *)req
, buf
, size
,
2160 usbnet_async_cmd_cb
, req
);
2161 urb
->transfer_flags
|= URB_FREE_BUFFER
;
2163 err
= usb_submit_urb(urb
, GFP_ATOMIC
);
2165 netdev_err(dev
->net
, "Error submitting the control"
2166 " message: status=%d\n", err
);
2180 EXPORT_SYMBOL_GPL(usbnet_write_cmd_async
);
2181 /*-------------------------------------------------------------------------*/
2183 static int __init
usbnet_init(void)
2185 /* Compiler should optimize this out. */
2187 sizeof_field(struct sk_buff
, cb
) < sizeof(struct skb_data
));
2189 eth_random_addr(node_id
);
2192 module_init(usbnet_init
);
2194 static void __exit
usbnet_exit(void)
2197 module_exit(usbnet_exit
);
2199 MODULE_AUTHOR("David Brownell");
2200 MODULE_DESCRIPTION("USB network driver framework");
2201 MODULE_LICENSE("GPL");