aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/usb
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/usb')
-rw-r--r--drivers/net/usb/asix.c10
-rw-r--r--drivers/net/usb/cdc-phonet.c10
-rw-r--r--drivers/net/usb/cdc_ncm.c4
-rw-r--r--drivers/net/usb/pegasus.c8
-rw-r--r--drivers/net/usb/smsc75xx.c5
-rw-r--r--drivers/net/usb/smsc95xx.c5
6 files changed, 25 insertions, 17 deletions
diff --git a/drivers/net/usb/asix.c b/drivers/net/usb/asix.c
index e6fed4d4cb7..dbdca225b84 100644
--- a/drivers/net/usb/asix.c
+++ b/drivers/net/usb/asix.c
@@ -36,7 +36,7 @@
36#include <linux/usb/usbnet.h> 36#include <linux/usb/usbnet.h>
37#include <linux/slab.h> 37#include <linux/slab.h>
38 38
39#define DRIVER_VERSION "08-Nov-2011" 39#define DRIVER_VERSION "22-Dec-2011"
40#define DRIVER_NAME "asix" 40#define DRIVER_NAME "asix"
41 41
42/* ASIX AX8817X based USB 2.0 Ethernet Devices */ 42/* ASIX AX8817X based USB 2.0 Ethernet Devices */
@@ -689,6 +689,10 @@ asix_get_wol(struct net_device *net, struct ethtool_wolinfo *wolinfo)
689 } 689 }
690 wolinfo->supported = WAKE_PHY | WAKE_MAGIC; 690 wolinfo->supported = WAKE_PHY | WAKE_MAGIC;
691 wolinfo->wolopts = 0; 691 wolinfo->wolopts = 0;
692 if (opt & AX_MONITOR_LINK)
693 wolinfo->wolopts |= WAKE_PHY;
694 if (opt & AX_MONITOR_MAGIC)
695 wolinfo->wolopts |= WAKE_MAGIC;
692} 696}
693 697
694static int 698static int
@@ -1655,6 +1659,10 @@ static const struct usb_device_id products [] = {
1655 // ASIX 88772a 1659 // ASIX 88772a
1656 USB_DEVICE(0x0db0, 0xa877), 1660 USB_DEVICE(0x0db0, 0xa877),
1657 .driver_info = (unsigned long) &ax88772_info, 1661 .driver_info = (unsigned long) &ax88772_info,
1662}, {
1663 // Asus USB Ethernet Adapter
1664 USB_DEVICE (0x0b95, 0x7e2b),
1665 .driver_info = (unsigned long) &ax88772_info,
1658}, 1666},
1659 { }, // END 1667 { }, // END
1660}; 1668};
diff --git a/drivers/net/usb/cdc-phonet.c b/drivers/net/usb/cdc-phonet.c
index a60d0069cc4..331e44056f5 100644
--- a/drivers/net/usb/cdc-phonet.c
+++ b/drivers/net/usb/cdc-phonet.c
@@ -130,7 +130,7 @@ static int rx_submit(struct usbpn_dev *pnd, struct urb *req, gfp_t gfp_flags)
130 struct page *page; 130 struct page *page;
131 int err; 131 int err;
132 132
133 page = __netdev_alloc_page(dev, gfp_flags); 133 page = alloc_page(gfp_flags);
134 if (!page) 134 if (!page)
135 return -ENOMEM; 135 return -ENOMEM;
136 136
@@ -140,7 +140,7 @@ static int rx_submit(struct usbpn_dev *pnd, struct urb *req, gfp_t gfp_flags)
140 err = usb_submit_urb(req, gfp_flags); 140 err = usb_submit_urb(req, gfp_flags);
141 if (unlikely(err)) { 141 if (unlikely(err)) {
142 dev_dbg(&dev->dev, "RX submit error (%d)\n", err); 142 dev_dbg(&dev->dev, "RX submit error (%d)\n", err);
143 netdev_free_page(dev, page); 143 put_page(page);
144 } 144 }
145 return err; 145 return err;
146} 146}
@@ -208,9 +208,9 @@ static void rx_complete(struct urb *req)
208 dev->stats.rx_errors++; 208 dev->stats.rx_errors++;
209resubmit: 209resubmit:
210 if (page) 210 if (page)
211 netdev_free_page(dev, page); 211 put_page(page);
212 if (req) 212 if (req)
213 rx_submit(pnd, req, GFP_ATOMIC); 213 rx_submit(pnd, req, GFP_ATOMIC | __GFP_COLD);
214} 214}
215 215
216static int usbpn_close(struct net_device *dev); 216static int usbpn_close(struct net_device *dev);
@@ -229,7 +229,7 @@ static int usbpn_open(struct net_device *dev)
229 for (i = 0; i < rxq_size; i++) { 229 for (i = 0; i < rxq_size; i++) {
230 struct urb *req = usb_alloc_urb(0, GFP_KERNEL); 230 struct urb *req = usb_alloc_urb(0, GFP_KERNEL);
231 231
232 if (!req || rx_submit(pnd, req, GFP_KERNEL)) { 232 if (!req || rx_submit(pnd, req, GFP_KERNEL | __GFP_COLD)) {
233 usbpn_close(dev); 233 usbpn_close(dev);
234 return -ENOMEM; 234 return -ENOMEM;
235 } 235 }
diff --git a/drivers/net/usb/cdc_ncm.c b/drivers/net/usb/cdc_ncm.c
index f06fb78383a..009dd0f1853 100644
--- a/drivers/net/usb/cdc_ncm.c
+++ b/drivers/net/usb/cdc_ncm.c
@@ -465,12 +465,10 @@ static int cdc_ncm_bind(struct usbnet *dev, struct usb_interface *intf)
465 int temp; 465 int temp;
466 u8 iface_no; 466 u8 iface_no;
467 467
468 ctx = kmalloc(sizeof(*ctx), GFP_KERNEL); 468 ctx = kzalloc(sizeof(*ctx), GFP_KERNEL);
469 if (ctx == NULL) 469 if (ctx == NULL)
470 return -ENODEV; 470 return -ENODEV;
471 471
472 memset(ctx, 0, sizeof(*ctx));
473
474 init_timer(&ctx->tx_timer); 472 init_timer(&ctx->tx_timer);
475 spin_lock_init(&ctx->mtx); 473 spin_lock_init(&ctx->mtx);
476 ctx->netdev = dev->net; 474 ctx->netdev = dev->net;
diff --git a/drivers/net/usb/pegasus.c b/drivers/net/usb/pegasus.c
index 769f5090bda..5d99b8cacd7 100644
--- a/drivers/net/usb/pegasus.c
+++ b/drivers/net/usb/pegasus.c
@@ -55,8 +55,8 @@ static const char driver_name[] = "pegasus";
55#define BMSR_MEDIA (BMSR_10HALF | BMSR_10FULL | BMSR_100HALF | \ 55#define BMSR_MEDIA (BMSR_10HALF | BMSR_10FULL | BMSR_100HALF | \
56 BMSR_100FULL | BMSR_ANEGCAPABLE) 56 BMSR_100FULL | BMSR_ANEGCAPABLE)
57 57
58static int loopback; 58static bool loopback;
59static int mii_mode; 59static bool mii_mode;
60static char *devid; 60static char *devid;
61 61
62static struct usb_eth_dev usb_dev_id[] = { 62static struct usb_eth_dev usb_dev_id[] = {
@@ -517,7 +517,7 @@ static inline int reset_mac(pegasus_t *pegasus)
517 for (i = 0; i < REG_TIMEOUT; i++) { 517 for (i = 0; i < REG_TIMEOUT; i++) {
518 get_registers(pegasus, EthCtrl1, 1, &data); 518 get_registers(pegasus, EthCtrl1, 1, &data);
519 if (~data & 0x08) { 519 if (~data & 0x08) {
520 if (loopback & 1) 520 if (loopback)
521 break; 521 break;
522 if (mii_mode && (pegasus->features & HAS_HOME_PNA)) 522 if (mii_mode && (pegasus->features & HAS_HOME_PNA))
523 set_register(pegasus, Gpio1, 0x34); 523 set_register(pegasus, Gpio1, 0x34);
@@ -561,7 +561,7 @@ static int enable_net_traffic(struct net_device *dev, struct usb_device *usb)
561 data[1] |= 0x10; /* set 100 Mbps */ 561 data[1] |= 0x10; /* set 100 Mbps */
562 if (mii_mode) 562 if (mii_mode)
563 data[1] = 0; 563 data[1] = 0;
564 data[2] = (loopback & 1) ? 0x09 : 0x01; 564 data[2] = loopback ? 0x09 : 0x01;
565 565
566 memcpy(pegasus->eth_regs, data, sizeof(data)); 566 memcpy(pegasus->eth_regs, data, sizeof(data));
567 ret = set_registers(pegasus, EthCtrl0, 3, data); 567 ret = set_registers(pegasus, EthCtrl0, 3, data);
diff --git a/drivers/net/usb/smsc75xx.c b/drivers/net/usb/smsc75xx.c
index a5b9b12ef26..0d5da82f0ff 100644
--- a/drivers/net/usb/smsc75xx.c
+++ b/drivers/net/usb/smsc75xx.c
@@ -76,7 +76,7 @@ struct usb_context {
76 struct usbnet *dev; 76 struct usbnet *dev;
77}; 77};
78 78
79static int turbo_mode = true; 79static bool turbo_mode = true;
80module_param(turbo_mode, bool, 0644); 80module_param(turbo_mode, bool, 0644);
81MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction"); 81MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction");
82 82
@@ -728,7 +728,8 @@ static int smsc75xx_change_mtu(struct net_device *netdev, int new_mtu)
728} 728}
729 729
730/* Enable or disable Rx checksum offload engine */ 730/* Enable or disable Rx checksum offload engine */
731static int smsc75xx_set_features(struct net_device *netdev, u32 features) 731static int smsc75xx_set_features(struct net_device *netdev,
732 netdev_features_t features)
732{ 733{
733 struct usbnet *dev = netdev_priv(netdev); 734 struct usbnet *dev = netdev_priv(netdev);
734 struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev->data[0]); 735 struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev->data[0]);
diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
index eff67678c5a..db217ad66f2 100644
--- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c
@@ -59,7 +59,7 @@ struct usb_context {
59 struct usbnet *dev; 59 struct usbnet *dev;
60}; 60};
61 61
62static int turbo_mode = true; 62static bool turbo_mode = true;
63module_param(turbo_mode, bool, 0644); 63module_param(turbo_mode, bool, 0644);
64MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction"); 64MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction");
65 65
@@ -516,7 +516,8 @@ static void smsc95xx_status(struct usbnet *dev, struct urb *urb)
516} 516}
517 517
518/* Enable or disable Tx & Rx checksum offload engines */ 518/* Enable or disable Tx & Rx checksum offload engines */
519static int smsc95xx_set_features(struct net_device *netdev, u32 features) 519static int smsc95xx_set_features(struct net_device *netdev,
520 netdev_features_t features)
520{ 521{
521 struct usbnet *dev = netdev_priv(netdev); 522 struct usbnet *dev = netdev_priv(netdev);
522 u32 read_buf; 523 u32 read_buf;