Hope this one applies ;-)

Here is a log showing when this issue happened, where a context was
registered before we got signaled
LTE tech...

Oct  1 09:43:47 info : Aux: > AT+COPS=3,0\r
Oct  1 09:43:47 info : Aux: < \r\nOK\r\n
Oct  1 09:43:47 info : Aux: > AT+COPS?\r

We are running UTRAN + HSPA

Oct  1 09:43:48 info : Aux: < \r\n+COPS: 0,0,"XXX",6\r\n
Oct  1 09:43:48 info : Aux: < \r\nOK\r\n
Oct  1 09:43:48 debug :
../git/drivers/atmodem/network-registration.c:cops_cb() cops_cb: XXX, 240
07 6
Oct  1 09:43:48 debug : ../git/src/network.c:current_operator_callback()
0x10d1218, 0x10d6fb8
Oct  1 09:43:50 info : Aux: < \r\n+CIEV: 2,4\r\n

We are transitioning to E-UTRAN because context 4 gets activated

Oct  1 09:43:51 info : Aux: < \r\n+CGEV: ME PDN ACT 4\r\n
Oct  1 09:43:51 info : Aux: > AT+CGDCONT?\r
Oct  1 09:43:51 info : Aux: < \r\n+CGDCONT: 1,"IP","XXX","",0,0,0,0,0,0\r\n
Oct  1 09:43:51 info : Aux: < +CGDCONT:
4,"IP","XXX.mnc003.mcc248.gprs","100.98.237.128",0,0,0,0,0,0\r\n
Oct  1 09:43:51 info : Aux: < \r\nOK\r\n

gprs status goes to unknown(normal on ublox when on E-UTRAN) which will
trigger a "detach"

Oct  1 09:43:51 info : Aux: < \r\n+CGREG: 4\r\n
Oct  1 09:43:51 info : Aux: < \r\n+UREG: 0\r\n
Oct  1 09:43:51 debug : ../git/drivers/atmodem/gprs.c:at_cgdcont_read_cb()
ok 1
Oct  1 09:43:51 debug : ../git/src/gprs.c:ofono_gprs_cid_activated() cid 4
Oct  1 09:43:51 debug :
../git/drivers/ubloxmodem/gprs-context.c:ublox_gprs_read_settings() cid 4
Oct  1 09:43:51 debug : ../git/src/modem.c:get_modem_property() modem
0x10ccaa0 property NetworkInterface
Oct  1 09:43:51 debug : ../git/src/gprs.c:pri_read_settings_callback()
0x10d6868
Oct  1 09:43:51 debug : ../git/src/gprs.c:ofono_gprs_status_notify()
/ublox_0 status unknown (4)
Oct  1 09:43:51 debug : ../git/src/gprs.c:ofono_gprs_detached_notify()
/ublox_0
Oct  1 09:43:51 info : Aux: > AT+CREG?\r
Oct  1 09:43:51 info : Aux: < \r\n+CIEV: 9,1\r\n\r\n+UREG: 7\r\n\r\n+CIEV:
9,2\r\n\r\n+CTZE: +08,1,"19/10/01,11:43:53"\r\n
Oct  1 09:43:51 debug :
../git/drivers/ubloxmodem/network-registration.c:ctze_notify() tz +08 dst 1
time 19/10/01,11:43:53
Oct  1 09:43:51 debug : ../git/src/network.c:ofono_netreg_time_notify() net
time 2019-10-01 11:43:53 utcoff 7200 dst 1

We are on E-UTRAN

Oct  1 09:43:51 info : Aux: < \r\n+CREG: 2,5,"2B02","01B57901",7\r\n
Oct  1 09:43:51 info : Aux: < \r\nOK\r\n
Oct  1 09:43:51 debug : ../git/src/network.c:ofono_netreg_status_notify()
/ublox_0 status 5 tech 7 lac 11010 ci 28670209
Oct  1 09:43:51 debug : ../git/src/gprs.c:netreg_status_changed() 5
(roaming)

gprs.c gets signaled about the change to E-UTRAN.
But since we now are on LTE, the code currently expect expect to change to
attached state first
when a new context is registered...But that happened above, so we will wait
for ever...

Oct  1 09:43:51 debug : ../git/src/gprs.c:gprs_netreg_update() attach: 1,
driver_attached: 0
Oct  1 09:43:51 info : Aux: > AT+COPS=3,2\r
Oct  1 09:43:51 info : Aux: < \r\nOK\r\n
Oct  1 09:43:51 info : Aux: > AT+COPS?\r

Den tis 1 okt. 2019 kl 22:11 skrev <[email protected]>:

> From: Richard Röjfors <[email protected]>
>
> There was a race condition where a context might be
> registered before the netreg status updates to LTE.
>
> The code took for granted the context is activated after
> the technology update. With this change, any order is
> is accepted.
> ---
>  src/gprs.c | 10 ++++++++--
>  1 file changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/src/gprs.c b/src/gprs.c
> index a8702958..a1e52572 100644
> --- a/src/gprs.c
> +++ b/src/gprs.c
> @@ -1721,12 +1721,18 @@ static void gprs_netreg_update(struct ofono_gprs
> *gprs)
>
>         DBG("attach: %u, driver_attached: %u", attach,
> gprs->driver_attached);
>
> -       if (on_lte(gprs))
> +       if (on_lte(gprs)) {
>                 /*
>                  * For LTE we set attached status only on successful
>                  * context activation.
> +                *
> +                * The context could potentially be registered before the
> netreg
> +                * update is received.
>                  */
> -                return;
> +               gprs_attached_update(gprs);
> +
> +               return;
> +       }
>
>         if (gprs->driver_attached == attach)
>                 return;
> --
> 2.20.1
>
>
_______________________________________________
ofono mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to