Christian Panton <christian@xxxxxxxxxx> writes: > I have two mobile broadband Huawei E3372h devices, one with firmware > 21.200.07.01.26 (aka the 200-version) and one with firmware > 21.318.01.00.541 (aka the 318-version). > > Whereas the 200-version works perfectly with a recent kernel (4.10), > the latter never manages to exchange any IP-packets. Upon debugging > USB-traces, I found that the 200-version correctly switches to NTB-16, > whereas the 318-version stays in NTB-32 mode. And both these firmwares use the cdc_ncm class driver directly, and not the huawei_cdc_ncm driver? I.e. they appear as true CDC NCM class devices? Enrico found a bug a few years ago, where Huawei firmwares used the wrong format unless we put the NDP last in the NTB. This issue was worked around by adding an 'ndp_to_end' flag to the driver. I believe we so far only have seen the bug in CDC MBIM and Huawei vendor specific NCM functions. Where it is sort of handled by defaulting the 'ndp_to_end' flag to true for all Huawei devices. Maybe we need to do that in the cdc_ncm driver as well? Could you test if echo Y >/sys/class/net/xxx/cdc_ncm/ndp_to_end makes any difference, where xxx is the name of your wwan netdev? For the record: The NCM spec is pretty clear that the NDP can be located anywhere in the frame, and that NTB-16 mode must be supported, and that the NTB-16 mode is the default after setting the data interface to altsetting 0 (i.e. the intial state). Section 3 "Data Transport": "Within any given NTB, the NTH always must be first; but the other items may occur in arbitrary order." Section 3.5 "NTB format support": "Functions conforming to this specification shall support 16-bit NTB structures" Section 7.2 "Using Alternate Settings to Reset an NCM Function": "Whenever alternate setting 0 is selected by the host, the function shall: .. - reset the NTB format to NTB-16 " We cannot make vendors fix their firmwares, but we can vote for less buggy firmware with our wallets... Bjørn -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html