QMI and MBIM: Do you want a "Max Command Size" ioctl?

Bjørn Mork bjorn at mork.no
Wed Mar 13 02:49:18 PDT 2013


Hello,

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
different devices used varying size and will fail if you use the wrong
value.  Currently you have to parse the MBIM descriptors to retrieve
it.  But it 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


More information about the libqmi-devel mailing list