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