summaryrefslogtreecommitdiffstats
path: root/drivers/net/usb/rndis_host.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-25 15:19:59 -0700
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-25 15:19:59 -0700
commit2304c3ac3634d2de59f71f7b2c58aab05959124b (patch)
tree88e13187b64f8bfdea841c4a4476ac626e4eec28 /drivers/net/usb/rndis_host.c
parentfcd05809e1b2f64ece7a0b0bbe94ed29505cd2e0 (diff)
parent96fd4cd3e40e240f0c385af87f58e74da8b7099a (diff)
downloadtalos-op-linux-2304c3ac3634d2de59f71f7b2c58aab05959124b.tar.gz
talos-op-linux-2304c3ac3634d2de59f71f7b2c58aab05959124b.zip
Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/netdev-2.6
* 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/netdev-2.6: [netdrvr] forcedeth: add MCP77 device IDs rndis_host: reduce MTU instead of refusing to talk to devices with low max packet size cpmac: update to new fixed phy driver interface cpmac: convert to napi_struct interface cpmac: use print_mac() instead of MAC_FMT natsemi: fix oops, link back netdevice from private-struct ehea: fix port_napi_disable/enable bonding/bond_main.c: fix cut'n'paste error make bonding/bond_main.c:bond_deinit() static drivers/net/ipg.c: cleanups remove Documentation/networking/net-modules.txt
Diffstat (limited to 'drivers/net/usb/rndis_host.c')
-rw-r--r--drivers/net/usb/rndis_host.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c
index cd991a0f75bb..1ebe3259be0d 100644
--- a/drivers/net/usb/rndis_host.c
+++ b/drivers/net/usb/rndis_host.c
@@ -512,11 +512,19 @@ static int rndis_bind(struct usbnet *dev, struct usb_interface *intf)
}
tmp = le32_to_cpu(u.init_c->max_transfer_size);
if (tmp < dev->hard_mtu) {
- dev_err(&intf->dev,
- "dev can't take %u byte packets (max %u)\n",
- dev->hard_mtu, tmp);
- retval = -EINVAL;
- goto fail_and_release;
+ if (tmp <= net->hard_header_len) {
+ dev_err(&intf->dev,
+ "dev can't take %u byte packets (max %u)\n",
+ dev->hard_mtu, tmp);
+ retval = -EINVAL;
+ goto fail_and_release;
+ }
+ dev->hard_mtu = tmp;
+ net->mtu = dev->hard_mtu - net->hard_header_len;
+ dev_warn(&intf->dev,
+ "dev can't take %u byte packets (max %u), "
+ "adjusting MTU to %u\n",
+ dev->hard_mtu, tmp, net->mtu);
}
/* REVISIT: peripheral "alignment" request is ignored ... */
OpenPOWER on IntegriCloud