aboutsummaryrefslogtreecommitdiff
path: root/src/mm-port-qmi.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mm-port-qmi.c')
-rw-r--r--src/mm-port-qmi.c27
1 files changed, 23 insertions, 4 deletions
diff --git a/src/mm-port-qmi.c b/src/mm-port-qmi.c
index 0bbcd5ed..9ac8937e 100644
--- a/src/mm-port-qmi.c
+++ b/src/mm-port-qmi.c
@@ -986,8 +986,13 @@ load_kernel_data_format_current (MMPortQmi *self,
* on the current expected data format; i.e. if 802-3 is currently selected it
* will say link management is unsupported, even if it would be supported once
* we change it to raw-ip */
- if (supports_links)
- *supports_links = qmi_device_check_link_supported (device, NULL);
+ if (supports_links) {
+ /* For BAM-DMUX based setups, raw-ip only and no multiplexing */
+ if (g_strcmp0 (self->priv->net_driver, "bam-dmux") == 0)
+ *supports_links = FALSE;
+ else
+ *supports_links = qmi_device_check_link_supported (device, NULL);
+ }
/* For any driver other than qmi_wwan, assume raw-ip */
if (mm_port_get_subsys (MM_PORT (self)) != MM_PORT_SUBSYS_USBMISC)
@@ -1010,6 +1015,15 @@ load_kernel_data_format_capabilities (MMPortQmi *self,
gboolean *supports_qmap_raw_ip,
gboolean *supports_qmap_pass_through)
{
+ /* For BAM-DMUX based setups, raw-ip only and no multiplexing */
+ if (g_strcmp0 (self->priv->net_driver, "bam-dmux") == 0) {
+ *supports_802_3 = FALSE;
+ *supports_raw_ip = TRUE;
+ *supports_qmap_raw_ip = FALSE;
+ *supports_qmap_pass_through = FALSE;
+ return;
+ }
+
/* For any driver other than qmi_wwan, assume raw-ip */
if (mm_port_get_subsys (MM_PORT (self)) != MM_PORT_SUBSYS_USBMISC) {
*supports_802_3 = FALSE;
@@ -1147,9 +1161,14 @@ internal_setup_data_format_finish (MMPortQmi *self,
*out_max_multiplexed_links = 0;
mm_obj_dbg (self, "wda data aggregation protocol unsupported: no multiplexed bearers allowed");
} else {
+ /* if BAM-DMUX we already have multiple network interfaces, so no multiplexing */
+ if (g_strcmp0 (self->priv->net_driver, "bam-dmux") == 0) {
+ *out_max_multiplexed_links = 0;
+ mm_obj_dbg (self, "bam-dmux link management disabled: no multiplexed bearers allowed");
+ }
/* if multiplex backend may be rmnet, MAX-MIN */
- if ((mm_port_get_subsys (MM_PORT (self)) != MM_PORT_SUBSYS_USBMISC) ||
- ctx->kernel_data_format_qmap_pass_through_supported) {
+ else if ((mm_port_get_subsys (MM_PORT (self)) != MM_PORT_SUBSYS_USBMISC) ||
+ ctx->kernel_data_format_qmap_pass_through_supported) {
*out_max_multiplexed_links = 1 + (QMI_DEVICE_MUX_ID_MAX - QMI_DEVICE_MUX_ID_MIN);
mm_obj_dbg (self, "rmnet link management supported: %u multiplexed bearers allowed",
*out_max_multiplexed_links);