aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Palatin <vpalatin@chromium.org>2021-04-14 15:32:26 +0200
committerVincent Palatin <vpalatin@chromium.org>2021-04-19 08:22:28 +0200
commitf7ec13deb88e9bd292d69ec7442dc892e51f3c52 (patch)
tree336e092251c13b4182f8e5e2a90fef915ae19497
parenta74c1c9bd81467d37776b71cf78da0b41098d48a (diff)
sim-mbim: increase the timeout for the MBIM_CID_HOME_PROVIDER query
Increase the timeout from 10 seconds to 30 seconds when reading the operator information through the MBIM_CID_HOME_PROVIDER query. We have observed cases where it took more than 12 seconds on a Fibocom L850-GL modem with specific China Unicom SIMs. This timeout was actually the cause of a corruption of the operator name (e.g. returning '@' rather than the real operator name) on the Intel XMM7360 based L850-GL. The following scenario was happening: - the base-sim code sends a first MBIM 'home-provider' query to read the operator identifier. - this query times-out after 10 seconds. - the base-sim immediately sends another MBIM 'home-provider' query to read the operator name. - the modem returns a corrupted operator identifier. Intel helped for the debugging and indicates that when the first query happens, the modem starts reading the SIM files (EF SPN/PNN), apparently it's taking a long time, when it's receives the second query while the first one is not entirely processed, this triggers a bug (in the modem firmware) and returns a corrupted name.
-rw-r--r--src/mm-sim-mbim.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/mm-sim-mbim.c b/src/mm-sim-mbim.c
index e8889fa1..9fa24e96 100644
--- a/src/mm-sim-mbim.c
+++ b/src/mm-sim-mbim.c
@@ -274,7 +274,7 @@ load_operator_identifier (MMBaseSim *self,
message = mbim_message_home_provider_query_new (NULL);
mbim_device_command (device,
message,
- 10,
+ 30,
NULL,
(GAsyncReadyCallback)load_operator_identifier_ready,
task);
@@ -335,7 +335,7 @@ load_operator_name (MMBaseSim *self,
message = mbim_message_home_provider_query_new (NULL);
mbim_device_command (device,
message,
- 10,
+ 30,
NULL,
(GAsyncReadyCallback)load_operator_name_ready,
task);