[PATCH 2/2 v3] mbimcli: new '--ms-query-firmware-id' action
Aleksander Morgado
aleksander at aleksander.es
Thu Feb 27 05:48:34 PST 2014
On Thu, Feb 27, 2014 at 12:30 PM, Bjørn Mork <bjorn at mork.no> wrote:
>
>> [27 Feb 2014, 10:51:39] [Debug] [/dev/cdc-wdm1] Received message (translated)...
>>>>>>>> Header:
>>>>>>>> length = 48
>>>>>>>> type = command-done (0x80000003)
>>>>>>>> transaction = 2
>>>>>>>> Fragment header:
>>>>>>>> total = 1
>>>>>>>> current = 0
>>>>>>>> Contents:
>>>>>>>> status error = 'NoDeviceSupport' (0x00000009)
>>>>>>>> service = 'invalid' (00000000-0000-0000-0000-000000000000)
>>>>>>>> cid = '(null)' (0x00000001)
>
The main problem is that the mbimcli ends up ignoring the status error
field, retrievable with mbim_message_command_done_get_status_code().
We should make sure we have no error before parsing the remaining
contents of the message.
> I started wondering if this reply is really according to spec or not.
> But I cannot say for sure. Anyone else know?
>
Yeah, no idea if the logic for handling unknown services is supported or not.
> Unless I've missed something, then the "unsupported service" behaviour
> is not clearly defined. I guess the assumption is that a well behaved
> host will never send an unsupported command.
>
> Well, I'm pretty sure hosts will do in the real world, so I do consider
> this an error in the spec.
>
Yeah, hosts can check whether a given service is supported by looking
at the "Basic Connect" "Device Services" response, but I wouldn't like
to add this check as mandatory in the MbimDevice, as that wouldn't
allow us to play with it... but it probably is a good check to do in
ModemManager for example.
> A MBIM_FUNCTION_ERROR_MSG response would have made sense IMO, but there
> are no suitable error codes so it cannot be used (without an addional
> error code for this purpose).
>
> The MBIM_COMMAND_DONE with a 'NoDeviceSupport' status, like the DWM-156
> do, looks like the best alternative within the current spec. It would
> have been nice if the unknown service UUID was copied from the request,
> but I cannot find any such requirement. So I guess the response above is
> OK. The 'NoDeviceSupport' is independent of CID and service anyway, so
> the service UUID doesn't really matter.
>
> Note that the Huawei E367 firmware doesn't respond to unknown services
> at all. AFAICS, this is also allowed by the spec. Although I do
> believe it is better to do as the DWM-156, allowing errors to be caught
> immediately instead of depending on timeouts.
>From libmbim's point of view, we just need to make sure we handle all
the possible cases graciously, I guess.
--
Aleksander
https://aleksander.es
More information about the libmbim-devel
mailing list