<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">​<font face="arial, helvetica, sans-serif">> Maybe it wouldn't be a bad idea to keep track of which operations may</font><br></div><div class="gmail_extra"><div class="gmail_quote"><div class="gmail_default"><font face="arial, helvetica, sans-serif">> fail due to SIM being busy, and perform automatic retry later if we</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif">> get that specific error, something like that.</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif">Hey,</font></div><div class="gmail_default"><br></div><div class="gmail_default"><font face="arial, helvetica, sans-serif">I made a little proof of concept of this improvement. So far, it's restricted to <b>loading unlock retries again once #QSS:3</b> is received, but I can't get to have the retries values updated at a higher level. This is likely due to <i>mm-iface-modem.c:load_unlock_retries_ready</i> callback not being called I guess, but I'm not really sure my approach is totally correct.</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif">I do the following:</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif">A. When mm_telit_parse_csim_response fails:</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif">    1. The <b>GSimpleAsyncResult</b> instance is saved</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif">    2. load_unlock_retries is marked to be called again later</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif">B. When QSS: 3 arrives:</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif">    1. a newly <b>LoadUnlockRetriesContext</b> is created using the saved <b>GSimpleAsyncResult</b> (the idea is to re-use the original callback reference, but not really sure it's correct).</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif">    2. <b>load_unlock_retries_step</b> is called again with the above mentioned LoadUnlockRetriesContext instance</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif">Step 2 is done in a GSourceFunc called by the mainloop, using g_add_idle.</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif">What I see is the load_unlock_retries_step logs, so this function is actually called (as it looks to me) correctly, but the output of "mmcli -m <ID>" still shows the same incomplete list of unlock retries as if the data have not been updated.</font><span style="font-family:arial,helvetica,sans-serif">​</span></div><br></div></div></div>