[resending to openwrt-devel after subscribing - sorry for any duplicates ] Felix Fietkau <n...@openwrt.org> writes:
> By the way, I'm almost done with my QMI code rewrite. You can find it > here: http://nbd.name/gitweb.cgi?p=uqmi.git;a=summary or > git://nbd.name/uqmi.git. > I think it can already do pretty much all that's necessary to bring up > the connection like qmictl. The main difference is it's ~70 kb of code > instead of multiple megabyte, and it also doesn't depend on GLib or > other bloated libraries. Hello, Nice indeed. I guess this means that you want to have vote in the following request which I sent to the oFono and libqmi lists earlier today. I certainly do want your opinion on the subject. Thanks. --- This question is relevant for both QMI and MBIM support. You do need to know the exact message size used by the device (and driver) when using /dev/cdc-wdmX devices. This is particularily important for MBIM, where the size differs from device to device, and MBIM management will fail if you use the wrong value. Currently you have to parse the MBIM descriptors to retrieve it. But the question is also relevant for QMI, where you should use whatever the driver uses, and have no other way to find out than reading the driver source and copy the value from there. The obvious simpler alternative is to make the driver export the value to userspace. We're currently discussing if and how such an userspace API should be added to cdc-wdm.c, effectively implementing it for all the three drivers qmi_wwan, cdc_mbim and cdc-wdm. The current proposal [1] is adding a new ioctl. As an userspace API is carved in diamond when it is added, we need to be absolutely sure this is the right thing to do before going forward. Greg KH has requested [2] acks from the userspace authors: " Oh, also get the userspace authors to agree and sign-off on this, I want their agreement that this is something they can support. " As for the discussion of sysfs vs ioctl, I believe Oliver summarized [3] the advantages of the ioctl quite nicely. There are more details in the rest of the thread if anyone is interested, including an alternative sysfs implementation. Sample usage will of course be quite simple from any C application: #include <linux/usb/cdc-wdm.h> __u16 msgsize; int fd = open("/dev/cdc-wdm0", O_RDWR); if (ioctl(fd, IOCTL_WDM_MAX_COMMAND, &msgsize) < 0) { /* then fall back to whatever you do today, using * a fixed value or parsing USB descriptors */ } The questions for you as userspace authors are: a) Should these drivers export "max message size" to userspace? b) Is an ioctl the best solution? c) Will you use the ioctl in your userspace implementation? I really appreciate any feedback, including "We do not want this at all". Thanks. Bjørn [1] http://www.spinics.net/lists/linux-usb/msg81650.html [2] http://www.spinics.net/lists/linux-usb/msg81811.html [3] http://www.spinics.net/lists/linux-usb/msg81679.html _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel