QMI and MBIM: Do you want a "Max Command Size" ioctl?
Dan Williams
dcbw at redhat.com
Wed Mar 13 08:00:02 PDT 2013
On Wed, 2013-03-13 at 15:12 +0100, Aleksander Morgado wrote:
> On 03/13/2013 10:49 AM, Bjørn Mork wrote:
> > 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.
> >
>
> We do really need max message size for MBIM; and as you say, it may be
> good to have the max message size info also for QMI, so the new ioctl
> seems a good addition. So +1 from my side, for what it's worth.
Yeah, +1 here. I'd prefer the sysfs file, but the fact that that
doesn't work for fd passing pretty much kills it.
Dan
More information about the libqmi-devel
mailing list