Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=500d2c2f7b8c1cf6194dc9e8f47c6e2295fc5be5
Commit:     500d2c2f7b8c1cf6194dc9e8f47c6e2295fc5be5
Parent:     b88219f8a2028a1ca2dd17aa7c9d9b643615646e
Author:     Thomas Sailer <[EMAIL PROTECTED]>
AuthorDate: Wed Oct 24 00:47:19 2007 +0200
Committer:  Jeff Garzik <[EMAIL PROTECTED]>
CommitDate: Thu Oct 25 03:34:59 2007 -0400

    rndis_host: reduce MTU instead of refusing to talk to devices with low max 
packet size
    
    This patch makes the host RNDIS driver talk to RNDIS devices with an MTU
    less than 1.5k, instead of refusing to talk to such a device.
    
    Signed-Off-by: Thomas Sailer <[EMAIL PROTECTED]>
    Acked-by: David Brownell <[EMAIL PROTECTED]>
    
    --
    
    Hi Jeff,
    are you the right person to send this to?
    Nobody else seems to be wanting to forward this to Linus...
    
    Thanks,
    Tom
    
    Signed-off-by: Jeff Garzik <[EMAIL PROTECTED]>
---
 drivers/net/usb/rndis_host.c |   18 +++++++++++++-----
 1 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c
index cd991a0..1ebe325 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 ... */
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to