diff --git a/drivers/net/usb/cdc_ncm.c b/drivers/net/usb/cdc_ncm.c index 50c05d0f44cb..029fe9082a8f 100644 --- a/drivers/net/usb/cdc_ncm.c +++ b/drivers/net/usb/cdc_ncm.c @@ -377,6 +377,7 @@ static void cdc_ncm_update_rxtx_max(struct usbnet *dev, u32 new_rx, u32 new_tx) { struct cdc_ncm_ctx *ctx = (struct cdc_ncm_ctx *)dev->data[0]; u8 iface_no = ctx->control->cur_altsetting->desc.bInterfaceNumber; + u16 maxp = usb_maxpacket(dev->udev, dev->out, 1); u32 val; val = cdc_ncm_check_rx_max(dev, new_rx); @@ -411,12 +412,8 @@ static void cdc_ncm_update_rxtx_max(struct usbnet *dev, u32 new_rx, u32 new_tx) /* Adding a pad byte here if necessary simplifies the handling * in cdc_ncm_fill_tx_frame, making tx_max always represent * the real skb max size. - * - * We cannot use dev->maxpacket here because this is called from - * .bind which is called before usbnet sets up dev->maxpacket */ - if (val != le32_to_cpu(ctx->ncm_parm.dwNtbOutMaxSize) && - val % usb_maxpacket(dev->udev, dev->out, 1) == 0) + if (maxp && val != le32_to_cpu(ctx->ncm_parm.dwNtbOutMaxSize) && val % maxp == 0) val++; /* we might need to flush any pending tx buffers if running */