diff options
Diffstat (limited to 'drivers/net/usb/rndis_host.c')
-rw-r--r-- | drivers/net/usb/rndis_host.c | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c index f56dec6119c3..dd8a4adf48ca 100644 --- a/drivers/net/usb/rndis_host.c +++ b/drivers/net/usb/rndis_host.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/etherdevice.h> | 22 | #include <linux/etherdevice.h> |
23 | #include <linux/ethtool.h> | 23 | #include <linux/ethtool.h> |
24 | #include <linux/workqueue.h> | 24 | #include <linux/workqueue.h> |
25 | #include <linux/slab.h> | ||
25 | #include <linux/mii.h> | 26 | #include <linux/mii.h> |
26 | #include <linux/usb.h> | 27 | #include <linux/usb.h> |
27 | #include <linux/usb/cdc.h> | 28 | #include <linux/usb/cdc.h> |
@@ -57,8 +58,8 @@ | |||
57 | */ | 58 | */ |
58 | void rndis_status(struct usbnet *dev, struct urb *urb) | 59 | void rndis_status(struct usbnet *dev, struct urb *urb) |
59 | { | 60 | { |
60 | devdbg(dev, "rndis status urb, len %d stat %d", | 61 | netdev_dbg(dev->net, "rndis status urb, len %d stat %d\n", |
61 | urb->actual_length, urb->status); | 62 | urb->actual_length, urb->status); |
62 | // FIXME for keepalives, respond immediately (asynchronously) | 63 | // FIXME for keepalives, respond immediately (asynchronously) |
63 | // if not an RNDIS status, do like cdc_status(dev,urb) does | 64 | // if not an RNDIS status, do like cdc_status(dev,urb) does |
64 | } | 65 | } |
@@ -114,8 +115,8 @@ int rndis_command(struct usbnet *dev, struct rndis_msg_hdr *buf, int buflen) | |||
114 | */ | 115 | */ |
115 | 116 | ||
116 | /* Issue the request; xid is unique, don't bother byteswapping it */ | 117 | /* Issue the request; xid is unique, don't bother byteswapping it */ |
117 | if (likely(buf->msg_type != RNDIS_MSG_HALT | 118 | if (likely(buf->msg_type != RNDIS_MSG_HALT && |
118 | && buf->msg_type != RNDIS_MSG_RESET)) { | 119 | buf->msg_type != RNDIS_MSG_RESET)) { |
119 | xid = dev->xid++; | 120 | xid = dev->xid++; |
120 | if (!xid) | 121 | if (!xid) |
121 | xid = dev->xid++; | 122 | xid = dev->xid++; |
@@ -335,8 +336,8 @@ generic_rndis_bind(struct usbnet *dev, struct usb_interface *intf, int flags) | |||
335 | 336 | ||
336 | dev->maxpacket = usb_maxpacket(dev->udev, dev->out, 1); | 337 | dev->maxpacket = usb_maxpacket(dev->udev, dev->out, 1); |
337 | if (dev->maxpacket == 0) { | 338 | if (dev->maxpacket == 0) { |
338 | if (netif_msg_probe(dev)) | 339 | netif_dbg(dev, probe, dev->net, |
339 | dev_dbg(&intf->dev, "dev->maxpacket can't be 0\n"); | 340 | "dev->maxpacket can't be 0\n"); |
340 | retval = -EINVAL; | 341 | retval = -EINVAL; |
341 | goto fail_and_release; | 342 | goto fail_and_release; |
342 | } | 343 | } |
@@ -394,17 +395,15 @@ generic_rndis_bind(struct usbnet *dev, struct usb_interface *intf, int flags) | |||
394 | } | 395 | } |
395 | if ((flags & FLAG_RNDIS_PHYM_WIRELESS) && | 396 | if ((flags & FLAG_RNDIS_PHYM_WIRELESS) && |
396 | *phym != RNDIS_PHYSICAL_MEDIUM_WIRELESS_LAN) { | 397 | *phym != RNDIS_PHYSICAL_MEDIUM_WIRELESS_LAN) { |
397 | if (netif_msg_probe(dev)) | 398 | netif_dbg(dev, probe, dev->net, |
398 | dev_dbg(&intf->dev, "driver requires wireless " | 399 | "driver requires wireless physical medium, but device is not\n"); |
399 | "physical medium, but device is not.\n"); | ||
400 | retval = -ENODEV; | 400 | retval = -ENODEV; |
401 | goto halt_fail_and_release; | 401 | goto halt_fail_and_release; |
402 | } | 402 | } |
403 | if ((flags & FLAG_RNDIS_PHYM_NOT_WIRELESS) && | 403 | if ((flags & FLAG_RNDIS_PHYM_NOT_WIRELESS) && |
404 | *phym == RNDIS_PHYSICAL_MEDIUM_WIRELESS_LAN) { | 404 | *phym == RNDIS_PHYSICAL_MEDIUM_WIRELESS_LAN) { |
405 | if (netif_msg_probe(dev)) | 405 | netif_dbg(dev, probe, dev->net, |
406 | dev_dbg(&intf->dev, "driver requires non-wireless " | 406 | "driver requires non-wireless physical medium, but device is wireless.\n"); |
407 | "physical medium, but device is wireless.\n"); | ||
408 | retval = -ENODEV; | 407 | retval = -ENODEV; |
409 | goto halt_fail_and_release; | 408 | goto halt_fail_and_release; |
410 | } | 409 | } |
@@ -493,13 +492,13 @@ int rndis_rx_fixup(struct usbnet *dev, struct sk_buff *skb) | |||
493 | data_len = le32_to_cpu(hdr->data_len); | 492 | data_len = le32_to_cpu(hdr->data_len); |
494 | 493 | ||
495 | /* don't choke if we see oob, per-packet data, etc */ | 494 | /* don't choke if we see oob, per-packet data, etc */ |
496 | if (unlikely(hdr->msg_type != RNDIS_MSG_PACKET | 495 | if (unlikely(hdr->msg_type != RNDIS_MSG_PACKET || |
497 | || skb->len < msg_len | 496 | skb->len < msg_len || |
498 | || (data_offset + data_len + 8) > msg_len)) { | 497 | (data_offset + data_len + 8) > msg_len)) { |
499 | dev->net->stats.rx_frame_errors++; | 498 | dev->net->stats.rx_frame_errors++; |
500 | devdbg(dev, "bad rndis message %d/%d/%d/%d, len %d", | 499 | netdev_dbg(dev->net, "bad rndis message %d/%d/%d/%d, len %d\n", |
501 | le32_to_cpu(hdr->msg_type), | 500 | le32_to_cpu(hdr->msg_type), |
502 | msg_len, data_offset, data_len, skb->len); | 501 | msg_len, data_offset, data_len, skb->len); |
503 | return 0; | 502 | return 0; |
504 | } | 503 | } |
505 | skb_pull(skb, 8 + data_offset); | 504 | skb_pull(skb, 8 + data_offset); |