Re: unexpected pdp ctx deactivation

2022-09-07 Thread Daniele Palmas
Hi Alexey,

Il giorno mer 31 ago 2022 alle ore 14:43 Alexey Orishko
 ha scritto:
>
> Hi,
>
> I'm implementing ecm support in telit plugin (baseline: latest main).

if it's not a reserved piece of information, which Telit model are you using?

Regards,
Daniele

> Somehow modem goes in connect-disconnect loop with a few seconds in between.
> I'm trying to identify a reason for disconnect and related issues in MM debug 
> log.
>
> Q1. Is a negative value in profile_id (and eventually in 
> index_field_value_str) a legal one?
> Does a negative value mean uninitialized data in profile context? Coz CGACT 
> output has always positive ctx index:
> AT+CGACT?
> +CGACT: 1,1
> +CGACT: 3,0
>
> ModemManager[]:  [1661944714.481355] [modem0] set profile state (3/8): 
> select profile (best)
> ModemManager[]:  [1661944714.481370] [modem0] found exact context at 
> profile 1
> ModemManager[]:  [1661944714.481375] [modem0] reusing profile '1'
> ModemManager[]:  [1661944714.481379] [modem0] set profile state (4/8): 
> check activated profile
> ModemManager[]:  [1661944714.481390] [modem0] checking if profile with 
> id '1' is already activated...
> ModemManager[]:  [1661944714.481402] [ttyUSB1/at] device open count is 
> 4 (open)
> ModemManager[]:  [1661944714.481418] [ttyUSB1/at] device open count is 
> 3 (close)
> ModemManager[]:  [1661944714.481436] [ttyUSB1/at] --> 'AT+CGACT?'
> ModemManager[]:  [1661944714.518369] [ttyUSB1/at] <-- '+CGACT: 
> 1,1+CGACT: 3,0OK'
> ModemManager[]:  [1661944714.518463] [modem0] profile '-1' is activated
> ModemManager[]:  [1661944714.518479] [modem0] set profile state (5/8): 
> deactivate profile
> ModemManager[]:  [1661944714.518488] [modem0] deactivating profile 
> with id '1'...
> ModemManager[]:  [1661944714.518502] [ttyUSB1/at] device open count is 
> 4 (open)
> ModemManager[]:  [1661944714.518519] [ttyUSB1/at] device open count is 
> 3 (close)
> ModemManager[]:  [1661944714.518540] [ttyUSB1/at] --> 
> 'AT+CGACT=0,1'
> ModemManager[]:  [1661944714.561517] [ttyUSB1/at] <-- 
> 'OK'
> ModemManager[]:  [1661944714.561599] [modem0] deactivated profile '-1'
> ModemManager[]:  [1661944714.561610] [modem0] set profile state (6/8): 
> profile already stored
> ModemManager[]:  [1661944714.561616] [modem0] set profile state (8/8): 
> all done
> ModemManager[]:  [1661944714.561639] [modem0/bearer0] (shared-telit) 
> ECM: selecting NW interface as a data port
> ModemManager[]:  [1661944714.561664] [ttyUSB1/at] device open count is 
> 2 (close)
> ModemManager[]:  [1661944714.561700] [modem0/wwan0/net] port now 
> connected
> ModemManager[]:  [1661944714.561707] [modem0/bearer0] connected
> ModemManager[]:   [1661944714.561776] [modem0] state changed 
> (connecting -> connected)
> ModemManager[]:   [1661944714.562088] [modem0] simple connect state 
> (10/10): all done
> ModemManager[]:  [1661944730.307060] [modem0] user request to 
> disconnect modem (all bearers)
>
>
> Q2: Since no mmcli or any other human input was used, what the phrase "user 
> request to disconnect modem" really mean?
> Could internal MM logic be considered as "user input"?
>
> Q3. Will MM always tear down existing pdp context instead of reusing it? 
> (even if all parameters are the same)
> Q4: If answer to Q3 is yes, is there a way to force MM always reusing 
> existing pdp context? (at least as a private patch)
>
> Regards,
> Alexey
>


Re: unexpected pdp ctx deactivation

2022-09-05 Thread Aleksander Morgado
> > I'm implementing ecm support in telit plugin (baseline: latest main).
> > Somehow modem goes in connect-disconnect loop with a few seconds in between.
> > I'm trying to identify a reason for disconnect and related issues in MM 
> > debug log.
> >
> > Q1. Is a negative value in profile_id (and eventually in 
> > index_field_value_str) a legal one?
> > Does a negative value mean uninitialized data in profile context? Coz CGACT 
> > output has always positive ctx index:
> > AT+CGACT?
> > +CGACT: 1,1
> > +CGACT: 3,0
> >
> > ModemManager[]:  [1661944714.481355] [modem0] set profile state 
> > (3/8): select profile (best)
> > ModemManager[]:  [1661944714.481370] [modem0] found exact context at 
> > profile 1
> > ModemManager[]:  [1661944714.481375] [modem0] reusing profile '1'
> > ModemManager[]:  [1661944714.481379] [modem0] set profile state 
> > (4/8): check activated profile
> > ModemManager[]:  [1661944714.481390] [modem0] checking if profile 
> > with id '1' is already activated...
> > ModemManager[]:  [1661944714.481402] [ttyUSB1/at] device open count 
> > is 4 (open)
> > ModemManager[]:  [1661944714.481418] [ttyUSB1/at] device open count 
> > is 3 (close)
> > ModemManager[]:  [1661944714.481436] [ttyUSB1/at] --> 'AT+CGACT?'
> > ModemManager[]:  [1661944714.518369] [ttyUSB1/at] <-- 
> > '+CGACT: 1,1+CGACT: 3,0OK'
> > ModemManager[]:  [1661944714.518463] [modem0] profile '-1' is 
> > activated
> > ModemManager[]:  [1661944714.518479] [modem0] set profile state 
> > (5/8): deactivate profile
> > ModemManager[]:  [1661944714.518488] [modem0] deactivating profile 
> > with id '1'...
> > ModemManager[]:  [1661944714.518502] [ttyUSB1/at] device open count 
> > is 4 (open)
> > ModemManager[]:  [1661944714.518519] [ttyUSB1/at] device open count 
> > is 3 (close)
> > ModemManager[]:  [1661944714.518540] [ttyUSB1/at] --> 
> > 'AT+CGACT=0,1'
> > ModemManager[]:  [1661944714.561517] [ttyUSB1/at] <-- 
> > 'OK'
> > ModemManager[]:  [1661944714.561599] [modem0] deactivated profile 
> > '-1'
> > ModemManager[]:  [1661944714.561610] [modem0] set profile state 
> > (6/8): profile already stored
> > ModemManager[]:  [1661944714.561616] [modem0] set profile state 
> > (8/8): all done
> > ModemManager[]:  [1661944714.561639] [modem0/bearer0] (shared-telit) 
> > ECM: selecting NW interface as a data port
> > ModemManager[]:  [1661944714.561664] [ttyUSB1/at] device open count 
> > is 2 (close)
> > ModemManager[]:  [1661944714.561700] [modem0/wwan0/net] port now 
> > connected
> > ModemManager[]:  [1661944714.561707] [modem0/bearer0] connected
> > ModemManager[]:   [1661944714.561776] [modem0] state changed 
> > (connecting -> connected)
> > ModemManager[]:   [1661944714.562088] [modem0] simple connect state 
> > (10/10): all done
> > ModemManager[]:  [1661944730.307060] [modem0] user request to 
> > disconnect modem (all bearers)
> >
>
> Is this recent change somehow related maybe?
> https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/829
>
> >
> > Q2: Since no mmcli or any other human input was used, what the phrase "user 
> > request to disconnect modem" really mean?
> > Could internal MM logic be considered as "user input"?
> >
>
> Humm... that message should exclusively happen when a
> Modem.Simple.Disconnect() DBus call arrives, that's why it's "user
> input".
>
> > Q3. Will MM always tear down existing pdp context instead of reusing it? 
> > (even if all parameters are the same)
>
> The answer, I'm afraid, is "it depends". The MBIM implementation
> ensures the profile is disconnected before attempting a new
> connection, while other implementations don't do that, they try to
> launch a new connection even if it was already up, letting the modem
> return an error if it's appropriate. The thing is, MM doesn't expect
> any PDP context to be up (ideally) if it didn´t bring it up MM itself.
> The most notable cases where this is not true is with initial default
> EPS bearers (attach bearers) which may be exposed as being up before
> triggering any new connection (and some implementations like the ones
> for u-blox TOBY modules try to handle that gracefully, because
> attempting to disconnect them would result in de-registering from the
> network), and also with "autoconnected" modems, where the data bearer
> is brought up by the modem itself automatically (and there is no
> general way to handle those yet anywhere really)
>

Actually... I'm a bit wrong here. There is some generic logic to
deactivate a profile before setting it up again in the 3GPP manager
"set profile" sequence, which is used when the user didn't specify a
given "profile-id" to use. See e.g. select_profile_3gpp() in
mm-broadband-bearer.c (applicable to all AT modems) and the
set_profile_step() method in mm-iface-modem-3gpp-profile-manager.c

--
Aleksander


Re: unexpected pdp ctx deactivation

2022-09-05 Thread Aleksander Morgado
Hey Alexey,


> I'm implementing ecm support in telit plugin (baseline: latest main).
> Somehow modem goes in connect-disconnect loop with a few seconds in between.
> I'm trying to identify a reason for disconnect and related issues in MM debug 
> log.
>
> Q1. Is a negative value in profile_id (and eventually in 
> index_field_value_str) a legal one?
> Does a negative value mean uninitialized data in profile context? Coz CGACT 
> output has always positive ctx index:
> AT+CGACT?
> +CGACT: 1,1
> +CGACT: 3,0
>
> ModemManager[]:  [1661944714.481355] [modem0] set profile state (3/8): 
> select profile (best)
> ModemManager[]:  [1661944714.481370] [modem0] found exact context at 
> profile 1
> ModemManager[]:  [1661944714.481375] [modem0] reusing profile '1'
> ModemManager[]:  [1661944714.481379] [modem0] set profile state (4/8): 
> check activated profile
> ModemManager[]:  [1661944714.481390] [modem0] checking if profile with 
> id '1' is already activated...
> ModemManager[]:  [1661944714.481402] [ttyUSB1/at] device open count is 
> 4 (open)
> ModemManager[]:  [1661944714.481418] [ttyUSB1/at] device open count is 
> 3 (close)
> ModemManager[]:  [1661944714.481436] [ttyUSB1/at] --> 'AT+CGACT?'
> ModemManager[]:  [1661944714.518369] [ttyUSB1/at] <-- '+CGACT: 
> 1,1+CGACT: 3,0OK'
> ModemManager[]:  [1661944714.518463] [modem0] profile '-1' is activated
> ModemManager[]:  [1661944714.518479] [modem0] set profile state (5/8): 
> deactivate profile
> ModemManager[]:  [1661944714.518488] [modem0] deactivating profile 
> with id '1'...
> ModemManager[]:  [1661944714.518502] [ttyUSB1/at] device open count is 
> 4 (open)
> ModemManager[]:  [1661944714.518519] [ttyUSB1/at] device open count is 
> 3 (close)
> ModemManager[]:  [1661944714.518540] [ttyUSB1/at] --> 
> 'AT+CGACT=0,1'
> ModemManager[]:  [1661944714.561517] [ttyUSB1/at] <-- 
> 'OK'
> ModemManager[]:  [1661944714.561599] [modem0] deactivated profile '-1'
> ModemManager[]:  [1661944714.561610] [modem0] set profile state (6/8): 
> profile already stored
> ModemManager[]:  [1661944714.561616] [modem0] set profile state (8/8): 
> all done
> ModemManager[]:  [1661944714.561639] [modem0/bearer0] (shared-telit) 
> ECM: selecting NW interface as a data port
> ModemManager[]:  [1661944714.561664] [ttyUSB1/at] device open count is 
> 2 (close)
> ModemManager[]:  [1661944714.561700] [modem0/wwan0/net] port now 
> connected
> ModemManager[]:  [1661944714.561707] [modem0/bearer0] connected
> ModemManager[]:   [1661944714.561776] [modem0] state changed 
> (connecting -> connected)
> ModemManager[]:   [1661944714.562088] [modem0] simple connect state 
> (10/10): all done
> ModemManager[]:  [1661944730.307060] [modem0] user request to 
> disconnect modem (all bearers)
>

Is this recent change somehow related maybe?
https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/829

>
> Q2: Since no mmcli or any other human input was used, what the phrase "user 
> request to disconnect modem" really mean?
> Could internal MM logic be considered as "user input"?
>

Humm... that message should exclusively happen when a
Modem.Simple.Disconnect() DBus call arrives, that's why it's "user
input".

> Q3. Will MM always tear down existing pdp context instead of reusing it? 
> (even if all parameters are the same)

The answer, I'm afraid, is "it depends". The MBIM implementation
ensures the profile is disconnected before attempting a new
connection, while other implementations don't do that, they try to
launch a new connection even if it was already up, letting the modem
return an error if it's appropriate. The thing is, MM doesn't expect
any PDP context to be up (ideally) if it didn´t bring it up MM itself.
The most notable cases where this is not true is with initial default
EPS bearers (attach bearers) which may be exposed as being up before
triggering any new connection (and some implementations like the ones
for u-blox TOBY modules try to handle that gracefully, because
attempting to disconnect them would result in de-registering from the
network), and also with "autoconnected" modems, where the data bearer
is brought up by the modem itself automatically (and there is no
general way to handle those yet anywhere really)

-- 
Aleksander


unexpected pdp ctx deactivation

2022-08-31 Thread Alexey Orishko
Hi,

I'm implementing ecm support in telit plugin (baseline: latest main).
Somehow modem goes in connect-disconnect loop with a few seconds in between.
I'm trying to identify a reason for disconnect and related issues in MM
debug log.

Q1. Is a negative value in profile_id (and eventually in
index_field_value_str) a legal one?
Does a negative value mean uninitialized data in profile context? Coz CGACT
output has always positive ctx index:
AT+CGACT?
+CGACT: 1,1
+CGACT: 3,0

ModemManager[]:  [1661944714.481355] [modem0] set profile state
(3/8): select profile (best)
ModemManager[]:  [1661944714.481370] [modem0] *found exact context
at profile 1*
ModemManager[]:  [1661944714.481375] [modem0] *reusing profile '1'*
ModemManager[]:  [1661944714.481379] [modem0] set profile state
(4/8): check activated profile
ModemManager[]:  [1661944714.481390] [modem0] checking if profile
with id '1' is already activated...
ModemManager[]:  [1661944714.481402] [ttyUSB1/at] device open count
is 4 (open)
ModemManager[]:  [1661944714.481418] [ttyUSB1/at] device open count
is 3 (close)
ModemManager[]:  [1661944714.481436] [ttyUSB1/at] --> 'AT+CGACT?'
ModemManager[]:  [1661944714.518369] [ttyUSB1/at] <--
'+CGACT: 1,1+CGACT: 3,0OK'
ModemManager[]:  [1661944714.518463] [modem0] *profile '-1' is
activated*
ModemManager[]:  [1661944714.518479] [modem0] set profile state
(5/8): deactivate profile
ModemManager[]:  [1661944714.518488] [modem0] *deactivating profile
with id '1'*...
ModemManager[]:  [1661944714.518502] [ttyUSB1/at] device open count
is 4 (open)
ModemManager[]:  [1661944714.518519] [ttyUSB1/at] device open count
is 3 (close)
ModemManager[]:  [1661944714.518540] [ttyUSB1/at] -->
'AT+CGACT=0,1'
ModemManager[]:  [1661944714.561517] [ttyUSB1/at] <--
'OK'
ModemManager[]:  [1661944714.561599] [modem0] *deactivated profile
'-1'*
ModemManager[]:  [1661944714.561610] [modem0] set profile state
(6/8): profile already stored
ModemManager[]:  [1661944714.561616] [modem0] set profile state
(8/8): all done
ModemManager[]:  [1661944714.561639] [modem0/bearer0] (shared-telit)
ECM: selecting NW interface as a data port
ModemManager[]:  [1661944714.561664] [ttyUSB1/at] device open count
is 2 (close)
ModemManager[]:  [1661944714.561700] *[modem0/wwan0/net] port now
connected*
ModemManager[]:  [1661944714.561707] *[modem0/bearer0] connected*
ModemManager[]:   [1661944714.561776] [modem0] state changed
(connecting -> connected)
ModemManager[]:   [1661944714.562088] [modem0] simple connect state
(10/10): all done
ModemManager[]:  [1661944730.307060] [modem0] *user request to
disconnect modem* (all bearers)


Q2: Since no mmcli or any other human input was used, what the phrase "user
request to disconnect modem*"* really mean?
Could internal MM logic be considered as "user input"?

Q3. Will MM always tear down existing pdp context instead of reusing it?
(even if all parameters are the same)
Q4: If answer to Q3 is yes, is there a way to force MM always reusing
existing pdp context? (at least as a private patch)

Regards,
Alexey