aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLoic Poulain <loic.poulain@linaro.org>2020-11-26 15:42:25 +0100
committerLoic Poulain <loic.poulain@linaro.org>2020-11-26 15:42:25 +0100
commit44fe0316cf6861b03147080145c87e557971dd2b (patch)
tree7b4427b2bd4aad30378c3403754fd206bf8bc052
parentbd53a0f0edcda1961f4b1cae7611c2ffbccfbc79 (diff)
Add wwan lookup support
Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
-rw-r--r--42-mhi.rules2
-rwxr-xr-xmhi-qmi-connectbin100312 -> 100296 bytes
-rw-r--r--mhi-qmi-connect.c24
3 files changed, 17 insertions, 9 deletions
diff --git a/42-mhi.rules b/42-mhi.rules
index e58de03..71e5be7 100644
--- a/42-mhi.rules
+++ b/42-mhi.rules
@@ -6,6 +6,6 @@
# the modem know that we want to use PCIe.
# QCOM SDX55 PCIe MHI QMI device (Legacy)
-ACTION=="add", SUBSYSTEM=="mhi_uci", ATTRS{vendor}=="0x17cb", ATTRS{device}=="0x0306", KERNEL=="mhi*QMI", RUN+="/bin/cat $env{DEVNAME}"
+#ACTION=="add", SUBSYSTEM=="mhi_uci", ATTRS{vendor}=="0x17cb", ATTRS{device}=="0x0306", KERNEL=="mhi*QMI", RUN+="/bin/cat $env{DEVNAME}"
#ACTION=="add", SUBSYSTEM=="mhi_uci", ATTRS{vendor}=="0x17cb", ATTRS{device}=="0x0306", KERNEL=="mhi*QMI", RUN+="/bin/mhi-qmi-connect --udev --kmsg"
diff --git a/mhi-qmi-connect b/mhi-qmi-connect
index 4e54d74..fe5acfc 100755
--- a/mhi-qmi-connect
+++ b/mhi-qmi-connect
Binary files differ
diff --git a/mhi-qmi-connect.c b/mhi-qmi-connect.c
index 41c3e3f..51fa8e2 100644
--- a/mhi-qmi-connect.c
+++ b/mhi-qmi-connect.c
@@ -19,7 +19,7 @@
//#define DATA_ENDPOINT_TYPE QMI_DATA_ENDPOINT_TYPE_EMBEDDED
//#define IFACE_ID 1
-#define WWAN_IFACE "mhi_hwip0"
+#define WWAN_DEFAULT_IFACE "mhi_hwip0"
#define MHI_CONFIG_DEFAULT "/etc/mhi-qmi-connect.conf"
static GMainLoop *loop;
@@ -38,6 +38,8 @@ static QmiClientUim *client_uim;
static QmiWdsConnectionStatus connection_status;
static guint32 packet_data_handle;
+static const gchar *wwan_iface;
+
struct config_struct {
gboolean sim1_enable;
gchar *sim1_pin_str;
@@ -127,13 +129,13 @@ static void stop_rmnet(void)
}
/* Set WWAN interface down */
- g_snprintf(cmdline, sizeof(cmdline), "%s link set %s down", iptool, WWAN_IFACE);
+ g_snprintf(cmdline, sizeof(cmdline), "%s link set %s down", iptool, wwan_iface);
if (!g_spawn_command_line_sync(cmdline, NULL, NULL, NULL, &error)) {
g_printerr("%s: %s\n", cmdline, error->message);
g_error_free(error);
return;
}
-
+
/* del RMNET interface */
g_snprintf(cmdline, sizeof(cmdline), "%s link delete rmnet_data%u", iptool, config.mux_id);
if (!g_spawn_command_line_sync(cmdline, NULL, NULL, NULL, &error)) {
@@ -141,7 +143,7 @@ static void stop_rmnet(void)
g_error_free(error);
return;
}
-
+
if (!config.default_route)
return;
@@ -296,9 +298,10 @@ static void setup_rmnet(void)
iptool = iptool_alt;
g_print("[%s] [RMNET] starting rmnet using: %s\n", qmi_device_get_path_display(device), iptool);
+ g_print("[%s] [RMNET] wwan interface: %s\n", qmi_device_get_path_display(device), wwan_iface);
/* Set wwan MTU */
- g_snprintf(cmdline, sizeof(cmdline), "%s link set %s mtu %u", iptool, WWAN_IFACE,
+ g_snprintf(cmdline, sizeof(cmdline), "%s link set %s mtu %u", iptool, wwan_iface,
MAX_QMAP_DATAGRAM_SIZE);
if (!g_spawn_command_line_sync(cmdline, NULL, NULL, NULL, &error)) {
g_printerr("%s: %s\n", cmdline, error->message);
@@ -309,7 +312,7 @@ static void setup_rmnet(void)
/* Add link */
g_snprintf(cmdline, sizeof(cmdline), "%s link add link %s name rmnet_data%u type rmnet mux_id %u",
- iptool, WWAN_IFACE, config.mux_id, config.mux_id);
+ iptool, wwan_iface, config.mux_id, config.mux_id);
if (!g_spawn_command_line_sync(cmdline, NULL, NULL, NULL, &error)) {
g_printerr("%s: %s\n", cmdline, error->message);
g_error_free(error);
@@ -343,7 +346,7 @@ static void setup_rmnet(void)
}
/* Set WWAN interface up */
- g_snprintf(cmdline, sizeof(cmdline), "%s link set %s up", iptool, WWAN_IFACE);
+ g_snprintf(cmdline, sizeof(cmdline), "%s link set %s up", iptool, wwan_iface);
if (!g_spawn_command_line_sync(cmdline, NULL, NULL, NULL, &error)) {
g_printerr("%s: %s\n", cmdline, error->message);
g_error_free(error);
@@ -859,7 +862,12 @@ static void device_open_ready(QmiDevice *dev, GAsyncResult *res)
op_shutdown(SHUTDOWN_ERROR);
return;
}
-
+
+ /* Retrieve wwan interface (not working for qrtr)*/
+ wwan_iface = WWAN_DEFAULT_IFACE;
+ if (qmi_dev)
+ wwan_iface = qmi_device_get_wwan_iface(device);
+
qmi_device_allocate_client(dev, service_dms, QMI_CID_NONE, 10, cancellable,
(GAsyncReadyCallback)allocate_dms_client_ready, NULL);
}