1  // SPDX-License-Identifier: GPL-2.0-or-later
2  /*
3   * USB Network driver infrastructure
4   * Copyright (C) 2000-2005 by David Brownell
5   * Copyright (C) 2003-2005 David Hollis <dhollis@davehollis.com>
6   */
7  
8  /*
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.
12   *
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.
18   */
19  
20  #include <linux/module.h>
21  #include <linux/init.h>
22  #include <linux/netdevice.h>
23  #include <linux/etherdevice.h>
24  #include <linux/ctype.h>
25  #include <linux/ethtool.h>
26  #include <linux/workqueue.h>
27  #include <linux/mii.h>
28  #include <linux/usb.h>
29  #include <linux/usb/usbnet.h>
30  #include <linux/slab.h>
31  #include <linux/kernel.h>
32  #include <linux/pm_runtime.h>
33  
34  /*-------------------------------------------------------------------------*/
35  
36  /*
37   * Nineteen USB 1.1 max size bulk transactions per frame (ms), max.
38   * Several dozen bytes of IPv4 data can fit in two such transactions.
39   * One maximum size Ethernet packet takes twenty four of them.
40   * For high speed, each frame comfortably fits almost 36 max size
41   * Ethernet packets (so queues should be bigger).
42   *
43   * The goal is to let the USB host controller be busy for 5msec or
44   * more before an irq is required, under load.  Jumbograms change
45   * the equation.
46   */
47  #define	MAX_QUEUE_MEMORY	(60 * 1518)
48  #define	RX_QLEN(dev)		((dev)->rx_qlen)
49  #define	TX_QLEN(dev)		((dev)->tx_qlen)
50  
51  // reawaken network queue this soon after stopping; else watchdog barks
52  #define TX_TIMEOUT_JIFFIES	(5*HZ)
53  
54  /* throttle rx/tx briefly after some faults, so hub_wq might disconnect()
55   * us (it polls at HZ/4 usually) before we report too many false errors.
56   */
57  #define THROTTLE_JIFFIES	(HZ/8)
58  
59  // between wakeups
60  #define UNLINK_TIMEOUT_MS	3
61  
62  /*-------------------------------------------------------------------------*/
63  
64  /* use ethtool to change the level for any given device */
65  static int msg_level = -1;
66  module_param (msg_level, int, 0);
67  MODULE_PARM_DESC (msg_level, "Override default message level");
68  
69  /*-------------------------------------------------------------------------*/
70  
71  static const char * const usbnet_event_names[] = {
72  	[EVENT_TX_HALT]		   = "EVENT_TX_HALT",
73  	[EVENT_RX_HALT]		   = "EVENT_RX_HALT",
74  	[EVENT_RX_MEMORY]	   = "EVENT_RX_MEMORY",
75  	[EVENT_STS_SPLIT]	   = "EVENT_STS_SPLIT",
76  	[EVENT_LINK_RESET]	   = "EVENT_LINK_RESET",
77  	[EVENT_RX_PAUSED]	   = "EVENT_RX_PAUSED",
78  	[EVENT_DEV_ASLEEP]	   = "EVENT_DEV_ASLEEP",
79  	[EVENT_DEV_OPEN]	   = "EVENT_DEV_OPEN",
80  	[EVENT_DEVICE_REPORT_IDLE] = "EVENT_DEVICE_REPORT_IDLE",
81  	[EVENT_NO_RUNTIME_PM]	   = "EVENT_NO_RUNTIME_PM",
82  	[EVENT_RX_KILL]		   = "EVENT_RX_KILL",
83  	[EVENT_LINK_CHANGE]	   = "EVENT_LINK_CHANGE",
84  	[EVENT_SET_RX_MODE]	   = "EVENT_SET_RX_MODE",
85  	[EVENT_NO_IP_ALIGN]	   = "EVENT_NO_IP_ALIGN",
86  };
87  
88  /* handles CDC Ethernet and many other network "bulk data" interfaces */
usbnet_get_endpoints(struct usbnet * dev,struct usb_interface * intf)89  int usbnet_get_endpoints(struct usbnet *dev, struct usb_interface *intf)
90  {
91  	int				tmp;
92  	struct usb_host_interface	*alt = NULL;
93  	struct usb_host_endpoint	*in = NULL, *out = NULL;
94  	struct usb_host_endpoint	*status = NULL;
95  
96  	for (tmp = 0; tmp < intf->num_altsetting; tmp++) {
97  		unsigned	ep;
98  
99  		in = out = status = NULL;
100  		alt = intf->altsetting + tmp;
101  
102  		/* take the first altsetting with in-bulk + out-bulk;
103  		 * remember any status endpoint, just in case;
104  		 * ignore other endpoints and altsettings.
105  		 */
106  		for (ep = 0; ep < alt->desc.bNumEndpoints; ep++) {
107  			struct usb_host_endpoint	*e;
108  			int				intr = 0;
109  
110  			e = alt->endpoint + ep;
111  
112  			/* ignore endpoints which cannot transfer data */
113  			if (!usb_endpoint_maxp(&e->desc))
114  				continue;
115  
116  			switch (e->desc.bmAttributes) {
117  			case USB_ENDPOINT_XFER_INT:
118  				if (!usb_endpoint_dir_in(&e->desc))
119  					continue;
120  				intr = 1;
121  				fallthrough;
122  			case USB_ENDPOINT_XFER_BULK:
123  				break;
124  			default:
125  				continue;
126  			}
127  			if (usb_endpoint_dir_in(&e->desc)) {
128  				if (!intr && !in)
129  					in = e;
130  				else if (intr && !status)
131  					status = e;
132  			} else {
133  				if (!out)
134  					out = e;
135  			}
136  		}
137  		if (in && out)
138  			break;
139  	}
140  	if (!alt || !in || !out)
141  		return -EINVAL;
142  
143  	if (alt->desc.bAlternateSetting != 0 ||
144  	    !(dev->driver_info->flags & FLAG_NO_SETINT)) {
145  		tmp = usb_set_interface (dev->udev, alt->desc.bInterfaceNumber,
146  				alt->desc.bAlternateSetting);
147  		if (tmp < 0)
148  			return tmp;
149  	}
150  
151  	dev->in = usb_rcvbulkpipe (dev->udev,
152  			in->desc.bEndpointAddress & USB_ENDPOINT_NUMBER_MASK);
153  	dev->out = usb_sndbulkpipe (dev->udev,
154  			out->desc.bEndpointAddress & USB_ENDPOINT_NUMBER_MASK);
155  	dev->status = status;
156  	return 0;
157  }
158  EXPORT_SYMBOL_GPL(usbnet_get_endpoints);
159  
usbnet_get_ethernet_addr(struct usbnet * dev,int iMACAddress)160  int usbnet_get_ethernet_addr(struct usbnet *dev, int iMACAddress)
161  {
162  	u8		addr[ETH_ALEN];
163  	int 		tmp = -1, ret;
164  	unsigned char	buf [13];
165  
166  	ret = usb_string(dev->udev, iMACAddress, buf, sizeof buf);
167  	if (ret == 12)
168  		tmp = hex2bin(addr, buf, 6);
169  	if (tmp < 0) {
170  		dev_dbg(&dev->udev->dev,
171  			"bad MAC string %d fetch, %d\n", iMACAddress, tmp);
172  		if (ret >= 0)
173  			ret = -EINVAL;
174  		return ret;
175  	}
176  	eth_hw_addr_set(dev->net, addr);
177  	return 0;
178  }
179  EXPORT_SYMBOL_GPL(usbnet_get_ethernet_addr);
180  
intr_complete(struct urb * urb)181  static void intr_complete (struct urb *urb)
182  {
183  	struct usbnet	*dev = urb->context;
184  	int		status = urb->status;
185  
186  	switch (status) {
187  	/* success */
188  	case 0:
189  		dev->driver_info->status(dev, urb);
190  		break;
191  
192  	/* software-driven interface shutdown */
193  	case -ENOENT:		/* urb killed */
194  	case -ESHUTDOWN:	/* hardware gone */
195  		netif_dbg(dev, ifdown, dev->net,
196  			  "intr shutdown, code %d\n", status);
197  		return;
198  
199  	/* NOTE:  not throttling like RX/TX, since this endpoint
200  	 * already polls infrequently
201  	 */
202  	default:
203  		netdev_dbg(dev->net, "intr status %d\n", status);
204  		break;
205  	}
206  
207  	status = usb_submit_urb (urb, GFP_ATOMIC);
208  	if (status != 0)
209  		netif_err(dev, timer, dev->net,
210  			  "intr resubmit --> %d\n", status);
211  }
212  
init_status(struct usbnet * dev,struct usb_interface * intf)213  static int init_status (struct usbnet *dev, struct usb_interface *intf)
214  {
215  	char		*buf = NULL;
216  	unsigned	pipe = 0;
217  	unsigned	maxp;
218  	unsigned	period;
219  
220  	if (!dev->driver_info->status)
221  		return 0;
222  
223  	pipe = usb_rcvintpipe (dev->udev,
224  			dev->status->desc.bEndpointAddress
225  				& USB_ENDPOINT_NUMBER_MASK);
226  	maxp = usb_maxpacket(dev->udev, pipe);
227  
228  	/* avoid 1 msec chatter:  min 8 msec poll rate */
229  	period = max ((int) dev->status->desc.bInterval,
230  		(dev->udev->speed == USB_SPEED_HIGH) ? 7 : 3);
231  
232  	buf = kmalloc (maxp, GFP_KERNEL);
233  	if (buf) {
234  		dev->interrupt = usb_alloc_urb (0, GFP_KERNEL);
235  		if (!dev->interrupt) {
236  			kfree (buf);
237  			return -ENOMEM;
238  		} else {
239  			usb_fill_int_urb(dev->interrupt, dev->udev, pipe,
240  				buf, maxp, intr_complete, dev, period);
241  			dev->interrupt->transfer_flags |= URB_FREE_BUFFER;
242  			dev_dbg(&intf->dev,
243  				"status ep%din, %d bytes period %d\n",
244  				usb_pipeendpoint(pipe), maxp, period);
245  		}
246  	}
247  	return 0;
248  }
249  
250  /* Submit the interrupt URB if not previously submitted, increasing refcount */
usbnet_status_start(struct usbnet * dev,gfp_t mem_flags)251  int usbnet_status_start(struct usbnet *dev, gfp_t mem_flags)
252  {
253  	int ret = 0;
254  
255  	WARN_ON_ONCE(dev->interrupt == NULL);
256  	if (dev->interrupt) {
257  		mutex_lock(&dev->interrupt_mutex);
258  
259  		if (++dev->interrupt_count == 1)
260  			ret = usb_submit_urb(dev->interrupt, mem_flags);
261  
262  		dev_dbg(&dev->udev->dev, "incremented interrupt URB count to %d\n",
263  			dev->interrupt_count);
264  		mutex_unlock(&dev->interrupt_mutex);
265  	}
266  	return ret;
267  }
268  EXPORT_SYMBOL_GPL(usbnet_status_start);
269  
270  /* For resume; submit interrupt URB if previously submitted */
__usbnet_status_start_force(struct usbnet * dev,gfp_t mem_flags)271  static int __usbnet_status_start_force(struct usbnet *dev, gfp_t mem_flags)
272  {
273  	int ret = 0;
274  
275  	mutex_lock(&dev->interrupt_mutex);
276  	if (dev->interrupt_count) {
277  		ret = usb_submit_urb(dev->interrupt, mem_flags);
278  		dev_dbg(&dev->udev->dev,
279  			"submitted interrupt URB for resume\n");
280  	}
281  	mutex_unlock(&dev->interrupt_mutex);
282  	return ret;
283  }
284  
285  /* Kill the interrupt URB if all submitters want it killed */
usbnet_status_stop(struct usbnet * dev)286  void usbnet_status_stop(struct usbnet *dev)
287  {
288  	if (dev->interrupt) {
289  		mutex_lock(&dev->interrupt_mutex);
290  		WARN_ON(dev->interrupt_count == 0);
291  
292  		if (dev->interrupt_count && --dev->interrupt_count == 0)
293  			usb_kill_urb(dev->interrupt);
294  
295  		dev_dbg(&dev->udev->dev,
296  			"decremented interrupt URB count to %d\n",
297  			dev->interrupt_count);
298  		mutex_unlock(&dev->interrupt_mutex);
299  	}
300  }
301  EXPORT_SYMBOL_GPL(usbnet_status_stop);
302  
303  /* For suspend; always kill interrupt URB */
__usbnet_status_stop_force(struct usbnet * dev)304  static void __usbnet_status_stop_force(struct usbnet *dev)
305  {
306  	if (dev->interrupt) {
307  		mutex_lock(&dev->interrupt_mutex);
308  		usb_kill_urb(dev->interrupt);
309  		dev_dbg(&dev->udev->dev, "killed interrupt URB for suspend\n");
310  		mutex_unlock(&dev->interrupt_mutex);
311  	}
312  }
313  
314  /* Passes this packet up the stack, updating its accounting.
315   * Some link protocols batch packets, so their rx_fixup paths
316   * can return clones as well as just modify the original skb.
317   */
usbnet_skb_return(struct usbnet * dev,struct sk_buff * skb)318  void usbnet_skb_return (struct usbnet *dev, struct sk_buff *skb)
319  {
320  	struct pcpu_sw_netstats *stats64 = this_cpu_ptr(dev->net->tstats);
321  	unsigned long flags;
322  	int	status;
323  
324  	if (test_bit(EVENT_RX_PAUSED, &dev->flags)) {
325  		skb_queue_tail(&dev->rxq_pause, skb);
326  		return;
327  	}
328  
329  	/* only update if unset to allow minidriver rx_fixup override */
330  	if (skb->protocol == 0)
331  		skb->protocol = eth_type_trans (skb, dev->net);
332  
333  	flags = u64_stats_update_begin_irqsave(&stats64->syncp);
334  	u64_stats_inc(&stats64->rx_packets);
335  	u64_stats_add(&stats64->rx_bytes, skb->len);
336  	u64_stats_update_end_irqrestore(&stats64->syncp, flags);
337  
338  	netif_dbg(dev, rx_status, dev->net, "< rx, len %zu, type 0x%x\n",
339  		  skb->len + sizeof (struct ethhdr), skb->protocol);
340  	memset (skb->cb, 0, sizeof (struct skb_data));
341  
342  	if (skb_defer_rx_timestamp(skb))
343  		return;
344  
345  	status = netif_rx (skb);
346  	if (status != NET_RX_SUCCESS)
347  		netif_dbg(dev, rx_err, dev->net,
348  			  "netif_rx status %d\n", status);
349  }
350  EXPORT_SYMBOL_GPL(usbnet_skb_return);
351  
352  /* must be called if hard_mtu or rx_urb_size changed */
usbnet_update_max_qlen(struct usbnet * dev)353  void usbnet_update_max_qlen(struct usbnet *dev)
354  {
355  	enum usb_device_speed speed = dev->udev->speed;
356  
357  	if (!dev->rx_urb_size || !dev->hard_mtu)
358  		goto insanity;
359  	switch (speed) {
360  	case USB_SPEED_HIGH:
361  		dev->rx_qlen = MAX_QUEUE_MEMORY / dev->rx_urb_size;
362  		dev->tx_qlen = MAX_QUEUE_MEMORY / dev->hard_mtu;
363  		break;
364  	case USB_SPEED_SUPER:
365  	case USB_SPEED_SUPER_PLUS:
366  		/*
367  		 * Not take default 5ms qlen for super speed HC to
368  		 * save memory, and iperf tests show 2.5ms qlen can
369  		 * work well
370  		 */
371  		dev->rx_qlen = 5 * MAX_QUEUE_MEMORY / dev->rx_urb_size;
372  		dev->tx_qlen = 5 * MAX_QUEUE_MEMORY / dev->hard_mtu;
373  		break;
374  	default:
375  insanity:
376  		dev->rx_qlen = dev->tx_qlen = 4;
377  	}
378  }
379  EXPORT_SYMBOL_GPL(usbnet_update_max_qlen);
380  
381  
382  /*-------------------------------------------------------------------------
383   *
384   * Network Device Driver (peer link to "Host Device", from USB host)
385   *
386   *-------------------------------------------------------------------------*/
387  
usbnet_change_mtu(struct net_device * net,int new_mtu)388  int usbnet_change_mtu (struct net_device *net, int new_mtu)
389  {
390  	struct usbnet	*dev = netdev_priv(net);
391  	int		ll_mtu = new_mtu + net->hard_header_len;
392  	int		old_hard_mtu = dev->hard_mtu;
393  	int		old_rx_urb_size = dev->rx_urb_size;
394  
395  	// no second zero-length packet read wanted after mtu-sized packets
396  	if ((ll_mtu % dev->maxpacket) == 0)
397  		return -EDOM;
398  	WRITE_ONCE(net->mtu, new_mtu);
399  
400  	dev->hard_mtu = net->mtu + net->hard_header_len;
401  	if (dev->rx_urb_size == old_hard_mtu) {
402  		dev->rx_urb_size = dev->hard_mtu;
403  		if (dev->rx_urb_size > old_rx_urb_size) {
404  			usbnet_pause_rx(dev);
405  			usbnet_unlink_rx_urbs(dev);
406  			usbnet_resume_rx(dev);
407  		}
408  	}
409  
410  	/* max qlen depend on hard_mtu and rx_urb_size */
411  	usbnet_update_max_qlen(dev);
412  
413  	return 0;
414  }
415  EXPORT_SYMBOL_GPL(usbnet_change_mtu);
416  
417  /* The caller must hold list->lock */
__usbnet_queue_skb(struct sk_buff_head * list,struct sk_buff * newsk,enum skb_state state)418  static void __usbnet_queue_skb(struct sk_buff_head *list,
419  			struct sk_buff *newsk, enum skb_state state)
420  {
421  	struct skb_data *entry = (struct skb_data *) newsk->cb;
422  
423  	__skb_queue_tail(list, newsk);
424  	entry->state = state;
425  }
426  
427  /*-------------------------------------------------------------------------*/
428  
429  /* some LK 2.4 HCDs oopsed if we freed or resubmitted urbs from
430   * completion callbacks.  2.5 should have fixed those bugs...
431   */
432  
defer_bh(struct usbnet * dev,struct sk_buff * skb,struct sk_buff_head * list,enum skb_state state)433  static enum skb_state defer_bh(struct usbnet *dev, struct sk_buff *skb,
434  		struct sk_buff_head *list, enum skb_state state)
435  {
436  	unsigned long		flags;
437  	enum skb_state 		old_state;
438  	struct skb_data *entry = (struct skb_data *) skb->cb;
439  
440  	spin_lock_irqsave(&list->lock, flags);
441  	old_state = entry->state;
442  	entry->state = state;
443  	__skb_unlink(skb, list);
444  
445  	/* defer_bh() is never called with list == &dev->done.
446  	 * spin_lock_nested() tells lockdep that it is OK to take
447  	 * dev->done.lock here with list->lock held.
448  	 */
449  	spin_lock_nested(&dev->done.lock, SINGLE_DEPTH_NESTING);
450  
451  	__skb_queue_tail(&dev->done, skb);
452  	if (dev->done.qlen == 1)
453  		tasklet_schedule(&dev->bh);
454  	spin_unlock(&dev->done.lock);
455  	spin_unlock_irqrestore(&list->lock, flags);
456  	return old_state;
457  }
458  
459  /* some work can't be done in tasklets, so we use keventd
460   *
461   * NOTE:  annoying asymmetry:  if it's active, schedule_work() fails,
462   * but tasklet_schedule() doesn't.  hope the failure is rare.
463   */
usbnet_defer_kevent(struct usbnet * dev,int work)464  void usbnet_defer_kevent (struct usbnet *dev, int work)
465  {
466  	set_bit (work, &dev->flags);
467  	if (!usbnet_going_away(dev)) {
468  		if (!schedule_work(&dev->kevent))
469  			netdev_dbg(dev->net,
470  				   "kevent %s may have been dropped\n",
471  				   usbnet_event_names[work]);
472  		else
473  			netdev_dbg(dev->net,
474  				   "kevent %s scheduled\n", usbnet_event_names[work]);
475  	}
476  }
477  EXPORT_SYMBOL_GPL(usbnet_defer_kevent);
478  
479  /*-------------------------------------------------------------------------*/
480  
481  static void rx_complete (struct urb *urb);
482  
rx_submit(struct usbnet * dev,struct urb * urb,gfp_t flags)483  static int rx_submit (struct usbnet *dev, struct urb *urb, gfp_t flags)
484  {
485  	struct sk_buff		*skb;
486  	struct skb_data		*entry;
487  	int			retval = 0;
488  	unsigned long		lockflags;
489  	size_t			size = dev->rx_urb_size;
490  
491  	/* prevent rx skb allocation when error ratio is high */
492  	if (test_bit(EVENT_RX_KILL, &dev->flags)) {
493  		usb_free_urb(urb);
494  		return -ENOLINK;
495  	}
496  
497  	if (test_bit(EVENT_NO_IP_ALIGN, &dev->flags))
498  		skb = __netdev_alloc_skb(dev->net, size, flags);
499  	else
500  		skb = __netdev_alloc_skb_ip_align(dev->net, size, flags);
501  	if (!skb) {
502  		netif_dbg(dev, rx_err, dev->net, "no rx skb\n");
503  		usbnet_defer_kevent (dev, EVENT_RX_MEMORY);
504  		usb_free_urb (urb);
505  		return -ENOMEM;
506  	}
507  
508  	entry = (struct skb_data *) skb->cb;
509  	entry->urb = urb;
510  	entry->dev = dev;
511  	entry->length = 0;
512  
513  	usb_fill_bulk_urb (urb, dev->udev, dev->in,
514  		skb->data, size, rx_complete, skb);
515  
516  	spin_lock_irqsave (&dev->rxq.lock, lockflags);
517  
518  	if (netif_running (dev->net) &&
519  	    netif_device_present (dev->net) &&
520  	    test_bit(EVENT_DEV_OPEN, &dev->flags) &&
521  	    !test_bit (EVENT_RX_HALT, &dev->flags) &&
522  	    !test_bit (EVENT_DEV_ASLEEP, &dev->flags)) {
523  		switch (retval = usb_submit_urb (urb, GFP_ATOMIC)) {
524  		case -EPIPE:
525  			usbnet_defer_kevent (dev, EVENT_RX_HALT);
526  			break;
527  		case -ENOMEM:
528  			usbnet_defer_kevent (dev, EVENT_RX_MEMORY);
529  			break;
530  		case -ENODEV:
531  			netif_dbg(dev, ifdown, dev->net, "device gone\n");
532  			netif_device_detach (dev->net);
533  			break;
534  		case -EHOSTUNREACH:
535  			retval = -ENOLINK;
536  			break;
537  		default:
538  			netif_dbg(dev, rx_err, dev->net,
539  				  "rx submit, %d\n", retval);
540  			tasklet_schedule (&dev->bh);
541  			break;
542  		case 0:
543  			if (!usbnet_going_away(dev))
544  				__usbnet_queue_skb(&dev->rxq, skb, rx_start);
545  		}
546  	} else {
547  		netif_dbg(dev, ifdown, dev->net, "rx: stopped\n");
548  		retval = -ENOLINK;
549  	}
550  	spin_unlock_irqrestore (&dev->rxq.lock, lockflags);
551  	if (retval) {
552  		dev_kfree_skb_any (skb);
553  		usb_free_urb (urb);
554  	}
555  	return retval;
556  }
557  
558  
559  /*-------------------------------------------------------------------------*/
560  
rx_process(struct usbnet * dev,struct sk_buff * skb)561  static inline int rx_process(struct usbnet *dev, struct sk_buff *skb)
562  {
563  	if (dev->driver_info->rx_fixup &&
564  	    !dev->driver_info->rx_fixup (dev, skb)) {
565  		/* With RX_ASSEMBLE, rx_fixup() must update counters */
566  		if (!(dev->driver_info->flags & FLAG_RX_ASSEMBLE))
567  			dev->net->stats.rx_errors++;
568  		return -EPROTO;
569  	}
570  	// else network stack removes extra byte if we forced a short packet
571  
572  	/* all data was already cloned from skb inside the driver */
573  	if (dev->driver_info->flags & FLAG_MULTI_PACKET)
574  		return -EALREADY;
575  
576  	if (skb->len < ETH_HLEN) {
577  		dev->net->stats.rx_errors++;
578  		dev->net->stats.rx_length_errors++;
579  		netif_dbg(dev, rx_err, dev->net, "rx length %d\n", skb->len);
580  		return -EPROTO;
581  	}
582  
583  	usbnet_skb_return(dev, skb);
584  	return 0;
585  }
586  
587  /*-------------------------------------------------------------------------*/
588  
rx_complete(struct urb * urb)589  static void rx_complete (struct urb *urb)
590  {
591  	struct sk_buff		*skb = (struct sk_buff *) urb->context;
592  	struct skb_data		*entry = (struct skb_data *) skb->cb;
593  	struct usbnet		*dev = entry->dev;
594  	int			urb_status = urb->status;
595  	enum skb_state		state;
596  
597  	skb_put (skb, urb->actual_length);
598  	state = rx_done;
599  	entry->urb = NULL;
600  
601  	switch (urb_status) {
602  	/* success */
603  	case 0:
604  		break;
605  
606  	/* stalls need manual reset. this is rare ... except that
607  	 * when going through USB 2.0 TTs, unplug appears this way.
608  	 * we avoid the highspeed version of the ETIMEDOUT/EILSEQ
609  	 * storm, recovering as needed.
610  	 */
611  	case -EPIPE:
612  		dev->net->stats.rx_errors++;
613  		usbnet_defer_kevent (dev, EVENT_RX_HALT);
614  		fallthrough;
615  
616  	/* software-driven interface shutdown */
617  	case -ECONNRESET:		/* async unlink */
618  	case -ESHUTDOWN:		/* hardware gone */
619  		netif_dbg(dev, ifdown, dev->net,
620  			  "rx shutdown, code %d\n", urb_status);
621  		goto block;
622  
623  	/* we get controller i/o faults during hub_wq disconnect() delays.
624  	 * throttle down resubmits, to avoid log floods; just temporarily,
625  	 * so we still recover when the fault isn't a hub_wq delay.
626  	 */
627  	case -EPROTO:
628  	case -ETIME:
629  	case -EILSEQ:
630  		dev->net->stats.rx_errors++;
631  		if (!timer_pending (&dev->delay)) {
632  			mod_timer (&dev->delay, jiffies + THROTTLE_JIFFIES);
633  			netif_dbg(dev, link, dev->net,
634  				  "rx throttle %d\n", urb_status);
635  		}
636  block:
637  		state = rx_cleanup;
638  		entry->urb = urb;
639  		urb = NULL;
640  		break;
641  
642  	/* data overrun ... flush fifo? */
643  	case -EOVERFLOW:
644  		dev->net->stats.rx_over_errors++;
645  		fallthrough;
646  
647  	default:
648  		state = rx_cleanup;
649  		dev->net->stats.rx_errors++;
650  		netif_dbg(dev, rx_err, dev->net, "rx status %d\n", urb_status);
651  		break;
652  	}
653  
654  	/* stop rx if packet error rate is high */
655  	if (++dev->pkt_cnt > 30) {
656  		dev->pkt_cnt = 0;
657  		dev->pkt_err = 0;
658  	} else {
659  		if (state == rx_cleanup)
660  			dev->pkt_err++;
661  		if (dev->pkt_err > 20)
662  			set_bit(EVENT_RX_KILL, &dev->flags);
663  	}
664  
665  	state = defer_bh(dev, skb, &dev->rxq, state);
666  
667  	if (urb) {
668  		if (netif_running (dev->net) &&
669  		    !test_bit (EVENT_RX_HALT, &dev->flags) &&
670  		    state != unlink_start) {
671  			rx_submit (dev, urb, GFP_ATOMIC);
672  			usb_mark_last_busy(dev->udev);
673  			return;
674  		}
675  		usb_free_urb (urb);
676  	}
677  	netif_dbg(dev, rx_err, dev->net, "no read resubmitted\n");
678  }
679  
680  /*-------------------------------------------------------------------------*/
usbnet_pause_rx(struct usbnet * dev)681  void usbnet_pause_rx(struct usbnet *dev)
682  {
683  	set_bit(EVENT_RX_PAUSED, &dev->flags);
684  
685  	netif_dbg(dev, rx_status, dev->net, "paused rx queue enabled\n");
686  }
687  EXPORT_SYMBOL_GPL(usbnet_pause_rx);
688  
usbnet_resume_rx(struct usbnet * dev)689  void usbnet_resume_rx(struct usbnet *dev)
690  {
691  	struct sk_buff *skb;
692  	int num = 0;
693  
694  	clear_bit(EVENT_RX_PAUSED, &dev->flags);
695  
696  	while ((skb = skb_dequeue(&dev->rxq_pause)) != NULL) {
697  		usbnet_skb_return(dev, skb);
698  		num++;
699  	}
700  
701  	tasklet_schedule(&dev->bh);
702  
703  	netif_dbg(dev, rx_status, dev->net,
704  		  "paused rx queue disabled, %d skbs requeued\n", num);
705  }
706  EXPORT_SYMBOL_GPL(usbnet_resume_rx);
707  
usbnet_purge_paused_rxq(struct usbnet * dev)708  void usbnet_purge_paused_rxq(struct usbnet *dev)
709  {
710  	skb_queue_purge(&dev->rxq_pause);
711  }
712  EXPORT_SYMBOL_GPL(usbnet_purge_paused_rxq);
713  
714  /*-------------------------------------------------------------------------*/
715  
716  // unlink pending rx/tx; completion handlers do all other cleanup
717  
unlink_urbs(struct usbnet * dev,struct sk_buff_head * q)718  static int unlink_urbs (struct usbnet *dev, struct sk_buff_head *q)
719  {
720  	unsigned long		flags;
721  	struct sk_buff		*skb;
722  	int			count = 0;
723  
724  	spin_lock_irqsave (&q->lock, flags);
725  	while (!skb_queue_empty(q)) {
726  		struct skb_data		*entry;
727  		struct urb		*urb;
728  		int			retval;
729  
730  		skb_queue_walk(q, skb) {
731  			entry = (struct skb_data *) skb->cb;
732  			if (entry->state != unlink_start)
733  				goto found;
734  		}
735  		break;
736  found:
737  		entry->state = unlink_start;
738  		urb = entry->urb;
739  
740  		/*
741  		 * Get reference count of the URB to avoid it to be
742  		 * freed during usb_unlink_urb, which may trigger
743  		 * use-after-free problem inside usb_unlink_urb since
744  		 * usb_unlink_urb is always racing with .complete
745  		 * handler(include defer_bh).
746  		 */
747  		usb_get_urb(urb);
748  		spin_unlock_irqrestore(&q->lock, flags);
749  		// during some PM-driven resume scenarios,
750  		// these (async) unlinks complete immediately
751  		retval = usb_unlink_urb (urb);
752  		if (retval != -EINPROGRESS && retval != 0)
753  			netdev_dbg(dev->net, "unlink urb err, %d\n", retval);
754  		else
755  			count++;
756  		usb_put_urb(urb);
757  		spin_lock_irqsave(&q->lock, flags);
758  	}
759  	spin_unlock_irqrestore (&q->lock, flags);
760  	return count;
761  }
762  
763  // Flush all pending rx urbs
764  // minidrivers may need to do this when the MTU changes
765  
usbnet_unlink_rx_urbs(struct usbnet * dev)766  void usbnet_unlink_rx_urbs(struct usbnet *dev)
767  {
768  	if (netif_running(dev->net)) {
769  		(void) unlink_urbs (dev, &dev->rxq);
770  		tasklet_schedule(&dev->bh);
771  	}
772  }
773  EXPORT_SYMBOL_GPL(usbnet_unlink_rx_urbs);
774  
775  /*-------------------------------------------------------------------------*/
776  
wait_skb_queue_empty(struct sk_buff_head * q)777  static void wait_skb_queue_empty(struct sk_buff_head *q)
778  {
779  	unsigned long flags;
780  
781  	spin_lock_irqsave(&q->lock, flags);
782  	while (!skb_queue_empty(q)) {
783  		spin_unlock_irqrestore(&q->lock, flags);
784  		schedule_timeout(msecs_to_jiffies(UNLINK_TIMEOUT_MS));
785  		set_current_state(TASK_UNINTERRUPTIBLE);
786  		spin_lock_irqsave(&q->lock, flags);
787  	}
788  	spin_unlock_irqrestore(&q->lock, flags);
789  }
790  
791  // precondition: never called in_interrupt
usbnet_terminate_urbs(struct usbnet * dev)792  static void usbnet_terminate_urbs(struct usbnet *dev)
793  {
794  	DECLARE_WAITQUEUE(wait, current);
795  	int temp;
796  
797  	/* ensure there are no more active urbs */
798  	add_wait_queue(&dev->wait, &wait);
799  	set_current_state(TASK_UNINTERRUPTIBLE);
800  	temp = unlink_urbs(dev, &dev->txq) +
801  		unlink_urbs(dev, &dev->rxq);
802  
803  	/* maybe wait for deletions to finish. */
804  	wait_skb_queue_empty(&dev->rxq);
805  	wait_skb_queue_empty(&dev->txq);
806  	wait_skb_queue_empty(&dev->done);
807  	netif_dbg(dev, ifdown, dev->net,
808  		  "waited for %d urb completions\n", temp);
809  	set_current_state(TASK_RUNNING);
810  	remove_wait_queue(&dev->wait, &wait);
811  }
812  
usbnet_stop(struct net_device * net)813  int usbnet_stop (struct net_device *net)
814  {
815  	struct usbnet		*dev = netdev_priv(net);
816  	const struct driver_info *info = dev->driver_info;
817  	int			retval, pm, mpn;
818  
819  	clear_bit(EVENT_DEV_OPEN, &dev->flags);
820  	netif_stop_queue (net);
821  
822  	netif_info(dev, ifdown, dev->net,
823  		   "stop stats: rx/tx %lu/%lu, errs %lu/%lu\n",
824  		   net->stats.rx_packets, net->stats.tx_packets,
825  		   net->stats.rx_errors, net->stats.tx_errors);
826  
827  	/* to not race resume */
828  	pm = usb_autopm_get_interface(dev->intf);
829  	/* allow minidriver to stop correctly (wireless devices to turn off
830  	 * radio etc) */
831  	if (info->stop) {
832  		retval = info->stop(dev);
833  		if (retval < 0)
834  			netif_info(dev, ifdown, dev->net,
835  				   "stop fail (%d) usbnet usb-%s-%s, %s\n",
836  				   retval,
837  				   dev->udev->bus->bus_name, dev->udev->devpath,
838  				   info->description);
839  	}
840  
841  	if (!(info->flags & FLAG_AVOID_UNLINK_URBS))
842  		usbnet_terminate_urbs(dev);
843  
844  	usbnet_status_stop(dev);
845  
846  	usbnet_purge_paused_rxq(dev);
847  
848  	mpn = !test_and_clear_bit(EVENT_NO_RUNTIME_PM, &dev->flags);
849  
850  	/* deferred work (timer, softirq, task) must also stop */
851  	dev->flags = 0;
852  	del_timer_sync(&dev->delay);
853  	tasklet_kill(&dev->bh);
854  	cancel_work_sync(&dev->kevent);
855  
856  	/* We have cyclic dependencies. Those calls are needed
857  	 * to break a cycle. We cannot fall into the gaps because
858  	 * we have a flag
859  	 */
860  	tasklet_kill(&dev->bh);
861  	del_timer_sync(&dev->delay);
862  	cancel_work_sync(&dev->kevent);
863  
864  	if (!pm)
865  		usb_autopm_put_interface(dev->intf);
866  
867  	if (info->manage_power && mpn)
868  		info->manage_power(dev, 0);
869  	else
870  		usb_autopm_put_interface(dev->intf);
871  
872  	return 0;
873  }
874  EXPORT_SYMBOL_GPL(usbnet_stop);
875  
876  /*-------------------------------------------------------------------------*/
877  
878  // posts reads, and enables write queuing
879  
880  // precondition: never called in_interrupt
881  
usbnet_open(struct net_device * net)882  int usbnet_open (struct net_device *net)
883  {
884  	struct usbnet		*dev = netdev_priv(net);
885  	int			retval;
886  	const struct driver_info *info = dev->driver_info;
887  
888  	if ((retval = usb_autopm_get_interface(dev->intf)) < 0) {
889  		netif_info(dev, ifup, dev->net,
890  			   "resumption fail (%d) usbnet usb-%s-%s, %s\n",
891  			   retval,
892  			   dev->udev->bus->bus_name,
893  			   dev->udev->devpath,
894  			   info->description);
895  		goto done_nopm;
896  	}
897  
898  	// put into "known safe" state
899  	if (info->reset && (retval = info->reset (dev)) < 0) {
900  		netif_info(dev, ifup, dev->net,
901  			   "open reset fail (%d) usbnet usb-%s-%s, %s\n",
902  			   retval,
903  			   dev->udev->bus->bus_name,
904  			   dev->udev->devpath,
905  			   info->description);
906  		goto done;
907  	}
908  
909  	/* hard_mtu or rx_urb_size may change in reset() */
910  	usbnet_update_max_qlen(dev);
911  
912  	// insist peer be connected
913  	if (info->check_connect && (retval = info->check_connect (dev)) < 0) {
914  		netif_err(dev, ifup, dev->net, "can't open; %d\n", retval);
915  		goto done;
916  	}
917  
918  	/* start any status interrupt transfer */
919  	if (dev->interrupt) {
920  		retval = usbnet_status_start(dev, GFP_KERNEL);
921  		if (retval < 0) {
922  			netif_err(dev, ifup, dev->net,
923  				  "intr submit %d\n", retval);
924  			goto done;
925  		}
926  	}
927  
928  	set_bit(EVENT_DEV_OPEN, &dev->flags);
929  	netif_start_queue (net);
930  	netif_info(dev, ifup, dev->net,
931  		   "open: enable queueing (rx %d, tx %d) mtu %d %s framing\n",
932  		   (int)RX_QLEN(dev), (int)TX_QLEN(dev),
933  		   dev->net->mtu,
934  		   (dev->driver_info->flags & FLAG_FRAMING_NC) ? "NetChip" :
935  		   (dev->driver_info->flags & FLAG_FRAMING_GL) ? "GeneSys" :
936  		   (dev->driver_info->flags & FLAG_FRAMING_Z) ? "Zaurus" :
937  		   (dev->driver_info->flags & FLAG_FRAMING_RN) ? "RNDIS" :
938  		   (dev->driver_info->flags & FLAG_FRAMING_AX) ? "ASIX" :
939  		   "simple");
940  
941  	/* reset rx error state */
942  	dev->pkt_cnt = 0;
943  	dev->pkt_err = 0;
944  	clear_bit(EVENT_RX_KILL, &dev->flags);
945  
946  	// delay posting reads until we're fully open
947  	tasklet_schedule (&dev->bh);
948  	if (info->manage_power) {
949  		retval = info->manage_power(dev, 1);
950  		if (retval < 0) {
951  			retval = 0;
952  			set_bit(EVENT_NO_RUNTIME_PM, &dev->flags);
953  		} else {
954  			usb_autopm_put_interface(dev->intf);
955  		}
956  	}
957  	return retval;
958  done:
959  	usb_autopm_put_interface(dev->intf);
960  done_nopm:
961  	return retval;
962  }
963  EXPORT_SYMBOL_GPL(usbnet_open);
964  
965  /*-------------------------------------------------------------------------*/
966  
967  /* ethtool methods; minidrivers may need to add some more, but
968   * they'll probably want to use this base set.
969   */
970  
971  /* These methods are written on the assumption that the device
972   * uses MII
973   */
usbnet_get_link_ksettings_mii(struct net_device * net,struct ethtool_link_ksettings * cmd)974  int usbnet_get_link_ksettings_mii(struct net_device *net,
975  			      struct ethtool_link_ksettings *cmd)
976  {
977  	struct usbnet *dev = netdev_priv(net);
978  
979  	if (!dev->mii.mdio_read)
980  		return -EOPNOTSUPP;
981  
982  	mii_ethtool_get_link_ksettings(&dev->mii, cmd);
983  
984  	return 0;
985  }
986  EXPORT_SYMBOL_GPL(usbnet_get_link_ksettings_mii);
987  
usbnet_get_link_ksettings_internal(struct net_device * net,struct ethtool_link_ksettings * cmd)988  int usbnet_get_link_ksettings_internal(struct net_device *net,
989  					struct ethtool_link_ksettings *cmd)
990  {
991  	struct usbnet *dev = netdev_priv(net);
992  
993  	/* the assumption that speed is equal on tx and rx
994  	 * is deeply engrained into the networking layer.
995  	 * For wireless stuff it is not true.
996  	 * We assume that rx_speed matters more.
997  	 */
998  	if (dev->rx_speed != SPEED_UNSET)
999  		cmd->base.speed = dev->rx_speed / 1000000;
1000  	else if (dev->tx_speed != SPEED_UNSET)
1001  		cmd->base.speed = dev->tx_speed / 1000000;
1002  	else
1003  		cmd->base.speed = SPEED_UNKNOWN;
1004  
1005  	return 0;
1006  }
1007  EXPORT_SYMBOL_GPL(usbnet_get_link_ksettings_internal);
1008  
usbnet_set_link_ksettings_mii(struct net_device * net,const struct ethtool_link_ksettings * cmd)1009  int usbnet_set_link_ksettings_mii(struct net_device *net,
1010  			      const struct ethtool_link_ksettings *cmd)
1011  {
1012  	struct usbnet *dev = netdev_priv(net);
1013  	int retval;
1014  
1015  	if (!dev->mii.mdio_write)
1016  		return -EOPNOTSUPP;
1017  
1018  	retval = mii_ethtool_set_link_ksettings(&dev->mii, cmd);
1019  
1020  	/* link speed/duplex might have changed */
1021  	if (dev->driver_info->link_reset)
1022  		dev->driver_info->link_reset(dev);
1023  
1024  	/* hard_mtu or rx_urb_size may change in link_reset() */
1025  	usbnet_update_max_qlen(dev);
1026  
1027  	return retval;
1028  }
1029  EXPORT_SYMBOL_GPL(usbnet_set_link_ksettings_mii);
1030  
usbnet_get_link(struct net_device * net)1031  u32 usbnet_get_link (struct net_device *net)
1032  {
1033  	struct usbnet *dev = netdev_priv(net);
1034  
1035  	/* If a check_connect is defined, return its result */
1036  	if (dev->driver_info->check_connect)
1037  		return dev->driver_info->check_connect (dev) == 0;
1038  
1039  	/* if the device has mii operations, use those */
1040  	if (dev->mii.mdio_read)
1041  		return mii_link_ok(&dev->mii);
1042  
1043  	/* Otherwise, dtrt for drivers calling netif_carrier_{on,off} */
1044  	return ethtool_op_get_link(net);
1045  }
1046  EXPORT_SYMBOL_GPL(usbnet_get_link);
1047  
usbnet_nway_reset(struct net_device * net)1048  int usbnet_nway_reset(struct net_device *net)
1049  {
1050  	struct usbnet *dev = netdev_priv(net);
1051  
1052  	if (!dev->mii.mdio_write)
1053  		return -EOPNOTSUPP;
1054  
1055  	return mii_nway_restart(&dev->mii);
1056  }
1057  EXPORT_SYMBOL_GPL(usbnet_nway_reset);
1058  
usbnet_get_drvinfo(struct net_device * net,struct ethtool_drvinfo * info)1059  void usbnet_get_drvinfo (struct net_device *net, struct ethtool_drvinfo *info)
1060  {
1061  	struct usbnet *dev = netdev_priv(net);
1062  
1063  	strscpy(info->driver, dev->driver_name, sizeof(info->driver));
1064  	strscpy(info->fw_version, dev->driver_info->description,
1065  		sizeof(info->fw_version));
1066  	usb_make_path (dev->udev, info->bus_info, sizeof info->bus_info);
1067  }
1068  EXPORT_SYMBOL_GPL(usbnet_get_drvinfo);
1069  
usbnet_get_msglevel(struct net_device * net)1070  u32 usbnet_get_msglevel (struct net_device *net)
1071  {
1072  	struct usbnet *dev = netdev_priv(net);
1073  
1074  	return dev->msg_enable;
1075  }
1076  EXPORT_SYMBOL_GPL(usbnet_get_msglevel);
1077  
usbnet_set_msglevel(struct net_device * net,u32 level)1078  void usbnet_set_msglevel (struct net_device *net, u32 level)
1079  {
1080  	struct usbnet *dev = netdev_priv(net);
1081  
1082  	dev->msg_enable = level;
1083  }
1084  EXPORT_SYMBOL_GPL(usbnet_set_msglevel);
1085  
1086  /* drivers may override default ethtool_ops in their bind() routine */
1087  static const struct ethtool_ops usbnet_ethtool_ops = {
1088  	.get_link		= usbnet_get_link,
1089  	.nway_reset		= usbnet_nway_reset,
1090  	.get_drvinfo		= usbnet_get_drvinfo,
1091  	.get_msglevel		= usbnet_get_msglevel,
1092  	.set_msglevel		= usbnet_set_msglevel,
1093  	.get_ts_info		= ethtool_op_get_ts_info,
1094  	.get_link_ksettings	= usbnet_get_link_ksettings_mii,
1095  	.set_link_ksettings	= usbnet_set_link_ksettings_mii,
1096  };
1097  
1098  /*-------------------------------------------------------------------------*/
1099  
__handle_link_change(struct usbnet * dev)1100  static void __handle_link_change(struct usbnet *dev)
1101  {
1102  	if (!test_bit(EVENT_DEV_OPEN, &dev->flags))
1103  		return;
1104  
1105  	if (!netif_carrier_ok(dev->net)) {
1106  		/* kill URBs for reading packets to save bus bandwidth */
1107  		unlink_urbs(dev, &dev->rxq);
1108  
1109  		/*
1110  		 * tx_timeout will unlink URBs for sending packets and
1111  		 * tx queue is stopped by netcore after link becomes off
1112  		 */
1113  	} else {
1114  		/* submitting URBs for reading packets */
1115  		tasklet_schedule(&dev->bh);
1116  	}
1117  
1118  	/* hard_mtu or rx_urb_size may change during link change */
1119  	usbnet_update_max_qlen(dev);
1120  
1121  	clear_bit(EVENT_LINK_CHANGE, &dev->flags);
1122  }
1123  
usbnet_set_rx_mode(struct net_device * net)1124  void usbnet_set_rx_mode(struct net_device *net)
1125  {
1126  	struct usbnet		*dev = netdev_priv(net);
1127  
1128  	usbnet_defer_kevent(dev, EVENT_SET_RX_MODE);
1129  }
1130  EXPORT_SYMBOL_GPL(usbnet_set_rx_mode);
1131  
__handle_set_rx_mode(struct usbnet * dev)1132  static void __handle_set_rx_mode(struct usbnet *dev)
1133  {
1134  	if (dev->driver_info->set_rx_mode)
1135  		(dev->driver_info->set_rx_mode)(dev);
1136  
1137  	clear_bit(EVENT_SET_RX_MODE, &dev->flags);
1138  }
1139  
1140  /* work that cannot be done in interrupt context uses keventd.
1141   *
1142   * NOTE:  with 2.5 we could do more of this using completion callbacks,
1143   * especially now that control transfers can be queued.
1144   */
1145  static void
usbnet_deferred_kevent(struct work_struct * work)1146  usbnet_deferred_kevent (struct work_struct *work)
1147  {
1148  	struct usbnet		*dev =
1149  		container_of(work, struct usbnet, kevent);
1150  	int			status;
1151  
1152  	/* usb_clear_halt() needs a thread context */
1153  	if (test_bit (EVENT_TX_HALT, &dev->flags)) {
1154  		unlink_urbs (dev, &dev->txq);
1155  		status = usb_autopm_get_interface(dev->intf);
1156  		if (status < 0)
1157  			goto fail_pipe;
1158  		status = usb_clear_halt (dev->udev, dev->out);
1159  		usb_autopm_put_interface(dev->intf);
1160  		if (status < 0 &&
1161  		    status != -EPIPE &&
1162  		    status != -ESHUTDOWN) {
1163  			if (netif_msg_tx_err (dev))
1164  fail_pipe:
1165  				netdev_err(dev->net, "can't clear tx halt, status %d\n",
1166  					   status);
1167  		} else {
1168  			clear_bit (EVENT_TX_HALT, &dev->flags);
1169  			if (status != -ESHUTDOWN)
1170  				netif_wake_queue (dev->net);
1171  		}
1172  	}
1173  	if (test_bit (EVENT_RX_HALT, &dev->flags)) {
1174  		unlink_urbs (dev, &dev->rxq);
1175  		status = usb_autopm_get_interface(dev->intf);
1176  		if (status < 0)
1177  			goto fail_halt;
1178  		status = usb_clear_halt (dev->udev, dev->in);
1179  		usb_autopm_put_interface(dev->intf);
1180  		if (status < 0 &&
1181  		    status != -EPIPE &&
1182  		    status != -ESHUTDOWN) {
1183  			if (netif_msg_rx_err (dev))
1184  fail_halt:
1185  				netdev_err(dev->net, "can't clear rx halt, status %d\n",
1186  					   status);
1187  		} else {
1188  			clear_bit (EVENT_RX_HALT, &dev->flags);
1189  			if (!usbnet_going_away(dev))
1190  				tasklet_schedule(&dev->bh);
1191  		}
1192  	}
1193  
1194  	/* tasklet could resubmit itself forever if memory is tight */
1195  	if (test_bit (EVENT_RX_MEMORY, &dev->flags)) {
1196  		struct urb	*urb = NULL;
1197  		int resched = 1;
1198  
1199  		if (netif_running (dev->net))
1200  			urb = usb_alloc_urb (0, GFP_KERNEL);
1201  		else
1202  			clear_bit (EVENT_RX_MEMORY, &dev->flags);
1203  		if (urb != NULL) {
1204  			clear_bit (EVENT_RX_MEMORY, &dev->flags);
1205  			status = usb_autopm_get_interface(dev->intf);
1206  			if (status < 0) {
1207  				usb_free_urb(urb);
1208  				goto fail_lowmem;
1209  			}
1210  			if (rx_submit (dev, urb, GFP_KERNEL) == -ENOLINK)
1211  				resched = 0;
1212  			usb_autopm_put_interface(dev->intf);
1213  fail_lowmem:
1214  			if (resched)
1215  				if (!usbnet_going_away(dev))
1216  					tasklet_schedule(&dev->bh);
1217  		}
1218  	}
1219  
1220  	if (test_bit (EVENT_LINK_RESET, &dev->flags)) {
1221  		const struct driver_info *info = dev->driver_info;
1222  		int			retval = 0;
1223  
1224  		clear_bit (EVENT_LINK_RESET, &dev->flags);
1225  		status = usb_autopm_get_interface(dev->intf);
1226  		if (status < 0)
1227  			goto skip_reset;
1228  		if(info->link_reset && (retval = info->link_reset(dev)) < 0) {
1229  			usb_autopm_put_interface(dev->intf);
1230  skip_reset:
1231  			netdev_info(dev->net, "link reset failed (%d) usbnet usb-%s-%s, %s\n",
1232  				    retval,
1233  				    dev->udev->bus->bus_name,
1234  				    dev->udev->devpath,
1235  				    info->description);
1236  		} else {
1237  			usb_autopm_put_interface(dev->intf);
1238  		}
1239  
1240  		/* handle link change from link resetting */
1241  		__handle_link_change(dev);
1242  	}
1243  
1244  	if (test_bit (EVENT_LINK_CHANGE, &dev->flags))
1245  		__handle_link_change(dev);
1246  
1247  	if (test_bit (EVENT_SET_RX_MODE, &dev->flags))
1248  		__handle_set_rx_mode(dev);
1249  
1250  
1251  	if (dev->flags)
1252  		netdev_dbg(dev->net, "kevent done, flags = 0x%lx\n", dev->flags);
1253  }
1254  
1255  /*-------------------------------------------------------------------------*/
1256  
tx_complete(struct urb * urb)1257  static void tx_complete (struct urb *urb)
1258  {
1259  	struct sk_buff		*skb = (struct sk_buff *) urb->context;
1260  	struct skb_data		*entry = (struct skb_data *) skb->cb;
1261  	struct usbnet		*dev = entry->dev;
1262  
1263  	if (urb->status == 0) {
1264  		struct pcpu_sw_netstats *stats64 = this_cpu_ptr(dev->net->tstats);
1265  		unsigned long flags;
1266  
1267  		flags = u64_stats_update_begin_irqsave(&stats64->syncp);
1268  		u64_stats_add(&stats64->tx_packets, entry->packets);
1269  		u64_stats_add(&stats64->tx_bytes, entry->length);
1270  		u64_stats_update_end_irqrestore(&stats64->syncp, flags);
1271  	} else {
1272  		dev->net->stats.tx_errors++;
1273  
1274  		switch (urb->status) {
1275  		case -EPIPE:
1276  			usbnet_defer_kevent (dev, EVENT_TX_HALT);
1277  			break;
1278  
1279  		/* software-driven interface shutdown */
1280  		case -ECONNRESET:		// async unlink
1281  		case -ESHUTDOWN:		// hardware gone
1282  			break;
1283  
1284  		/* like rx, tx gets controller i/o faults during hub_wq
1285  		 * delays and so it uses the same throttling mechanism.
1286  		 */
1287  		case -EPROTO:
1288  		case -ETIME:
1289  		case -EILSEQ:
1290  			usb_mark_last_busy(dev->udev);
1291  			if (!timer_pending (&dev->delay)) {
1292  				mod_timer (&dev->delay,
1293  					jiffies + THROTTLE_JIFFIES);
1294  				netif_dbg(dev, link, dev->net,
1295  					  "tx throttle %d\n", urb->status);
1296  			}
1297  			netif_stop_queue (dev->net);
1298  			break;
1299  		default:
1300  			netif_dbg(dev, tx_err, dev->net,
1301  				  "tx err %d\n", entry->urb->status);
1302  			break;
1303  		}
1304  	}
1305  
1306  	usb_autopm_put_interface_async(dev->intf);
1307  	(void) defer_bh(dev, skb, &dev->txq, tx_done);
1308  }
1309  
1310  /*-------------------------------------------------------------------------*/
1311  
usbnet_tx_timeout(struct net_device * net,unsigned int txqueue)1312  void usbnet_tx_timeout (struct net_device *net, unsigned int txqueue)
1313  {
1314  	struct usbnet		*dev = netdev_priv(net);
1315  
1316  	unlink_urbs (dev, &dev->txq);
1317  	tasklet_schedule (&dev->bh);
1318  	/* this needs to be handled individually because the generic layer
1319  	 * doesn't know what is sufficient and could not restore private
1320  	 * information if a remedy of an unconditional reset were used.
1321  	 */
1322  	if (dev->driver_info->recover)
1323  		(dev->driver_info->recover)(dev);
1324  }
1325  EXPORT_SYMBOL_GPL(usbnet_tx_timeout);
1326  
1327  /*-------------------------------------------------------------------------*/
1328  
build_dma_sg(const struct sk_buff * skb,struct urb * urb)1329  static int build_dma_sg(const struct sk_buff *skb, struct urb *urb)
1330  {
1331  	unsigned num_sgs, total_len = 0;
1332  	int i, s = 0;
1333  
1334  	num_sgs = skb_shinfo(skb)->nr_frags + 1;
1335  	if (num_sgs == 1)
1336  		return 0;
1337  
1338  	/* reserve one for zero packet */
1339  	urb->sg = kmalloc_array(num_sgs + 1, sizeof(struct scatterlist),
1340  				GFP_ATOMIC);
1341  	if (!urb->sg)
1342  		return -ENOMEM;
1343  
1344  	urb->num_sgs = num_sgs;
1345  	sg_init_table(urb->sg, urb->num_sgs + 1);
1346  
1347  	sg_set_buf(&urb->sg[s++], skb->data, skb_headlen(skb));
1348  	total_len += skb_headlen(skb);
1349  
1350  	for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
1351  		skb_frag_t *f = &skb_shinfo(skb)->frags[i];
1352  
1353  		total_len += skb_frag_size(f);
1354  		sg_set_page(&urb->sg[i + s], skb_frag_page(f), skb_frag_size(f),
1355  			    skb_frag_off(f));
1356  	}
1357  	urb->transfer_buffer_length = total_len;
1358  
1359  	return 1;
1360  }
1361  
usbnet_start_xmit(struct sk_buff * skb,struct net_device * net)1362  netdev_tx_t usbnet_start_xmit (struct sk_buff *skb,
1363  				     struct net_device *net)
1364  {
1365  	struct usbnet		*dev = netdev_priv(net);
1366  	unsigned int			length;
1367  	struct urb		*urb = NULL;
1368  	struct skb_data		*entry;
1369  	const struct driver_info *info = dev->driver_info;
1370  	unsigned long		flags;
1371  	int retval;
1372  
1373  	if (skb)
1374  		skb_tx_timestamp(skb);
1375  
1376  	// some devices want funky USB-level framing, for
1377  	// win32 driver (usually) and/or hardware quirks
1378  	if (info->tx_fixup) {
1379  		skb = info->tx_fixup (dev, skb, GFP_ATOMIC);
1380  		if (!skb) {
1381  			/* packet collected; minidriver waiting for more */
1382  			if (info->flags & FLAG_MULTI_PACKET)
1383  				goto not_drop;
1384  			netif_dbg(dev, tx_err, dev->net, "can't tx_fixup skb\n");
1385  			goto drop;
1386  		}
1387  	}
1388  
1389  	if (!(urb = usb_alloc_urb (0, GFP_ATOMIC))) {
1390  		netif_dbg(dev, tx_err, dev->net, "no urb\n");
1391  		goto drop;
1392  	}
1393  
1394  	entry = (struct skb_data *) skb->cb;
1395  	entry->urb = urb;
1396  	entry->dev = dev;
1397  
1398  	usb_fill_bulk_urb (urb, dev->udev, dev->out,
1399  			skb->data, skb->len, tx_complete, skb);
1400  	if (dev->can_dma_sg) {
1401  		if (build_dma_sg(skb, urb) < 0)
1402  			goto drop;
1403  	}
1404  	length = urb->transfer_buffer_length;
1405  
1406  	/* don't assume the hardware handles USB_ZERO_PACKET
1407  	 * NOTE:  strictly conforming cdc-ether devices should expect
1408  	 * the ZLP here, but ignore the one-byte packet.
1409  	 * NOTE2: CDC NCM specification is different from CDC ECM when
1410  	 * handling ZLP/short packets, so cdc_ncm driver will make short
1411  	 * packet itself if needed.
1412  	 */
1413  	if (length % dev->maxpacket == 0) {
1414  		if (!(info->flags & FLAG_SEND_ZLP)) {
1415  			if (!(info->flags & FLAG_MULTI_PACKET)) {
1416  				length++;
1417  				if (skb_tailroom(skb) && !urb->num_sgs) {
1418  					skb->data[skb->len] = 0;
1419  					__skb_put(skb, 1);
1420  				} else if (urb->num_sgs)
1421  					sg_set_buf(&urb->sg[urb->num_sgs++],
1422  							dev->padding_pkt, 1);
1423  			}
1424  		} else
1425  			urb->transfer_flags |= URB_ZERO_PACKET;
1426  	}
1427  	urb->transfer_buffer_length = length;
1428  
1429  	if (info->flags & FLAG_MULTI_PACKET) {
1430  		/* Driver has set number of packets and a length delta.
1431  		 * Calculate the complete length and ensure that it's
1432  		 * positive.
1433  		 */
1434  		entry->length += length;
1435  		if (WARN_ON_ONCE(entry->length <= 0))
1436  			entry->length = length;
1437  	} else {
1438  		usbnet_set_skb_tx_stats(skb, 1, length);
1439  	}
1440  
1441  	spin_lock_irqsave(&dev->txq.lock, flags);
1442  	retval = usb_autopm_get_interface_async(dev->intf);
1443  	if (retval < 0) {
1444  		spin_unlock_irqrestore(&dev->txq.lock, flags);
1445  		goto drop;
1446  	}
1447  	if (netif_queue_stopped(net)) {
1448  		usb_autopm_put_interface_async(dev->intf);
1449  		spin_unlock_irqrestore(&dev->txq.lock, flags);
1450  		goto drop;
1451  	}
1452  
1453  #ifdef CONFIG_PM
1454  	/* if this triggers the device is still a sleep */
1455  	if (test_bit(EVENT_DEV_ASLEEP, &dev->flags)) {
1456  		/* transmission will be done in resume */
1457  		usb_anchor_urb(urb, &dev->deferred);
1458  		/* no use to process more packets */
1459  		netif_stop_queue(net);
1460  		usb_put_urb(urb);
1461  		spin_unlock_irqrestore(&dev->txq.lock, flags);
1462  		netdev_dbg(dev->net, "Delaying transmission for resumption\n");
1463  		goto deferred;
1464  	}
1465  #endif
1466  
1467  	switch ((retval = usb_submit_urb (urb, GFP_ATOMIC))) {
1468  	case -EPIPE:
1469  		netif_stop_queue (net);
1470  		usbnet_defer_kevent (dev, EVENT_TX_HALT);
1471  		usb_autopm_put_interface_async(dev->intf);
1472  		break;
1473  	default:
1474  		usb_autopm_put_interface_async(dev->intf);
1475  		netif_dbg(dev, tx_err, dev->net,
1476  			  "tx: submit urb err %d\n", retval);
1477  		break;
1478  	case 0:
1479  		netif_trans_update(net);
1480  		__usbnet_queue_skb(&dev->txq, skb, tx_start);
1481  		if (dev->txq.qlen >= TX_QLEN (dev))
1482  			netif_stop_queue (net);
1483  	}
1484  	spin_unlock_irqrestore (&dev->txq.lock, flags);
1485  
1486  	if (retval) {
1487  		netif_dbg(dev, tx_err, dev->net, "drop, code %d\n", retval);
1488  drop:
1489  		dev->net->stats.tx_dropped++;
1490  not_drop:
1491  		if (skb)
1492  			dev_kfree_skb_any (skb);
1493  		if (urb) {
1494  			kfree(urb->sg);
1495  			usb_free_urb(urb);
1496  		}
1497  	} else
1498  		netif_dbg(dev, tx_queued, dev->net,
1499  			  "> tx, len %u, type 0x%x\n", length, skb->protocol);
1500  #ifdef CONFIG_PM
1501  deferred:
1502  #endif
1503  	return NETDEV_TX_OK;
1504  }
1505  EXPORT_SYMBOL_GPL(usbnet_start_xmit);
1506  
rx_alloc_submit(struct usbnet * dev,gfp_t flags)1507  static int rx_alloc_submit(struct usbnet *dev, gfp_t flags)
1508  {
1509  	struct urb	*urb;
1510  	int		i;
1511  	int		ret = 0;
1512  
1513  	/* don't refill the queue all at once */
1514  	for (i = 0; i < 10 && dev->rxq.qlen < RX_QLEN(dev); i++) {
1515  		urb = usb_alloc_urb(0, flags);
1516  		if (urb != NULL) {
1517  			ret = rx_submit(dev, urb, flags);
1518  			if (ret)
1519  				goto err;
1520  		} else {
1521  			ret = -ENOMEM;
1522  			goto err;
1523  		}
1524  	}
1525  err:
1526  	return ret;
1527  }
1528  
usb_free_skb(struct sk_buff * skb)1529  static inline void usb_free_skb(struct sk_buff *skb)
1530  {
1531  	struct skb_data *entry = (struct skb_data *)skb->cb;
1532  
1533  	usb_free_urb(entry->urb);
1534  	dev_kfree_skb(skb);
1535  }
1536  
1537  /*-------------------------------------------------------------------------*/
1538  
1539  // tasklet (work deferred from completions, in_irq) or timer
1540  
usbnet_bh(struct timer_list * t)1541  static void usbnet_bh (struct timer_list *t)
1542  {
1543  	struct usbnet		*dev = from_timer(dev, t, delay);
1544  	struct sk_buff		*skb;
1545  	struct skb_data		*entry;
1546  
1547  	while ((skb = skb_dequeue (&dev->done))) {
1548  		entry = (struct skb_data *) skb->cb;
1549  		switch (entry->state) {
1550  		case rx_done:
1551  			if (rx_process(dev, skb))
1552  				usb_free_skb(skb);
1553  			continue;
1554  		case tx_done:
1555  			kfree(entry->urb->sg);
1556  			fallthrough;
1557  		case rx_cleanup:
1558  			usb_free_skb(skb);
1559  			continue;
1560  		default:
1561  			netdev_dbg(dev->net, "bogus skb state %d\n", entry->state);
1562  		}
1563  	}
1564  
1565  	/* restart RX again after disabling due to high error rate */
1566  	clear_bit(EVENT_RX_KILL, &dev->flags);
1567  
1568  	/* waiting for all pending urbs to complete?
1569  	 * only then can we forgo submitting anew
1570  	 */
1571  	if (waitqueue_active(&dev->wait)) {
1572  		if (dev->txq.qlen + dev->rxq.qlen + dev->done.qlen == 0)
1573  			wake_up_all(&dev->wait);
1574  
1575  	// or are we maybe short a few urbs?
1576  	} else if (netif_running (dev->net) &&
1577  		   netif_device_present (dev->net) &&
1578  		   netif_carrier_ok(dev->net) &&
1579  		   !usbnet_going_away(dev) &&
1580  		   !timer_pending(&dev->delay) &&
1581  		   !test_bit(EVENT_RX_PAUSED, &dev->flags) &&
1582  		   !test_bit(EVENT_RX_HALT, &dev->flags)) {
1583  		int	temp = dev->rxq.qlen;
1584  
1585  		if (temp < RX_QLEN(dev)) {
1586  			if (rx_alloc_submit(dev, GFP_ATOMIC) == -ENOLINK)
1587  				return;
1588  			if (temp != dev->rxq.qlen)
1589  				netif_dbg(dev, link, dev->net,
1590  					  "rxqlen %d --> %d\n",
1591  					  temp, dev->rxq.qlen);
1592  			if (dev->rxq.qlen < RX_QLEN(dev))
1593  				tasklet_schedule (&dev->bh);
1594  		}
1595  		if (dev->txq.qlen < TX_QLEN (dev))
1596  			netif_wake_queue (dev->net);
1597  	}
1598  }
1599  
usbnet_bh_tasklet(struct tasklet_struct * t)1600  static void usbnet_bh_tasklet(struct tasklet_struct *t)
1601  {
1602  	struct usbnet *dev = from_tasklet(dev, t, bh);
1603  
1604  	usbnet_bh(&dev->delay);
1605  }
1606  
1607  
1608  /*-------------------------------------------------------------------------
1609   *
1610   * USB Device Driver support
1611   *
1612   *-------------------------------------------------------------------------*/
1613  
1614  // precondition: never called in_interrupt
1615  
usbnet_disconnect(struct usb_interface * intf)1616  void usbnet_disconnect (struct usb_interface *intf)
1617  {
1618  	struct usbnet		*dev;
1619  	struct usb_device	*xdev;
1620  	struct net_device	*net;
1621  	struct urb		*urb;
1622  
1623  	dev = usb_get_intfdata(intf);
1624  	usb_set_intfdata(intf, NULL);
1625  	if (!dev)
1626  		return;
1627  	usbnet_mark_going_away(dev);
1628  
1629  	xdev = interface_to_usbdev (intf);
1630  
1631  	netif_info(dev, probe, dev->net, "unregister '%s' usb-%s-%s, %s\n",
1632  		   intf->dev.driver->name,
1633  		   xdev->bus->bus_name, xdev->devpath,
1634  		   dev->driver_info->description);
1635  
1636  	net = dev->net;
1637  	unregister_netdev (net);
1638  
1639  	while ((urb = usb_get_from_anchor(&dev->deferred))) {
1640  		dev_kfree_skb(urb->context);
1641  		kfree(urb->sg);
1642  		usb_free_urb(urb);
1643  	}
1644  
1645  	if (dev->driver_info->unbind)
1646  		dev->driver_info->unbind(dev, intf);
1647  
1648  	usb_kill_urb(dev->interrupt);
1649  	usb_free_urb(dev->interrupt);
1650  	kfree(dev->padding_pkt);
1651  
1652  	free_netdev(net);
1653  }
1654  EXPORT_SYMBOL_GPL(usbnet_disconnect);
1655  
1656  static const struct net_device_ops usbnet_netdev_ops = {
1657  	.ndo_open		= usbnet_open,
1658  	.ndo_stop		= usbnet_stop,
1659  	.ndo_start_xmit		= usbnet_start_xmit,
1660  	.ndo_tx_timeout		= usbnet_tx_timeout,
1661  	.ndo_set_rx_mode	= usbnet_set_rx_mode,
1662  	.ndo_change_mtu		= usbnet_change_mtu,
1663  	.ndo_set_mac_address 	= eth_mac_addr,
1664  	.ndo_validate_addr	= eth_validate_addr,
1665  };
1666  
1667  /*-------------------------------------------------------------------------*/
1668  
1669  // precondition: never called in_interrupt
1670  
1671  static const struct device_type wlan_type = {
1672  	.name	= "wlan",
1673  };
1674  
1675  static const struct device_type wwan_type = {
1676  	.name	= "wwan",
1677  };
1678  
1679  int
usbnet_probe(struct usb_interface * udev,const struct usb_device_id * prod)1680  usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
1681  {
1682  	struct usbnet			*dev;
1683  	struct net_device		*net;
1684  	struct usb_host_interface	*interface;
1685  	const struct driver_info	*info;
1686  	struct usb_device		*xdev;
1687  	int				status;
1688  	const char			*name;
1689  	struct usb_driver 	*driver = to_usb_driver(udev->dev.driver);
1690  
1691  	/* usbnet already took usb runtime pm, so have to enable the feature
1692  	 * for usb interface, otherwise usb_autopm_get_interface may return
1693  	 * failure if RUNTIME_PM is enabled.
1694  	 */
1695  	if (!driver->supports_autosuspend) {
1696  		driver->supports_autosuspend = 1;
1697  		pm_runtime_enable(&udev->dev);
1698  	}
1699  
1700  	name = udev->dev.driver->name;
1701  	info = (const struct driver_info *) prod->driver_info;
1702  	if (!info) {
1703  		dev_dbg (&udev->dev, "blacklisted by %s\n", name);
1704  		return -ENODEV;
1705  	}
1706  	xdev = interface_to_usbdev (udev);
1707  	interface = udev->cur_altsetting;
1708  
1709  	status = -ENOMEM;
1710  
1711  	// set up our own records
1712  	net = alloc_etherdev(sizeof(*dev));
1713  	if (!net)
1714  		goto out;
1715  
1716  	/* netdev_printk() needs this so do it as early as possible */
1717  	SET_NETDEV_DEV(net, &udev->dev);
1718  
1719  	dev = netdev_priv(net);
1720  	dev->udev = xdev;
1721  	dev->intf = udev;
1722  	dev->driver_info = info;
1723  	dev->driver_name = name;
1724  	dev->rx_speed = SPEED_UNSET;
1725  	dev->tx_speed = SPEED_UNSET;
1726  
1727  	dev->msg_enable = netif_msg_init (msg_level, NETIF_MSG_DRV
1728  				| NETIF_MSG_PROBE | NETIF_MSG_LINK);
1729  	init_waitqueue_head(&dev->wait);
1730  	skb_queue_head_init (&dev->rxq);
1731  	skb_queue_head_init (&dev->txq);
1732  	skb_queue_head_init (&dev->done);
1733  	skb_queue_head_init(&dev->rxq_pause);
1734  	tasklet_setup(&dev->bh, usbnet_bh_tasklet);
1735  	INIT_WORK (&dev->kevent, usbnet_deferred_kevent);
1736  	init_usb_anchor(&dev->deferred);
1737  	timer_setup(&dev->delay, usbnet_bh, 0);
1738  	mutex_init (&dev->phy_mutex);
1739  	mutex_init(&dev->interrupt_mutex);
1740  	dev->interrupt_count = 0;
1741  
1742  	dev->net = net;
1743  	strscpy(net->name, "usb%d", sizeof(net->name));
1744  
1745  	/* rx and tx sides can use different message sizes;
1746  	 * bind() should set rx_urb_size in that case.
1747  	 */
1748  	dev->hard_mtu = net->mtu + net->hard_header_len;
1749  	net->min_mtu = 0;
1750  	net->max_mtu = ETH_MAX_MTU;
1751  	net->pcpu_stat_type = NETDEV_PCPU_STAT_TSTATS;
1752  
1753  	net->netdev_ops = &usbnet_netdev_ops;
1754  	net->watchdog_timeo = TX_TIMEOUT_JIFFIES;
1755  	net->ethtool_ops = &usbnet_ethtool_ops;
1756  	net->pcpu_stat_type = NETDEV_PCPU_STAT_TSTATS;
1757  
1758  	// allow device-specific bind/init procedures
1759  	// NOTE net->name still not usable ...
1760  	if (info->bind) {
1761  		status = info->bind (dev, udev);
1762  		if (status < 0)
1763  			goto out1;
1764  
1765  		// heuristic:  "usb%d" for links we know are two-host,
1766  		// else "eth%d" when there's reasonable doubt.  userspace
1767  		// can rename the link if it knows better.
1768  		if ((dev->driver_info->flags & FLAG_ETHER) != 0 &&
1769  		    ((dev->driver_info->flags & FLAG_POINTTOPOINT) == 0 ||
1770  		     /* somebody touched it*/
1771  		     !is_zero_ether_addr(net->dev_addr)))
1772  			strscpy(net->name, "eth%d", sizeof(net->name));
1773  		/* WLAN devices should always be named "wlan%d" */
1774  		if ((dev->driver_info->flags & FLAG_WLAN) != 0)
1775  			strscpy(net->name, "wlan%d", sizeof(net->name));
1776  		/* WWAN devices should always be named "wwan%d" */
1777  		if ((dev->driver_info->flags & FLAG_WWAN) != 0)
1778  			strscpy(net->name, "wwan%d", sizeof(net->name));
1779  
1780  		/* devices that cannot do ARP */
1781  		if ((dev->driver_info->flags & FLAG_NOARP) != 0)
1782  			net->flags |= IFF_NOARP;
1783  
1784  		/* maybe the remote can't receive an Ethernet MTU */
1785  		if (net->mtu > (dev->hard_mtu - net->hard_header_len))
1786  			net->mtu = dev->hard_mtu - net->hard_header_len;
1787  	} else if (!info->in || !info->out)
1788  		status = usbnet_get_endpoints (dev, udev);
1789  	else {
1790  		u8 ep_addrs[3] = {
1791  			info->in + USB_DIR_IN, info->out + USB_DIR_OUT, 0
1792  		};
1793  
1794  		dev->in = usb_rcvbulkpipe (xdev, info->in);
1795  		dev->out = usb_sndbulkpipe (xdev, info->out);
1796  		if (!(info->flags & FLAG_NO_SETINT))
1797  			status = usb_set_interface (xdev,
1798  				interface->desc.bInterfaceNumber,
1799  				interface->desc.bAlternateSetting);
1800  		else
1801  			status = 0;
1802  
1803  		if (status == 0 && !usb_check_bulk_endpoints(udev, ep_addrs))
1804  			status = -EINVAL;
1805  	}
1806  	if (status >= 0 && dev->status)
1807  		status = init_status (dev, udev);
1808  	if (status < 0)
1809  		goto out3;
1810  
1811  	if (!dev->rx_urb_size)
1812  		dev->rx_urb_size = dev->hard_mtu;
1813  	dev->maxpacket = usb_maxpacket(dev->udev, dev->out);
1814  	if (dev->maxpacket == 0) {
1815  		/* that is a broken device */
1816  		status = -ENODEV;
1817  		goto out4;
1818  	}
1819  
1820  	/* this flags the device for user space */
1821  	if (!is_valid_ether_addr(net->dev_addr))
1822  		eth_hw_addr_random(net);
1823  
1824  	if ((dev->driver_info->flags & FLAG_WLAN) != 0)
1825  		SET_NETDEV_DEVTYPE(net, &wlan_type);
1826  	if ((dev->driver_info->flags & FLAG_WWAN) != 0)
1827  		SET_NETDEV_DEVTYPE(net, &wwan_type);
1828  
1829  	/* initialize max rx_qlen and tx_qlen */
1830  	usbnet_update_max_qlen(dev);
1831  
1832  	if (dev->can_dma_sg && !(info->flags & FLAG_SEND_ZLP) &&
1833  		!(info->flags & FLAG_MULTI_PACKET)) {
1834  		dev->padding_pkt = kzalloc(1, GFP_KERNEL);
1835  		if (!dev->padding_pkt) {
1836  			status = -ENOMEM;
1837  			goto out4;
1838  		}
1839  	}
1840  
1841  	status = register_netdev (net);
1842  	if (status)
1843  		goto out5;
1844  	netif_info(dev, probe, dev->net,
1845  		   "register '%s' at usb-%s-%s, %s, %pM\n",
1846  		   udev->dev.driver->name,
1847  		   xdev->bus->bus_name, xdev->devpath,
1848  		   dev->driver_info->description,
1849  		   net->dev_addr);
1850  
1851  	// ok, it's ready to go.
1852  	usb_set_intfdata (udev, dev);
1853  
1854  	netif_device_attach (net);
1855  
1856  	if (dev->driver_info->flags & FLAG_LINK_INTR)
1857  		usbnet_link_change(dev, 0, 0);
1858  
1859  	return 0;
1860  
1861  out5:
1862  	kfree(dev->padding_pkt);
1863  out4:
1864  	usb_free_urb(dev->interrupt);
1865  out3:
1866  	if (info->unbind)
1867  		info->unbind (dev, udev);
1868  out1:
1869  	/* subdrivers must undo all they did in bind() if they
1870  	 * fail it, but we may fail later and a deferred kevent
1871  	 * may trigger an error resubmitting itself and, worse,
1872  	 * schedule a timer. So we kill it all just in case.
1873  	 */
1874  	usbnet_mark_going_away(dev);
1875  	cancel_work_sync(&dev->kevent);
1876  	del_timer_sync(&dev->delay);
1877  	free_netdev(net);
1878  out:
1879  	return status;
1880  }
1881  EXPORT_SYMBOL_GPL(usbnet_probe);
1882  
1883  /*-------------------------------------------------------------------------*/
1884  
1885  /*
1886   * suspend the whole driver as soon as the first interface is suspended
1887   * resume only when the last interface is resumed
1888   */
1889  
usbnet_suspend(struct usb_interface * intf,pm_message_t message)1890  int usbnet_suspend (struct usb_interface *intf, pm_message_t message)
1891  {
1892  	struct usbnet		*dev = usb_get_intfdata(intf);
1893  
1894  	if (!dev->suspend_count++) {
1895  		spin_lock_irq(&dev->txq.lock);
1896  		/* don't autosuspend while transmitting */
1897  		if (dev->txq.qlen && PMSG_IS_AUTO(message)) {
1898  			dev->suspend_count--;
1899  			spin_unlock_irq(&dev->txq.lock);
1900  			return -EBUSY;
1901  		} else {
1902  			set_bit(EVENT_DEV_ASLEEP, &dev->flags);
1903  			spin_unlock_irq(&dev->txq.lock);
1904  		}
1905  		/*
1906  		 * accelerate emptying of the rx and queues, to avoid
1907  		 * having everything error out.
1908  		 */
1909  		netif_device_detach (dev->net);
1910  		usbnet_terminate_urbs(dev);
1911  		__usbnet_status_stop_force(dev);
1912  
1913  		/*
1914  		 * reattach so runtime management can use and
1915  		 * wake the device
1916  		 */
1917  		netif_device_attach (dev->net);
1918  	}
1919  	return 0;
1920  }
1921  EXPORT_SYMBOL_GPL(usbnet_suspend);
1922  
usbnet_resume(struct usb_interface * intf)1923  int usbnet_resume (struct usb_interface *intf)
1924  {
1925  	struct usbnet		*dev = usb_get_intfdata(intf);
1926  	struct sk_buff          *skb;
1927  	struct urb              *res;
1928  	int                     retval;
1929  
1930  	if (!--dev->suspend_count) {
1931  		/* resume interrupt URB if it was previously submitted */
1932  		__usbnet_status_start_force(dev, GFP_NOIO);
1933  
1934  		spin_lock_irq(&dev->txq.lock);
1935  		while ((res = usb_get_from_anchor(&dev->deferred))) {
1936  
1937  			skb = (struct sk_buff *)res->context;
1938  			retval = usb_submit_urb(res, GFP_ATOMIC);
1939  			if (retval < 0) {
1940  				dev_kfree_skb_any(skb);
1941  				kfree(res->sg);
1942  				usb_free_urb(res);
1943  				usb_autopm_put_interface_async(dev->intf);
1944  			} else {
1945  				netif_trans_update(dev->net);
1946  				__skb_queue_tail(&dev->txq, skb);
1947  			}
1948  		}
1949  
1950  		smp_mb();
1951  		clear_bit(EVENT_DEV_ASLEEP, &dev->flags);
1952  		spin_unlock_irq(&dev->txq.lock);
1953  
1954  		if (test_bit(EVENT_DEV_OPEN, &dev->flags)) {
1955  			/* handle remote wakeup ASAP
1956  			 * we cannot race against stop
1957  			 */
1958  			if (netif_device_present(dev->net) &&
1959  				!timer_pending(&dev->delay) &&
1960  				!test_bit(EVENT_RX_HALT, &dev->flags))
1961  					rx_alloc_submit(dev, GFP_NOIO);
1962  
1963  			if (!(dev->txq.qlen >= TX_QLEN(dev)))
1964  				netif_tx_wake_all_queues(dev->net);
1965  			tasklet_schedule (&dev->bh);
1966  		}
1967  	}
1968  
1969  	if (test_and_clear_bit(EVENT_DEVICE_REPORT_IDLE, &dev->flags))
1970  		usb_autopm_get_interface_no_resume(intf);
1971  
1972  	return 0;
1973  }
1974  EXPORT_SYMBOL_GPL(usbnet_resume);
1975  
1976  /*
1977   * Either a subdriver implements manage_power, then it is assumed to always
1978   * be ready to be suspended or it reports the readiness to be suspended
1979   * explicitly
1980   */
usbnet_device_suggests_idle(struct usbnet * dev)1981  void usbnet_device_suggests_idle(struct usbnet *dev)
1982  {
1983  	if (!test_and_set_bit(EVENT_DEVICE_REPORT_IDLE, &dev->flags)) {
1984  		dev->intf->needs_remote_wakeup = 1;
1985  		usb_autopm_put_interface_async(dev->intf);
1986  	}
1987  }
1988  EXPORT_SYMBOL(usbnet_device_suggests_idle);
1989  
1990  /*
1991   * For devices that can do without special commands
1992   */
usbnet_manage_power(struct usbnet * dev,int on)1993  int usbnet_manage_power(struct usbnet *dev, int on)
1994  {
1995  	dev->intf->needs_remote_wakeup = on;
1996  	return 0;
1997  }
1998  EXPORT_SYMBOL(usbnet_manage_power);
1999  
usbnet_link_change(struct usbnet * dev,bool link,bool need_reset)2000  void usbnet_link_change(struct usbnet *dev, bool link, bool need_reset)
2001  {
2002  	/* update link after link is reseted */
2003  	if (link && !need_reset)
2004  		netif_carrier_on(dev->net);
2005  	else
2006  		netif_carrier_off(dev->net);
2007  
2008  	if (need_reset && link)
2009  		usbnet_defer_kevent(dev, EVENT_LINK_RESET);
2010  	else
2011  		usbnet_defer_kevent(dev, EVENT_LINK_CHANGE);
2012  }
2013  EXPORT_SYMBOL(usbnet_link_change);
2014  
2015  /*-------------------------------------------------------------------------*/
__usbnet_read_cmd(struct usbnet * dev,u8 cmd,u8 reqtype,u16 value,u16 index,void * data,u16 size)2016  static int __usbnet_read_cmd(struct usbnet *dev, u8 cmd, u8 reqtype,
2017  			     u16 value, u16 index, void *data, u16 size)
2018  {
2019  	void *buf = NULL;
2020  	int err = -ENOMEM;
2021  
2022  	netdev_dbg(dev->net, "usbnet_read_cmd cmd=0x%02x reqtype=%02x"
2023  		   " value=0x%04x index=0x%04x size=%d\n",
2024  		   cmd, reqtype, value, index, size);
2025  
2026  	if (size) {
2027  		buf = kmalloc(size, GFP_NOIO);
2028  		if (!buf)
2029  			goto out;
2030  	}
2031  
2032  	err = usb_control_msg(dev->udev, usb_rcvctrlpipe(dev->udev, 0),
2033  			      cmd, reqtype, value, index, buf, size,
2034  			      USB_CTRL_GET_TIMEOUT);
2035  	if (err > 0 && err <= size) {
2036  		if (data)
2037  			memcpy(data, buf, err);
2038  		else
2039  			netdev_dbg(dev->net,
2040  				   "Huh? Data requested but thrown away.\n");
2041  	}
2042  	kfree(buf);
2043  out:
2044  	return err;
2045  }
2046  
__usbnet_write_cmd(struct usbnet * dev,u8 cmd,u8 reqtype,u16 value,u16 index,const void * data,u16 size)2047  static int __usbnet_write_cmd(struct usbnet *dev, u8 cmd, u8 reqtype,
2048  			      u16 value, u16 index, const void *data,
2049  			      u16 size)
2050  {
2051  	void *buf = NULL;
2052  	int err = -ENOMEM;
2053  
2054  	netdev_dbg(dev->net, "usbnet_write_cmd cmd=0x%02x reqtype=%02x"
2055  		   " value=0x%04x index=0x%04x size=%d\n",
2056  		   cmd, reqtype, value, index, size);
2057  
2058  	if (data) {
2059  		buf = kmemdup(data, size, GFP_NOIO);
2060  		if (!buf)
2061  			goto out;
2062  	} else {
2063          if (size) {
2064              WARN_ON_ONCE(1);
2065              err = -EINVAL;
2066              goto out;
2067          }
2068      }
2069  
2070  	err = usb_control_msg(dev->udev, usb_sndctrlpipe(dev->udev, 0),
2071  			      cmd, reqtype, value, index, buf, size,
2072  			      USB_CTRL_SET_TIMEOUT);
2073  	kfree(buf);
2074  
2075  out:
2076  	return err;
2077  }
2078  
2079  /*
2080   * The function can't be called inside suspend/resume callback,
2081   * otherwise deadlock will be caused.
2082   */
usbnet_read_cmd(struct usbnet * dev,u8 cmd,u8 reqtype,u16 value,u16 index,void * data,u16 size)2083  int usbnet_read_cmd(struct usbnet *dev, u8 cmd, u8 reqtype,
2084  		    u16 value, u16 index, void *data, u16 size)
2085  {
2086  	int ret;
2087  
2088  	if (usb_autopm_get_interface(dev->intf) < 0)
2089  		return -ENODEV;
2090  	ret = __usbnet_read_cmd(dev, cmd, reqtype, value, index,
2091  				data, size);
2092  	usb_autopm_put_interface(dev->intf);
2093  	return ret;
2094  }
2095  EXPORT_SYMBOL_GPL(usbnet_read_cmd);
2096  
2097  /*
2098   * The function can't be called inside suspend/resume callback,
2099   * otherwise deadlock will be caused.
2100   */
usbnet_write_cmd(struct usbnet * dev,u8 cmd,u8 reqtype,u16 value,u16 index,const void * data,u16 size)2101  int usbnet_write_cmd(struct usbnet *dev, u8 cmd, u8 reqtype,
2102  		     u16 value, u16 index, const void *data, u16 size)
2103  {
2104  	int ret;
2105  
2106  	if (usb_autopm_get_interface(dev->intf) < 0)
2107  		return -ENODEV;
2108  	ret = __usbnet_write_cmd(dev, cmd, reqtype, value, index,
2109  				 data, size);
2110  	usb_autopm_put_interface(dev->intf);
2111  	return ret;
2112  }
2113  EXPORT_SYMBOL_GPL(usbnet_write_cmd);
2114  
2115  /*
2116   * The function can be called inside suspend/resume callback safely
2117   * and should only be called by suspend/resume callback generally.
2118   */
usbnet_read_cmd_nopm(struct usbnet * dev,u8 cmd,u8 reqtype,u16 value,u16 index,void * data,u16 size)2119  int usbnet_read_cmd_nopm(struct usbnet *dev, u8 cmd, u8 reqtype,
2120  			  u16 value, u16 index, void *data, u16 size)
2121  {
2122  	return __usbnet_read_cmd(dev, cmd, reqtype, value, index,
2123  				 data, size);
2124  }
2125  EXPORT_SYMBOL_GPL(usbnet_read_cmd_nopm);
2126  
2127  /*
2128   * The function can be called inside suspend/resume callback safely
2129   * and should only be called by suspend/resume callback generally.
2130   */
usbnet_write_cmd_nopm(struct usbnet * dev,u8 cmd,u8 reqtype,u16 value,u16 index,const void * data,u16 size)2131  int usbnet_write_cmd_nopm(struct usbnet *dev, u8 cmd, u8 reqtype,
2132  			  u16 value, u16 index, const void *data,
2133  			  u16 size)
2134  {
2135  	return __usbnet_write_cmd(dev, cmd, reqtype, value, index,
2136  				  data, size);
2137  }
2138  EXPORT_SYMBOL_GPL(usbnet_write_cmd_nopm);
2139  
usbnet_async_cmd_cb(struct urb * urb)2140  static void usbnet_async_cmd_cb(struct urb *urb)
2141  {
2142  	struct usb_ctrlrequest *req = (struct usb_ctrlrequest *)urb->context;
2143  	int status = urb->status;
2144  
2145  	if (status < 0)
2146  		dev_dbg(&urb->dev->dev, "%s failed with %d",
2147  			__func__, status);
2148  
2149  	kfree(req);
2150  	usb_free_urb(urb);
2151  }
2152  
2153  /*
2154   * The caller must make sure that device can't be put into suspend
2155   * state until the control URB completes.
2156   */
usbnet_write_cmd_async(struct usbnet * dev,u8 cmd,u8 reqtype,u16 value,u16 index,const void * data,u16 size)2157  int usbnet_write_cmd_async(struct usbnet *dev, u8 cmd, u8 reqtype,
2158  			   u16 value, u16 index, const void *data, u16 size)
2159  {
2160  	struct usb_ctrlrequest *req;
2161  	struct urb *urb;
2162  	int err = -ENOMEM;
2163  	void *buf = NULL;
2164  
2165  	netdev_dbg(dev->net, "usbnet_write_cmd cmd=0x%02x reqtype=%02x"
2166  		   " value=0x%04x index=0x%04x size=%d\n",
2167  		   cmd, reqtype, value, index, size);
2168  
2169  	urb = usb_alloc_urb(0, GFP_ATOMIC);
2170  	if (!urb)
2171  		goto fail;
2172  
2173  	if (data) {
2174  		buf = kmemdup(data, size, GFP_ATOMIC);
2175  		if (!buf) {
2176  			netdev_err(dev->net, "Error allocating buffer"
2177  				   " in %s!\n", __func__);
2178  			goto fail_free_urb;
2179  		}
2180  	}
2181  
2182  	req = kmalloc(sizeof(struct usb_ctrlrequest), GFP_ATOMIC);
2183  	if (!req)
2184  		goto fail_free_buf;
2185  
2186  	req->bRequestType = reqtype;
2187  	req->bRequest = cmd;
2188  	req->wValue = cpu_to_le16(value);
2189  	req->wIndex = cpu_to_le16(index);
2190  	req->wLength = cpu_to_le16(size);
2191  
2192  	usb_fill_control_urb(urb, dev->udev,
2193  			     usb_sndctrlpipe(dev->udev, 0),
2194  			     (void *)req, buf, size,
2195  			     usbnet_async_cmd_cb, req);
2196  	urb->transfer_flags |= URB_FREE_BUFFER;
2197  
2198  	err = usb_submit_urb(urb, GFP_ATOMIC);
2199  	if (err < 0) {
2200  		netdev_err(dev->net, "Error submitting the control"
2201  			   " message: status=%d\n", err);
2202  		goto fail_free_all;
2203  	}
2204  	return 0;
2205  
2206  fail_free_all:
2207  	kfree(req);
2208  fail_free_buf:
2209  	kfree(buf);
2210  	/*
2211  	 * avoid a double free
2212  	 * needed because the flag can be set only
2213  	 * after filling the URB
2214  	 */
2215  	urb->transfer_flags = 0;
2216  fail_free_urb:
2217  	usb_free_urb(urb);
2218  fail:
2219  	return err;
2220  
2221  }
2222  EXPORT_SYMBOL_GPL(usbnet_write_cmd_async);
2223  /*-------------------------------------------------------------------------*/
2224  
usbnet_init(void)2225  static int __init usbnet_init(void)
2226  {
2227  	/* Compiler should optimize this out. */
2228  	BUILD_BUG_ON(
2229  		sizeof_field(struct sk_buff, cb) < sizeof(struct skb_data));
2230  
2231  	return 0;
2232  }
2233  module_init(usbnet_init);
2234  
usbnet_exit(void)2235  static void __exit usbnet_exit(void)
2236  {
2237  }
2238  module_exit(usbnet_exit);
2239  
2240  MODULE_AUTHOR("David Brownell");
2241  MODULE_DESCRIPTION("USB network driver framework");
2242  MODULE_LICENSE("GPL");
2243