usbnet.c (ef9d884dadd4c9f2c8432a6b82309ae4a133a35d) usbnet.c (24ead29915352d4689a5972c65307a073b229fb4)
1/*
2 * USB Network driver infrastructure
3 * Copyright (C) 2000-2005 by David Brownell
4 * Copyright (C) 2003-2005 David Hollis <dhollis@davehollis.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or

--- 166 unchanged lines hidden (view full) ---

175 }
176 for (i = tmp = 0; i < 6; i++, tmp += 2)
177 dev->net->dev_addr [i] =
178 (hex_to_bin(buf[tmp]) << 4) + hex_to_bin(buf[tmp + 1]);
179 return 0;
180}
181EXPORT_SYMBOL_GPL(usbnet_get_ethernet_addr);
182
1/*
2 * USB Network driver infrastructure
3 * Copyright (C) 2000-2005 by David Brownell
4 * Copyright (C) 2003-2005 David Hollis <dhollis@davehollis.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or

--- 166 unchanged lines hidden (view full) ---

175 }
176 for (i = tmp = 0; i < 6; i++, tmp += 2)
177 dev->net->dev_addr [i] =
178 (hex_to_bin(buf[tmp]) << 4) + hex_to_bin(buf[tmp + 1]);
179 return 0;
180}
181EXPORT_SYMBOL_GPL(usbnet_get_ethernet_addr);
182
183static void intr_complete (struct urb *urb);
183static void intr_complete (struct urb *urb)
184{
185 struct usbnet *dev = urb->context;
186 int status = urb->status;
184
187
188 switch (status) {
189 /* success */
190 case 0:
191 dev->driver_info->status(dev, urb);
192 break;
193
194 /* software-driven interface shutdown */
195 case -ENOENT: /* urb killed */
196 case -ESHUTDOWN: /* hardware gone */
197 netif_dbg(dev, ifdown, dev->net,
198 "intr shutdown, code %d\n", status);
199 return;
200
201 /* NOTE: not throttling like RX/TX, since this endpoint
202 * already polls infrequently
203 */
204 default:
205 netdev_dbg(dev->net, "intr status %d\n", status);
206 break;
207 }
208
209 if (!netif_running (dev->net))
210 return;
211
212 memset(urb->transfer_buffer, 0, urb->transfer_buffer_length);
213 status = usb_submit_urb (urb, GFP_ATOMIC);
214 if (status != 0)
215 netif_err(dev, timer, dev->net,
216 "intr resubmit --> %d\n", status);
217}
218
185static int init_status (struct usbnet *dev, struct usb_interface *intf)
186{
187 char *buf = NULL;
188 unsigned pipe = 0;
189 unsigned maxp;
190 unsigned period;
191
192 if (!dev->driver_info->status)

--- 321 unchanged lines hidden (view full) ---

514 usb_mark_last_busy(dev->udev);
515 return;
516 }
517 usb_free_urb (urb);
518 }
519 netif_dbg(dev, rx_err, dev->net, "no read resubmitted\n");
520}
521
219static int init_status (struct usbnet *dev, struct usb_interface *intf)
220{
221 char *buf = NULL;
222 unsigned pipe = 0;
223 unsigned maxp;
224 unsigned period;
225
226 if (!dev->driver_info->status)

--- 321 unchanged lines hidden (view full) ---

548 usb_mark_last_busy(dev->udev);
549 return;
550 }
551 usb_free_urb (urb);
552 }
553 netif_dbg(dev, rx_err, dev->net, "no read resubmitted\n");
554}
555
522static void intr_complete (struct urb *urb)
523{
524 struct usbnet *dev = urb->context;
525 int status = urb->status;
526
527 switch (status) {
528 /* success */
529 case 0:
530 dev->driver_info->status(dev, urb);
531 break;
532
533 /* software-driven interface shutdown */
534 case -ENOENT: /* urb killed */
535 case -ESHUTDOWN: /* hardware gone */
536 netif_dbg(dev, ifdown, dev->net,
537 "intr shutdown, code %d\n", status);
538 return;
539
540 /* NOTE: not throttling like RX/TX, since this endpoint
541 * already polls infrequently
542 */
543 default:
544 netdev_dbg(dev->net, "intr status %d\n", status);
545 break;
546 }
547
548 if (!netif_running (dev->net))
549 return;
550
551 memset(urb->transfer_buffer, 0, urb->transfer_buffer_length);
552 status = usb_submit_urb (urb, GFP_ATOMIC);
553 if (status != 0)
554 netif_err(dev, timer, dev->net,
555 "intr resubmit --> %d\n", status);
556}
557
558/*-------------------------------------------------------------------------*/
559void usbnet_pause_rx(struct usbnet *dev)
560{
561 set_bit(EVENT_RX_PAUSED, &dev->flags);
562
563 netif_dbg(dev, rx_status, dev->net, "paused rx queue enabled\n");
564}
565EXPORT_SYMBOL_GPL(usbnet_pause_rx);

--- 1033 unchanged lines hidden ---
556/*-------------------------------------------------------------------------*/
557void usbnet_pause_rx(struct usbnet *dev)
558{
559 set_bit(EVENT_RX_PAUSED, &dev->flags);
560
561 netif_dbg(dev, rx_status, dev->net, "paused rx queue enabled\n");
562}
563EXPORT_SYMBOL_GPL(usbnet_pause_rx);

--- 1033 unchanged lines hidden ---