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 ---