diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2021-03-11 09:34:03 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2021-03-17 09:39:10 +0100 |
commit | 8f3df02ba14297ba1fd84e56225dcf7625a83240 (patch) | |
tree | d818fe38cb4585357345537d99671a5317ba55ed | |
parent | 2d374b1c41ab3412101dee8600d4424b94900f23 (diff) |
broadband-modem-mbim: report up to 256 multiplexed bearers
As defined in the MBIM protocol (session id 0 to 255).
-rw-r--r-- | src/mm-broadband-modem-mbim.c | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/mm-broadband-modem-mbim.c b/src/mm-broadband-modem-mbim.c index baae397b..241a6dc6 100644 --- a/src/mm-broadband-modem-mbim.c +++ b/src/mm-broadband-modem-mbim.c @@ -1990,6 +1990,28 @@ modem_create_bearer (MMIfaceModem *self, } /*****************************************************************************/ +/* Create Bearer List (Modem interface) */ + +static MMBearerList * +modem_create_bearer_list (MMIfaceModem *self) +{ + guint n; + guint n_multiplexed; + + /* The maximum number of available/connected modems is guessed from + * the size of the data ports list. */ + n = g_list_length (mm_base_modem_peek_data_ports (MM_BASE_MODEM (self))); + mm_obj_dbg (self, "allowed up to %u active bearers", n); + + /* The maximum number of multiplexed links is defined by the MBIM protocol */ + n_multiplexed = (MBIM_DEVICE_SESSION_ID_MAX - MBIM_DEVICE_SESSION_ID_MIN + 1); + mm_obj_dbg (self, "allowed up to %u active multiplexed bearers", n_multiplexed); + + /* by default, no multiplexing support */ + return mm_bearer_list_new (n, n_multiplexed); +} + +/*****************************************************************************/ /* Create SIM (Modem interface) */ static MMBaseSim * @@ -5803,9 +5825,10 @@ iface_modem_init (MMIfaceModem *iface) iface->set_primary_sim_slot_finish = mm_shared_qmi_set_primary_sim_slot_finish; #endif - /* Create MBIM-specific bearer */ + /* Create MBIM-specific bearer and bearer list */ iface->create_bearer = modem_create_bearer; iface->create_bearer_finish = modem_create_bearer_finish; + iface->create_bearer_list = modem_create_bearer_list; /* SIM hot swapping */ iface->setup_sim_hot_swap = modem_setup_sim_hot_swap; |