diff options
Diffstat (limited to 'drivers/net/usb')
-rw-r--r-- | drivers/net/usb/catc.c | 2 | ||||
-rw-r--r-- | drivers/net/usb/mcs7830.c | 4 | ||||
-rw-r--r-- | drivers/net/usb/pegasus.c | 41 | ||||
-rw-r--r-- | drivers/net/usb/smsc95xx.c | 4 | ||||
-rw-r--r-- | drivers/net/usb/usbnet.c | 5 |
5 files changed, 33 insertions, 23 deletions
diff --git a/drivers/net/usb/catc.c b/drivers/net/usb/catc.c index 466a89e24444..d7621239059a 100644 --- a/drivers/net/usb/catc.c +++ b/drivers/net/usb/catc.c | |||
@@ -271,8 +271,6 @@ static void catc_rx_done(struct urb *urb) | |||
271 | 271 | ||
272 | } while (pkt_start - (u8 *) urb->transfer_buffer < urb->actual_length); | 272 | } while (pkt_start - (u8 *) urb->transfer_buffer < urb->actual_length); |
273 | 273 | ||
274 | catc->netdev->last_rx = jiffies; | ||
275 | |||
276 | if (catc->is_f5u011) { | 274 | if (catc->is_f5u011) { |
277 | if (atomic_read(&catc->recq_sz)) { | 275 | if (atomic_read(&catc->recq_sz)) { |
278 | int status; | 276 | int status; |
diff --git a/drivers/net/usb/mcs7830.c b/drivers/net/usb/mcs7830.c index b5143509e8be..bbcc76ae3c9c 100644 --- a/drivers/net/usb/mcs7830.c +++ b/drivers/net/usb/mcs7830.c | |||
@@ -344,14 +344,14 @@ out: | |||
344 | static int mcs7830_mdio_read(struct net_device *netdev, int phy_id, | 344 | static int mcs7830_mdio_read(struct net_device *netdev, int phy_id, |
345 | int location) | 345 | int location) |
346 | { | 346 | { |
347 | struct usbnet *dev = netdev->priv; | 347 | struct usbnet *dev = netdev_priv(netdev); |
348 | return mcs7830_read_phy(dev, location); | 348 | return mcs7830_read_phy(dev, location); |
349 | } | 349 | } |
350 | 350 | ||
351 | static void mcs7830_mdio_write(struct net_device *netdev, int phy_id, | 351 | static void mcs7830_mdio_write(struct net_device *netdev, int phy_id, |
352 | int location, int val) | 352 | int location, int val) |
353 | { | 353 | { |
354 | struct usbnet *dev = netdev->priv; | 354 | struct usbnet *dev = netdev_priv(netdev); |
355 | mcs7830_write_phy(dev, location, val); | 355 | mcs7830_write_phy(dev, location, val); |
356 | } | 356 | } |
357 | 357 | ||
diff --git a/drivers/net/usb/pegasus.c b/drivers/net/usb/pegasus.c index 7914867110ed..075e8e94225e 100644 --- a/drivers/net/usb/pegasus.c +++ b/drivers/net/usb/pegasus.c | |||
@@ -1213,7 +1213,7 @@ static void pegasus_set_multicast(struct net_device *net) | |||
1213 | pegasus->eth_regs[EthCtrl0] |= RX_MULTICAST; | 1213 | pegasus->eth_regs[EthCtrl0] |= RX_MULTICAST; |
1214 | pegasus->eth_regs[EthCtrl2] &= ~RX_PROMISCUOUS; | 1214 | pegasus->eth_regs[EthCtrl2] &= ~RX_PROMISCUOUS; |
1215 | if (netif_msg_link(pegasus)) | 1215 | if (netif_msg_link(pegasus)) |
1216 | pr_info("%s: set allmulti\n", net->name); | 1216 | pr_debug("%s: set allmulti\n", net->name); |
1217 | } else { | 1217 | } else { |
1218 | pegasus->eth_regs[EthCtrl0] &= ~RX_MULTICAST; | 1218 | pegasus->eth_regs[EthCtrl0] &= ~RX_MULTICAST; |
1219 | pegasus->eth_regs[EthCtrl2] &= ~RX_PROMISCUOUS; | 1219 | pegasus->eth_regs[EthCtrl2] &= ~RX_PROMISCUOUS; |
@@ -1273,6 +1273,7 @@ static inline void setup_pegasus_II(pegasus_t * pegasus) | |||
1273 | } | 1273 | } |
1274 | 1274 | ||
1275 | 1275 | ||
1276 | static int pegasus_count; | ||
1276 | static struct workqueue_struct *pegasus_workqueue = NULL; | 1277 | static struct workqueue_struct *pegasus_workqueue = NULL; |
1277 | #define CARRIER_CHECK_DELAY (2 * HZ) | 1278 | #define CARRIER_CHECK_DELAY (2 * HZ) |
1278 | 1279 | ||
@@ -1301,6 +1302,18 @@ static int pegasus_blacklisted(struct usb_device *udev) | |||
1301 | return 0; | 1302 | return 0; |
1302 | } | 1303 | } |
1303 | 1304 | ||
1305 | /* we rely on probe() and remove() being serialized so we | ||
1306 | * don't need extra locking on pegasus_count. | ||
1307 | */ | ||
1308 | static void pegasus_dec_workqueue(void) | ||
1309 | { | ||
1310 | pegasus_count--; | ||
1311 | if (pegasus_count == 0) { | ||
1312 | destroy_workqueue(pegasus_workqueue); | ||
1313 | pegasus_workqueue = NULL; | ||
1314 | } | ||
1315 | } | ||
1316 | |||
1304 | static int pegasus_probe(struct usb_interface *intf, | 1317 | static int pegasus_probe(struct usb_interface *intf, |
1305 | const struct usb_device_id *id) | 1318 | const struct usb_device_id *id) |
1306 | { | 1319 | { |
@@ -1309,14 +1322,18 @@ static int pegasus_probe(struct usb_interface *intf, | |||
1309 | pegasus_t *pegasus; | 1322 | pegasus_t *pegasus; |
1310 | int dev_index = id - pegasus_ids; | 1323 | int dev_index = id - pegasus_ids; |
1311 | int res = -ENOMEM; | 1324 | int res = -ENOMEM; |
1312 | DECLARE_MAC_BUF(mac); | ||
1313 | 1325 | ||
1314 | usb_get_dev(dev); | 1326 | if (pegasus_blacklisted(dev)) |
1327 | return -ENODEV; | ||
1315 | 1328 | ||
1316 | if (pegasus_blacklisted(dev)) { | 1329 | if (pegasus_count == 0) { |
1317 | res = -ENODEV; | 1330 | pegasus_workqueue = create_singlethread_workqueue("pegasus"); |
1318 | goto out; | 1331 | if (!pegasus_workqueue) |
1332 | return -ENOMEM; | ||
1319 | } | 1333 | } |
1334 | pegasus_count++; | ||
1335 | |||
1336 | usb_get_dev(dev); | ||
1320 | 1337 | ||
1321 | net = alloc_etherdev(sizeof(struct pegasus)); | 1338 | net = alloc_etherdev(sizeof(struct pegasus)); |
1322 | if (!net) { | 1339 | if (!net) { |
@@ -1386,10 +1403,10 @@ static int pegasus_probe(struct usb_interface *intf, | |||
1386 | queue_delayed_work(pegasus_workqueue, &pegasus->carrier_check, | 1403 | queue_delayed_work(pegasus_workqueue, &pegasus->carrier_check, |
1387 | CARRIER_CHECK_DELAY); | 1404 | CARRIER_CHECK_DELAY); |
1388 | 1405 | ||
1389 | dev_info(&intf->dev, "%s, %s, %s\n", | 1406 | dev_info(&intf->dev, "%s, %s, %pM\n", |
1390 | net->name, | 1407 | net->name, |
1391 | usb_dev_id[dev_index].name, | 1408 | usb_dev_id[dev_index].name, |
1392 | print_mac(mac, net->dev_addr)); | 1409 | net->dev_addr); |
1393 | return 0; | 1410 | return 0; |
1394 | 1411 | ||
1395 | out3: | 1412 | out3: |
@@ -1401,6 +1418,7 @@ out1: | |||
1401 | free_netdev(net); | 1418 | free_netdev(net); |
1402 | out: | 1419 | out: |
1403 | usb_put_dev(dev); | 1420 | usb_put_dev(dev); |
1421 | pegasus_dec_workqueue(); | ||
1404 | return res; | 1422 | return res; |
1405 | } | 1423 | } |
1406 | 1424 | ||
@@ -1426,6 +1444,7 @@ static void pegasus_disconnect(struct usb_interface *intf) | |||
1426 | pegasus->rx_skb = NULL; | 1444 | pegasus->rx_skb = NULL; |
1427 | } | 1445 | } |
1428 | free_netdev(pegasus->net); | 1446 | free_netdev(pegasus->net); |
1447 | pegasus_dec_workqueue(); | ||
1429 | } | 1448 | } |
1430 | 1449 | ||
1431 | static int pegasus_suspend (struct usb_interface *intf, pm_message_t message) | 1450 | static int pegasus_suspend (struct usb_interface *intf, pm_message_t message) |
@@ -1469,7 +1488,7 @@ static struct usb_driver pegasus_driver = { | |||
1469 | .resume = pegasus_resume, | 1488 | .resume = pegasus_resume, |
1470 | }; | 1489 | }; |
1471 | 1490 | ||
1472 | static void parse_id(char *id) | 1491 | static void __init parse_id(char *id) |
1473 | { | 1492 | { |
1474 | unsigned int vendor_id=0, device_id=0, flags=0, i=0; | 1493 | unsigned int vendor_id=0, device_id=0, flags=0, i=0; |
1475 | char *token, *name=NULL; | 1494 | char *token, *name=NULL; |
@@ -1505,15 +1524,11 @@ static int __init pegasus_init(void) | |||
1505 | pr_info("%s: %s, " DRIVER_DESC "\n", driver_name, DRIVER_VERSION); | 1524 | pr_info("%s: %s, " DRIVER_DESC "\n", driver_name, DRIVER_VERSION); |
1506 | if (devid) | 1525 | if (devid) |
1507 | parse_id(devid); | 1526 | parse_id(devid); |
1508 | pegasus_workqueue = create_singlethread_workqueue("pegasus"); | ||
1509 | if (!pegasus_workqueue) | ||
1510 | return -ENOMEM; | ||
1511 | return usb_register(&pegasus_driver); | 1527 | return usb_register(&pegasus_driver); |
1512 | } | 1528 | } |
1513 | 1529 | ||
1514 | static void __exit pegasus_exit(void) | 1530 | static void __exit pegasus_exit(void) |
1515 | { | 1531 | { |
1516 | destroy_workqueue(pegasus_workqueue); | ||
1517 | usb_deregister(&pegasus_driver); | 1532 | usb_deregister(&pegasus_driver); |
1518 | } | 1533 | } |
1519 | 1534 | ||
diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c index 51e2f5d7d14e..e0d349f74642 100644 --- a/drivers/net/usb/smsc95xx.c +++ b/drivers/net/usb/smsc95xx.c | |||
@@ -759,7 +759,6 @@ static int smsc95xx_reset(struct usbnet *dev) | |||
759 | struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev->data[0]); | 759 | struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev->data[0]); |
760 | u32 read_buf, write_buf, burst_cap; | 760 | u32 read_buf, write_buf, burst_cap; |
761 | int ret = 0, timeout; | 761 | int ret = 0, timeout; |
762 | DECLARE_MAC_BUF(mac); | ||
763 | 762 | ||
764 | if (netif_msg_ifup(dev)) | 763 | if (netif_msg_ifup(dev)) |
765 | devdbg(dev, "entering smsc95xx_reset"); | 764 | devdbg(dev, "entering smsc95xx_reset"); |
@@ -818,8 +817,7 @@ static int smsc95xx_reset(struct usbnet *dev) | |||
818 | return ret; | 817 | return ret; |
819 | 818 | ||
820 | if (netif_msg_ifup(dev)) | 819 | if (netif_msg_ifup(dev)) |
821 | devdbg(dev, "MAC Address: %s", | 820 | devdbg(dev, "MAC Address: %pM", dev->net->dev_addr); |
822 | print_mac(mac, dev->net->dev_addr)); | ||
823 | 821 | ||
824 | ret = smsc95xx_read_reg(dev, HW_CFG, &read_buf); | 822 | ret = smsc95xx_read_reg(dev, HW_CFG, &read_buf); |
825 | if (ret < 0) { | 823 | if (ret < 0) { |
diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c index 02d25c743994..aa3149078888 100644 --- a/drivers/net/usb/usbnet.c +++ b/drivers/net/usb/usbnet.c | |||
@@ -1125,7 +1125,6 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod) | |||
1125 | struct usb_device *xdev; | 1125 | struct usb_device *xdev; |
1126 | int status; | 1126 | int status; |
1127 | const char *name; | 1127 | const char *name; |
1128 | DECLARE_MAC_BUF(mac); | ||
1129 | 1128 | ||
1130 | name = udev->dev.driver->name; | 1129 | name = udev->dev.driver->name; |
1131 | info = (struct driver_info *) prod->driver_info; | 1130 | info = (struct driver_info *) prod->driver_info; |
@@ -1236,11 +1235,11 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod) | |||
1236 | if (status) | 1235 | if (status) |
1237 | goto out3; | 1236 | goto out3; |
1238 | if (netif_msg_probe (dev)) | 1237 | if (netif_msg_probe (dev)) |
1239 | devinfo (dev, "register '%s' at usb-%s-%s, %s, %s", | 1238 | devinfo (dev, "register '%s' at usb-%s-%s, %s, %pM", |
1240 | udev->dev.driver->name, | 1239 | udev->dev.driver->name, |
1241 | xdev->bus->bus_name, xdev->devpath, | 1240 | xdev->bus->bus_name, xdev->devpath, |
1242 | dev->driver_info->description, | 1241 | dev->driver_info->description, |
1243 | print_mac(mac, net->dev_addr)); | 1242 | net->dev_addr); |
1244 | 1243 | ||
1245 | // ok, it's ready to go. | 1244 | // ok, it's ready to go. |
1246 | usb_set_intfdata (udev, dev); | 1245 | usb_set_intfdata (udev, dev); |