diff options
author | Loic Poulain <loic.poulain@linaro.org> | 2020-11-26 15:42:25 +0100 |
---|---|---|
committer | Loic Poulain <loic.poulain@linaro.org> | 2020-11-26 15:42:25 +0100 |
commit | 44fe0316cf6861b03147080145c87e557971dd2b (patch) | |
tree | 7b4427b2bd4aad30378c3403754fd206bf8bc052 | |
parent | bd53a0f0edcda1961f4b1cae7611c2ffbccfbc79 (diff) |
Add wwan lookup support
Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
-rw-r--r-- | 42-mhi.rules | 2 | ||||
-rwxr-xr-x | mhi-qmi-connect | bin | 100312 -> 100296 bytes | |||
-rw-r--r-- | mhi-qmi-connect.c | 24 |
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 Binary files differindex 4e54d74..fe5acfc 100755 --- a/mhi-qmi-connect +++ b/mhi-qmi-connect 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); } |