<div dir="auto"><div><br><div class="gmail_extra"><br><div class="gmail_quote">On Aug 26, 2017 10:24, "Tore Anderson" <<a href="mailto:tore@fud.no">tore@fud.no</a>> wrote:<br type="attribution"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">* Aleksander Morgado<br>
<div class="quoted-text"><br>
> If a suspend/resume cycle happens or ModemManager is restarted (e.g.<br>
> after a crash) the modem may be left with a given session id<br>
> connected. With this change we're forcing a session disconnection<br>
> before we attempt a session connection.<br>
><br>
> <a href="https://bugs.freedesktop.org/show_bug.cgi?id=102231" rel="noreferrer" target="_blank">https://bugs.freedesktop.org/<wbr>show_bug.cgi?id=102231</a> ---<br>
><br>
> Hey Tore, Ben and Dan,<br>
><br>
> The following patch makes sure the MBIM session id that we're trying<br>
> to connect is disconnected before the connection attempt. A more<br>
> complex solution would have involved checking whether the new<br>
> connection parameters are the same as the ones in the connected<br>
> session, and if so just assume we're connected. This solution is<br>
> just a quick way to solve this issue.<br>
><br>
> Comments/tests/review welcome!<br>
<br>
</div>Hi Aleksander, and thanks for looking at this!<br>
<br>
I tested it on top of git master (76c1a111) and it does seem to work as<br>
intended - I've not seen any more bearer activation failures due to<br>
MaxActivatedContexts after resuming from suspend.<br>
<br>
I also tried applying it to MM-1.6.4 (the version in Fedora 26). While<br>
the patch itself applies (with some fuzz), the build fails as follows:<br>
<br>
  CC       ModemManager-mm-bearer-mbim.o<br>
mm-bearer-mbim.c: In function ‘ensure_disconnected_ready’:<br>
mm-bearer-mbim.c:657:27: error: passing argument 1 of ‘connect_context_step’ from incompatible pointer type [-Werror=incompatible-pointer-<wbr>types]<br>
     connect_context_step (task);<br>
                           ^~~~<br>
mm-bearer-mbim.c:267:13: note: expected ‘ConnectContext * {aka struct <anonymous> *}’ but argument is of type ‘GTask * {aka struct _GTask *}’<br>
 static void connect_context_step (ConnectContext *ctx);<br>
             ^~~~~~~~~~~~~~~~~~~~<br>
mm-bearer-mbim.c: In function ‘connect_context_step’:<br>
mm-bearer-mbim.c:843:24: error: ‘self’ undeclared (first use in this function); did you mean ‘send’?<br>
                        self->priv->session_id,<br>
                        ^~~~<br>
                        send<br>
mm-bearer-mbim.c:843:24: note: each undeclared identifier is reported only once for each function it appears in<br>
mm-bearer-mbim.c:854:34: error: ‘task’ undeclared (first use in this function); did you mean ‘GTask’?<br>
             g_task_return_error (task, error);<br>
                                  ^~~~<br>
                                  GTask<br>
cc1: all warnings being treated as errors<br>
make[4]: *** [Makefile:1555: ModemManager-mm-bearer-mbim.o] Error 1<br>
<br>
So I didn't get to test that.<br><font color="#888888"></font></blockquote></div></div></div><div dir="auto"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><font color="#888888"><br>
</font></blockquote></div><br></div><div class="gmail_extra" dir="auto">Yep, that is expected, git master was ported to GTask, while 1.6 isn't. I'll prepare a 1.6 backport if this is the solution we want for now.</div></div></div>