net: cdc_ncm: set correct dev->hard_mtu
authorBjørn Mork <bjorn@mork.no>
Fri, 1 Nov 2013 10:16:52 +0000 (11:16 +0100)
committerDavid S. Miller <davem@davemloft.net>
Sat, 2 Nov 2013 06:02:03 +0000 (02:02 -0400)
usbnet use the hard_mtu value for sizing the tx queue and nothing
else.  We will be transmitting buffers of up to tx_max size, so
that's the proper value to give usbnet.

The individual datagram size is completely irrelevant here.

Cc: Alexey Orishko <alexey.orishko@gmail.com>
Signed-off-by: Bjørn Mork <bjorn@mork.no>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/usb/cdc_ncm.c

index 8fc1a06..c40f742 100644 (file)
@@ -404,13 +404,6 @@ int cdc_ncm_bind_common(struct usbnet *dev, struct usb_interface *intf, u8 data_
 
                        ctx->ether_desc =
                                        (const struct usb_cdc_ether_desc *)buf;
-                       dev->hard_mtu =
-                               le16_to_cpu(ctx->ether_desc->wMaxSegmentSize);
-
-                       if (dev->hard_mtu < CDC_NCM_MIN_DATAGRAM_SIZE)
-                               dev->hard_mtu = CDC_NCM_MIN_DATAGRAM_SIZE;
-                       else if (dev->hard_mtu > CDC_NCM_MAX_DATAGRAM_SIZE)
-                               dev->hard_mtu = CDC_NCM_MAX_DATAGRAM_SIZE;
                        break;
 
                case USB_CDC_NCM_TYPE:
@@ -485,6 +478,8 @@ advance:
                dev_info(&dev->udev->dev, "MAC-Address: %pM\n", dev->net->dev_addr);
        }
 
+       /* usbnet use these values for sizing tx/rx queues */
+       dev->hard_mtu = ctx->tx_max;
        dev->rx_urb_size = ctx->rx_max;
 
        return 0;