|
@@ -215,19 +215,12 @@ static void cdc_ncm_update_rxtx_max(struct usbnet *dev, u32 new_rx, u32 new_tx)
|
|
|
min, max, val);
|
|
|
}
|
|
|
|
|
|
- /* usbnet use these values for sizing rx queues */
|
|
|
- dev->rx_urb_size = val;
|
|
|
-
|
|
|
/* inform device about NTB input size changes */
|
|
|
if (val != ctx->rx_max) {
|
|
|
__le32 dwNtbInMaxSize = cpu_to_le32(val);
|
|
|
|
|
|
dev_info(&dev->intf->dev, "setting rx_max = %u\n", val);
|
|
|
|
|
|
- /* need to unlink rx urbs before increasing buffer size */
|
|
|
- if (netif_running(dev->net) && dev->rx_urb_size > ctx->rx_max)
|
|
|
- usbnet_unlink_rx_urbs(dev);
|
|
|
-
|
|
|
/* tell device to use new size */
|
|
|
if (usbnet_write_cmd(dev, USB_CDC_SET_NTB_INPUT_SIZE,
|
|
|
USB_TYPE_CLASS | USB_DIR_OUT
|
|
@@ -238,6 +231,13 @@ static void cdc_ncm_update_rxtx_max(struct usbnet *dev, u32 new_rx, u32 new_tx)
|
|
|
ctx->rx_max = val;
|
|
|
}
|
|
|
|
|
|
+ /* usbnet use these values for sizing rx queues */
|
|
|
+ if (dev->rx_urb_size != ctx->rx_max) {
|
|
|
+ dev->rx_urb_size = ctx->rx_max;
|
|
|
+ if (netif_running(dev->net))
|
|
|
+ usbnet_unlink_rx_urbs(dev);
|
|
|
+ }
|
|
|
+
|
|
|
/* clamp new_tx to sane values */
|
|
|
min = ctx->max_datagram_size + ctx->max_ndp_size + sizeof(struct usb_cdc_ncm_nth16);
|
|
|
max = min_t(u32, CDC_NCM_NTB_MAX_SIZE_TX, le32_to_cpu(ctx->ncm_parm.dwNtbOutMaxSize));
|