On Fri, 03 Dec 2021 15:52:48 +0100 Bjørn Mork wrote: > Lee Jones <lee.jones@xxxxxxxxxx> writes: > > > diff --git a/drivers/net/usb/cdc_ncm.c b/drivers/net/usb/cdc_ncm.c > > index 24753a4da7e60..e303b522efb50 100644 > > --- a/drivers/net/usb/cdc_ncm.c > > +++ b/drivers/net/usb/cdc_ncm.c > > @@ -181,6 +181,8 @@ static u32 cdc_ncm_check_tx_max(struct usbnet *dev, u32 new_tx) > > min = ctx->max_datagram_size + ctx->max_ndp_size + sizeof(struct usb_cdc_ncm_nth32); > > > > max = min_t(u32, CDC_NCM_NTB_MAX_SIZE_TX, le32_to_cpu(ctx->ncm_parm.dwNtbOutMaxSize)); > > + if (max == 0) > > + max = CDC_NCM_NTB_MAX_SIZE_TX; /* dwNtbOutMaxSize not set */ > > > > /* some devices set dwNtbOutMaxSize too low for the above default */ > > min = min(min, max); > > I believe this is the best possible fix, considering the regressions > anything stricter might cause. > > We know of at least one MBIM device where dwNtbOutMaxSize is as low as > 2048. > > According to the MBIM spec, the minimum and default value for > wMaxSegmentSize is also 2048. This implies that the calculated "min" > value is at least 2076, which is why we need that odd looking > > min = min(min, max); > > So let's just fix this specific zero case without breaking the > non-conforming devices. > > > Reviewed-by: Bjørn Mork <bjorn@xxxxxxx> Applied to net, thanks!