<div dir="ltr">Hey Aleks,<br><br>You're right. <span style="line-height:1.5;font-size:13.1999998092651px">Looks like the modem we're working on currently is not fully MBIM spec compliant because we're only getting notifications from the modem if there is an explicit device service subscribe set request after OPEN_DONE. That also explains why the modem works without MBIM proxy because we seem to be explicitly sending the device service subscribe request after OPEN_DONE without the proxy enabled. </span><div><span style="line-height:1.5;font-size:13.1999998092651px"><br></span></div><div><span style="font-size:13.1999998092651px;line-height:1.5">We'll follow up with the vendor for the issue.</span><div><div><span style="line-height:1.5;font-size:13.1999998092651px"><br></span></div><div><span style="line-height:1.5;font-size:13.1999998092651px">Thanks,</span></div><div><span style="line-height:1.5;font-size:13.1999998092651px">Roshan Pius</span></div></div></div></div><br><div class="gmail_quote">On Sat Feb 07 2015 at 3:31:30 AM Aleksander Morgado <<a href="mailto:aleksander@aleksander.es">aleksander@aleksander.es</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hey,<br>
<br>
On Fri, Feb 6, 2015 at 11:33 PM, Roshan Pius <<a href="mailto:rpius@chromium.org" target="_blank">rpius@chromium.org</a>> wrote:<br>
> Since we're enabling all the CID's in the global device service<br>
> subscribe list during init, any new clients connecting to the proxy and<br>
> requesting a change in the device subscribe list doesn't take effect<br>
> since all the CID's are always enabled. This results in mbim-proxy<br>
> never sending the device-service-subscribe set command to the device<br>
> after bootup.<br>
><br>
> Change-Id: I028ba5f8d6801374022a5c93d985e<u></u>59fbc3ad93a<br>
<br>
The MBIM spec says, in the MBIM_CID_DEVICE_SERVICE_<u></u>SUBSCRIBE_LIST description:<br>
<br>
"Upon OPEN_DONE completion, notifications for CIDs defined in this<br>
specification are enabled (aka<br>
subscribed to) by default, and vendor extension notifications are off<br>
by default"<br>
<br>
Isn't this what we already had in the proxy?<br>
<br>
When a new client connects to the proxy, and they request only a<br>
specific subset of the default services, there will be no messages<br>
sent to the device because all the requested items in the subset were<br>
already enabled by default. The proxy should just take care of only<br>
forwarding to each client the specific subset each client asked for.<br>
<br>
> ---<br>
>  src/libmbim-glib/mbim-proxy.c | 12 ++++--------<br>
>  1 file changed, 4 insertions(+), 8 deletions(-)<br>
><br>
> diff --git a/src/libmbim-glib/mbim-proxy.<u></u>c b/src/libmbim-glib/mbim-proxy.<u></u>c<br>
> index fdbc7d9..892e980 100644<br>
> --- a/src/libmbim-glib/mbim-proxy.<u></u>c<br>
> +++ b/src/libmbim-glib/mbim-proxy.<u></u>c<br>
> @@ -853,16 +853,11 @@ merge_client_service_<u></u>subscribe_lists (MbimProxy *self,<br>
>                                        gsize     *out_size)<br>
>  {<br>
>      GList *l;<br>
> -    MbimEventEntry **updated;<br>
> +    MbimEventEntry **updated = NULL;<br>
>      gsize updated_size = 0;<br>
><br>
>      g_assert (out_size != NULL);<br>
><br>
> -    /* Add previous global list */<br>
> -    updated = _mbim_proxy_helper_service_<u></u>subscribe_list_merge (NULL, 0,<br>
> -                                                               self->priv->mbim_event_entry_<u></u>array, self->priv->mbim_event_entry_<u></u>array_size,<br>
> -                                                               &updated_size);<br>
> -<br>
>      for (l = self->priv->clients; l; l = g_list_next (l)) {<br>
>          Client *client;<br>
><br>
> @@ -1362,8 +1357,9 @@ mbim_proxy_init (MbimProxy *self)<br>
>                                                MBIM_TYPE_PROXY,<br>
>                                                MbimProxyPrivate);<br>
><br>
> -    /* By default, we assume we have all default services enabled */<br>
> -    self->priv->mbim_event_entry_<u></u>array = _mbim_proxy_helper_service_<u></u>subscribe_standard_list_new (&self->priv->mbim_event_<u></u>entry_array_size);<br>
> +    /* By default, all services are disabled untill a client makes a service-subscribe request */<br>
> +    self->priv->mbim_event_entry_<u></u>array = NULL;<br>
> +    self->priv->mbim_event_entry_<u></u>array_size = 0;<br>
>  }<br>
><br>
>  static void<br>
> --<br>
> 2.2.0.rc0.207.ga3a616c<br>
><br>
<br>
<br>
<br>
--<br>
Aleksander<br>
<a href="https://aleksander.es" target="_blank">https://aleksander.es</a><br>
</blockquote></div>