lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <87a90nqp45.fsf@nemi.mork.no> Date: Mon, 09 Feb 2015 12:51:54 +0100 From: Bjørn Mork <bjorn@...k.no> To: Kristian Evensen <kristian.evensen@...il.com> Cc: netdev@...r.kernel.org Subject: Re: [PATCH] net: qmi_wwan: MC73xx interface 10 is not QMI Kristian Evensen <kristian.evensen@...il.com> writes: > From: Kristian Evensen <kristian.evensen@...il.com> > > Sierra Wireless MC73xx interface 10 is not usable with QMI, as the interface > does not respond to any QMI messages. Really? I don't have any such devices to test with unfortunately, but the Sierra Wireless (SWI) "USB Driver Developer's Guide - AirPrime MC73xx" [1] claims that interfaces 8, 10 and 11 represent RMNET1, RMNET2 and RMNET3 respectively. It is confirmed [2] from SWI that RMNET3 is non-functional, similar to the status of the MC77xx devices, but RMNET2 is believed to work. At least I believe so until you sent this patch... Just to be sure: You do have a configuration where interfaces #10 and #11 are visible, but none of them respond to any QMI at all? Not even CTL SYNC? Could you get a minimal usbmon trace of that? Note that interface #10 (RMNET2) still is enabled for 1199:68c0 in the current (Version S2.20N2.27) out-of-tree drivers from SWI [3], indicating that they believe it works: #define BIT_9X15 (31) .. static int GobiNetDriverBind( struct usbnet * pDev, struct usb_interface * pIntf ) { .. /* We only accept certain interfaces */ if (pIntf->cur_altsetting->desc.bInterfaceClass != USB_CLASS_VENDOR_SPEC ) { DBG( "Ignoring non vendor class interface #%d\n", pIntf->cur_altsetting->desc.bInterfaceNumber ); return -ENODEV; } else if (pDev->driver_info->data && !test_bit(pIntf->cur_altsetting->desc.bInterfaceNumber, &pDev->driver_info->data)) { DBG( "invalid interface %d\n", pIntf->cur_altsetting->desc.bInterfaceNumber ); return -ENODEV; } .. static const struct driver_info GobiNetInfo_9x15 = { .description = "GobiNet Ethernet Device", .flags = FLAG_ETHER, .bind = GobiNetDriverBind, .unbind = GobiNetDriverUnbind, #ifdef DATA_MODE_RP .rx_fixup = GobiNetDriverRxFixup, .tx_fixup = GobiNetDriverTxFixup, #elif defined(QOS_MODE) .tx_fixup = GobiNetDriverTxQoS, //WORD AROUND integrated from qmi_wwan.c::qmi_wwan_rx_fixup .rx_fixup = GobiNetDriverLteRxFixup, #else .rx_fixup = GobiNetDriverLteRxFixup, #endif .data = BIT(8) | BIT(10) | BIT(BIT_9X15), }; #define QMI_G3K_DEVICE(vend, prod) \ USB_DEVICE(vend, prod), \ .driver_info = (unsigned long)&GobiNetInfo_gobi #define QMI_9X15_DEVICE(vend, prod) \ USB_DEVICE(vend, prod), \ .driver_info = (unsigned long)&GobiNetInfo_9x15 /*=========================================================================*/ // Qualcomm Gobi 3000 VID/PIDs /*=========================================================================*/ static const struct usb_device_id GobiVIDPIDTable [] = { // Sierra Wireless MC7750 QMI Device VID/PID { USB_DEVICE( 0x1199, 0x68a2 ), .driver_info = (unsigned long)&GobiNetInfo_qmi, }, // Gobi 3000 {QMI_G3K_DEVICE(0x05c6, 0x920d)}, {QMI_G3K_DEVICE(0x1199, 0x9011)}, {QMI_G3K_DEVICE(0x1199, 0x9013)}, {QMI_G3K_DEVICE(0x1199, 0x9015)}, {QMI_G3K_DEVICE(0x1199, 0x9019)}, {QMI_G3K_DEVICE(0x03f0, 0x371d)}, // 9x15 {QMI_9X15_DEVICE(0x1199, 0x68C0)}, {QMI_9X15_DEVICE(0x1199, 0x9041)}, {QMI_9X15_DEVICE(0x1199, 0x9051)}, {QMI_9X15_DEVICE(0x1199, 0x9053)}, {QMI_9X15_DEVICE(0x1199, 0x9054)}, {QMI_9X15_DEVICE(0x1199, 0x9055)}, {QMI_9X15_DEVICE(0x1199, 0x9056)}, {QMI_9X15_DEVICE(0x1199, 0x9061)}, //Terminating entry { } }; MODULE_DEVICE_TABLE( usb, GobiVIDPIDTable ); AFAICS, this code makes the driver bind to interfaces 8 and 10 on all QMI_9X15_DEVICEs. The BIT_9X15 is higher than any interface number in use on these devices, and is used to trigger a slightly different QMI startup sequence for 9x15 devices (this driver does some QMI internally, contrary to the in-kernel driver which leaves all that to userspace). > We are now left with interface 8 for the > MC73xx, which is consistent with most other Sierra Wireless QMI-devices. Well, I do have an MC7710 and it most certainly support both RMNET1 and RMNET2 (on interface #19). So if the MC73xx is to be consistent with other SWI QMI devices, then I would expect it to support RMNET2 as well, only using interface #10 instead of #19. And that's how I understood the reply from SWI in [2]. Access to these documents might require registration, but I include the references here for completeness since these are my primary sources of information: [1] http://source.sierrawireless.com/resources/airprime/minicard/airprime_mc73xx_usb_driver_developers_guide/ [2] https://forum.sierrawireless.com/viewtopic.php?f=117&t=6110&p=32629#p32629 [3] http://source.sierrawireless.com/resources/airprime/software/usb-drivers-linux-qmi-software/ Bjørn -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists