aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/usb/rndis_host.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/usb/rndis_host.c')
-rw-r--r--drivers/net/usb/rndis_host.c35
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 */
58void rndis_status(struct usbnet *dev, struct urb *urb) 59void 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);