usbnet.c (a69e617e533edddf3fa3123149900f36e0a6dc74) | usbnet.c (e65af5403e462ccd7dff6a045a886c64da598c2e) |
---|---|
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/* --- 323 unchanged lines hidden (view full) --- 332 return; 333 } 334 335 /* only update if unset to allow minidriver rx_fixup override */ 336 if (skb->protocol == 0) 337 skb->protocol = eth_type_trans (skb, dev->net); 338 339 flags = u64_stats_update_begin_irqsave(&stats64->syncp); | 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/* --- 323 unchanged lines hidden (view full) --- 332 return; 333 } 334 335 /* only update if unset to allow minidriver rx_fixup override */ 336 if (skb->protocol == 0) 337 skb->protocol = eth_type_trans (skb, dev->net); 338 339 flags = u64_stats_update_begin_irqsave(&stats64->syncp); |
340 u64_stats_inc(&stats64->rx_packets); 341 u64_stats_add(&stats64->rx_bytes, skb->len); | 340 stats64->rx_packets++; 341 stats64->rx_bytes += skb->len; |
342 u64_stats_update_end_irqrestore(&stats64->syncp, flags); 343 344 netif_dbg(dev, rx_status, dev->net, "< rx, len %zu, type 0x%x\n", 345 skb->len + sizeof (struct ethhdr), skb->protocol); 346 memset (skb->cb, 0, sizeof (struct skb_data)); 347 348 if (skb_defer_rx_timestamp(skb)) 349 return; --- 494 unchanged lines hidden (view full) --- 844 usbnet_terminate_urbs(dev); 845 846 usbnet_status_stop(dev); 847 848 usbnet_purge_paused_rxq(dev); 849 850 mpn = !test_and_clear_bit(EVENT_NO_RUNTIME_PM, &dev->flags); 851 | 342 u64_stats_update_end_irqrestore(&stats64->syncp, flags); 343 344 netif_dbg(dev, rx_status, dev->net, "< rx, len %zu, type 0x%x\n", 345 skb->len + sizeof (struct ethhdr), skb->protocol); 346 memset (skb->cb, 0, sizeof (struct skb_data)); 347 348 if (skb_defer_rx_timestamp(skb)) 349 return; --- 494 unchanged lines hidden (view full) --- 844 usbnet_terminate_urbs(dev); 845 846 usbnet_status_stop(dev); 847 848 usbnet_purge_paused_rxq(dev); 849 850 mpn = !test_and_clear_bit(EVENT_NO_RUNTIME_PM, &dev->flags); 851 |
852 /* deferred work (timer, softirq, task) must also stop */ | 852 /* deferred work (task, timer, softirq) must also stop. 853 * can't flush_scheduled_work() until we drop rtnl (later), 854 * else workers could deadlock; so make workers a NOP. 855 */ |
853 dev->flags = 0; 854 del_timer_sync (&dev->delay); 855 tasklet_kill (&dev->bh); | 856 dev->flags = 0; 857 del_timer_sync (&dev->delay); 858 tasklet_kill (&dev->bh); |
856 cancel_work_sync(&dev->kevent); | |
857 if (!pm) 858 usb_autopm_put_interface(dev->intf); 859 860 if (info->manage_power && mpn) 861 info->manage_power(dev, 0); 862 else 863 usb_autopm_put_interface(dev->intf); 864 --- 386 unchanged lines hidden (view full) --- 1251 struct skb_data *entry = (struct skb_data *) skb->cb; 1252 struct usbnet *dev = entry->dev; 1253 1254 if (urb->status == 0) { 1255 struct pcpu_sw_netstats *stats64 = this_cpu_ptr(dev->net->tstats); 1256 unsigned long flags; 1257 1258 flags = u64_stats_update_begin_irqsave(&stats64->syncp); | 859 if (!pm) 860 usb_autopm_put_interface(dev->intf); 861 862 if (info->manage_power && mpn) 863 info->manage_power(dev, 0); 864 else 865 usb_autopm_put_interface(dev->intf); 866 --- 386 unchanged lines hidden (view full) --- 1253 struct skb_data *entry = (struct skb_data *) skb->cb; 1254 struct usbnet *dev = entry->dev; 1255 1256 if (urb->status == 0) { 1257 struct pcpu_sw_netstats *stats64 = this_cpu_ptr(dev->net->tstats); 1258 unsigned long flags; 1259 1260 flags = u64_stats_update_begin_irqsave(&stats64->syncp); |
1259 u64_stats_add(&stats64->tx_packets, entry->packets); 1260 u64_stats_add(&stats64->tx_bytes, entry->length); | 1261 stats64->tx_packets += entry->packets; 1262 stats64->tx_bytes += entry->length; |
1261 u64_stats_update_end_irqrestore(&stats64->syncp, flags); 1262 } else { 1263 dev->net->stats.tx_errors++; 1264 1265 switch (urb->status) { 1266 case -EPIPE: 1267 usbnet_defer_kevent (dev, EVENT_TX_HALT); 1268 break; --- 343 unchanged lines hidden (view full) --- 1612 netif_info(dev, probe, dev->net, "unregister '%s' usb-%s-%s, %s\n", 1613 intf->dev.driver->name, 1614 xdev->bus->bus_name, xdev->devpath, 1615 dev->driver_info->description); 1616 1617 net = dev->net; 1618 unregister_netdev (net); 1619 | 1263 u64_stats_update_end_irqrestore(&stats64->syncp, flags); 1264 } else { 1265 dev->net->stats.tx_errors++; 1266 1267 switch (urb->status) { 1268 case -EPIPE: 1269 usbnet_defer_kevent (dev, EVENT_TX_HALT); 1270 break; --- 343 unchanged lines hidden (view full) --- 1614 netif_info(dev, probe, dev->net, "unregister '%s' usb-%s-%s, %s\n", 1615 intf->dev.driver->name, 1616 xdev->bus->bus_name, xdev->devpath, 1617 dev->driver_info->description); 1618 1619 net = dev->net; 1620 unregister_netdev (net); 1621 |
1622 cancel_work_sync(&dev->kevent); 1623 |
|
1620 usb_scuttle_anchored_urbs(&dev->deferred); 1621 1622 if (dev->driver_info->unbind) 1623 dev->driver_info->unbind(dev, intf); 1624 1625 usb_kill_urb(dev->interrupt); 1626 usb_free_urb(dev->interrupt); 1627 kfree(dev->padding_pkt); --- 367 unchanged lines hidden (view full) --- 1995 void *buf = NULL; 1996 int err = -ENOMEM; 1997 1998 netdev_dbg(dev->net, "usbnet_read_cmd cmd=0x%02x reqtype=%02x" 1999 " value=0x%04x index=0x%04x size=%d\n", 2000 cmd, reqtype, value, index, size); 2001 2002 if (size) { | 1624 usb_scuttle_anchored_urbs(&dev->deferred); 1625 1626 if (dev->driver_info->unbind) 1627 dev->driver_info->unbind(dev, intf); 1628 1629 usb_kill_urb(dev->interrupt); 1630 usb_free_urb(dev->interrupt); 1631 kfree(dev->padding_pkt); --- 367 unchanged lines hidden (view full) --- 1999 void *buf = NULL; 2000 int err = -ENOMEM; 2001 2002 netdev_dbg(dev->net, "usbnet_read_cmd cmd=0x%02x reqtype=%02x" 2003 " value=0x%04x index=0x%04x size=%d\n", 2004 cmd, reqtype, value, index, size); 2005 2006 if (size) { |
2003 buf = kmalloc(size, GFP_KERNEL); | 2007 buf = kmalloc(size, GFP_NOIO); |
2004 if (!buf) 2005 goto out; 2006 } 2007 2008 err = usb_control_msg(dev->udev, usb_rcvctrlpipe(dev->udev, 0), 2009 cmd, reqtype, value, index, buf, size, 2010 USB_CTRL_GET_TIMEOUT); 2011 if (err > 0 && err <= size) { --- 15 unchanged lines hidden (view full) --- 2027 void *buf = NULL; 2028 int err = -ENOMEM; 2029 2030 netdev_dbg(dev->net, "usbnet_write_cmd cmd=0x%02x reqtype=%02x" 2031 " value=0x%04x index=0x%04x size=%d\n", 2032 cmd, reqtype, value, index, size); 2033 2034 if (data) { | 2008 if (!buf) 2009 goto out; 2010 } 2011 2012 err = usb_control_msg(dev->udev, usb_rcvctrlpipe(dev->udev, 0), 2013 cmd, reqtype, value, index, buf, size, 2014 USB_CTRL_GET_TIMEOUT); 2015 if (err > 0 && err <= size) { --- 15 unchanged lines hidden (view full) --- 2031 void *buf = NULL; 2032 int err = -ENOMEM; 2033 2034 netdev_dbg(dev->net, "usbnet_write_cmd cmd=0x%02x reqtype=%02x" 2035 " value=0x%04x index=0x%04x size=%d\n", 2036 cmd, reqtype, value, index, size); 2037 2038 if (data) { |
2035 buf = kmemdup(data, size, GFP_KERNEL); | 2039 buf = kmemdup(data, size, GFP_NOIO); |
2036 if (!buf) 2037 goto out; 2038 } else { 2039 if (size) { 2040 WARN_ON_ONCE(1); 2041 err = -EINVAL; 2042 goto out; 2043 } --- 169 unchanged lines hidden --- | 2040 if (!buf) 2041 goto out; 2042 } else { 2043 if (size) { 2044 WARN_ON_ONCE(1); 2045 err = -EINVAL; 2046 goto out; 2047 } --- 169 unchanged lines hidden --- |