Commit Graph

7297 Commits

Author SHA1 Message Date
Aleksander Morgado
8cd21e439d kerneldevice,generic: plug memleak
==5075== 333 bytes in 37 blocks are definitely lost in loss record 4,612 of 4,761
    ==5075==    at 0x4C2CE5F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==5075==    by 0x66E3028: g_malloc (in /usr/lib/libglib-2.0.so.0.5200.3)
    ==5075==    by 0x66CAD42: g_path_get_basename (in /usr/lib/libglib-2.0.so.0.5200.3)
    ==5075==    by 0x20BE20: preload_driver (mm-kernel-device-generic.c:242)
    ==5075==    by 0x20C8E5: preload_contents (mm-kernel-device-generic.c:391)
    ==5075==    by 0x20E2E1: check_preload (mm-kernel-device-generic.c:830)
    ==5075==    by 0x20EA6F: set_property (mm-kernel-device-generic.c:953)
    ==5075==    by 0x6455359: ??? (in /usr/lib/libgobject-2.0.so.0.5200.3)
    ==5075==    by 0x6456DBC: g_object_new_valist (in /usr/lib/libgobject-2.0.so.0.5200.3)
    ==5075==    by 0x6105E95: g_initable_new_valist (in /usr/lib/libgio-2.0.so.0.5200.3)
    ==5075==    by 0x6105F58: g_initable_new (in /usr/lib/libgio-2.0.so.0.5200.3)
    ==5075==    by 0x20E848: mm_kernel_device_generic_new_with_rules (mm-kernel-device-generic.c:901)
2017-10-05 23:46:42 +02:00
Aleksander Morgado
2dc13fd964 plugin-manager: allow multiple calls to port_context_complete()
Only the first one will work.
2017-10-05 23:46:42 +02:00
Aleksander Morgado
bbe5064591 plugin-manager: ensure valid reference during cancellation
Cancelling the port_context->cancellable may end up finishing the
async task and completing the last reference of the port
context. Avoid that by making sure we hold a valid reference for as
long as we may need it.

    ==2277== Invalid read of size 4
    ==2277==    at 0x14ACE2: port_context_cancel (mm-plugin-manager.c:547)
    ==2277==    by 0x14C32E: device_context_port_released (mm-plugin-manager.c:1142)
    ==2277==    by 0x83831C7: ffi_call_unix64 (in /usr/lib/libffi.so.6.0.4)
    ==2277==    by 0x8382C29: ffi_call (in /usr/lib/libffi.so.6.0.4)
    ==2277==    by 0x64506A8: g_cclosure_marshal_generic (in /usr/lib/libgobject-2.0.so.0.5200.3)
    ==2277==    by 0x644FEAC: g_closure_invoke (in /usr/lib/libgobject-2.0.so.0.5200.3)
    ==2277==    by 0x64624AD: ??? (in /usr/lib/libgobject-2.0.so.0.5200.3)
    ==2277==    by 0x646AC84: g_signal_emit_valist (in /usr/lib/libgobject-2.0.so.0.5200.3)
    ==2277==    by 0x646B69E: g_signal_emit (in /usr/lib/libgobject-2.0.so.0.5200.3)
    ==2277==    by 0x1483E7: mm_device_release_port (mm-device.c:196)
    ==2277==    by 0x145D5D: device_removed (mm-base-manager.c:217)
    ==2277==    by 0x1464A9: handle_kernel_event (mm-base-manager.c:401)
    ==2277==  Address 0xf677d18 is 88 bytes inside a block of size 96 free'd
    ==2277==    at 0x4C2E14B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==2277==    by 0x14A1B7: port_context_unref (mm-plugin-manager.c:234)
    ==2277==    by 0x14AB51: plugin_supports_port_ready (mm-plugin-manager.c:492)
    ==2277==    by 0x612FD52: ??? (in /usr/lib/libgio-2.0.so.0.5200.3)
    ==2277==    by 0x6130775: ??? (in /usr/lib/libgio-2.0.so.0.5200.3)
    ==2277==    by 0x1AFDF8: port_probe_run_ready (mm-plugin.c:624)
    ==2277==    by 0x612FD52: ??? (in /usr/lib/libgio-2.0.so.0.5200.3)
    ==2277==    by 0x6130775: ??? (in /usr/lib/libgio-2.0.so.0.5200.3)
    ==2277==    by 0x6131367: g_task_return_error_if_cancelled (in /usr/lib/libgio-2.0.so.0.5200.3)
    ==2277==    by 0x1A9EDA: port_probe_task_return_error_if_cancelled (mm-port-probe.c:109)
    ==2277==    by 0x1ABCD2: serial_probe_at_parse_response (mm-port-probe.c:900)
    ==2277==    by 0x611E475: g_simple_async_result_complete (in /usr/lib/libgio-2.0.so.0.5200.3)
    ==2277==  Block was alloc'd at
    ==2277==    at 0x4C2CE5F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==2277==    by 0x66E3028: g_malloc (in /usr/lib/libglib-2.0.so.0.5200.3)
    ==2277==    by 0x66FAB25: g_slice_alloc (in /usr/lib/libglib-2.0.so.0.5200.3)
    ==2277==    by 0x66FAFB8: g_slice_alloc0 (in /usr/lib/libglib-2.0.so.0.5200.3)
    ==2277==    by 0x14B18D: port_context_new (mm-plugin-manager.c:649)
    ==2277==    by 0x14C4A7: device_context_port_grabbed (mm-plugin-manager.c:1182)
    ==2277==    by 0x83831C7: ffi_call_unix64 (in /usr/lib/libffi.so.6.0.4)
    ==2277==    by 0x8382C29: ffi_call (in /usr/lib/libffi.so.6.0.4)
    ==2277==    by 0x64506A8: g_cclosure_marshal_generic (in /usr/lib/libgobject-2.0.so.0.5200.3)
    ==2277==    by 0x644FEAC: g_closure_invoke (in /usr/lib/libgobject-2.0.so.0.5200.3)
    ==2277==    by 0x64624AD: ??? (in /usr/lib/libgobject-2.0.so.0.5200.3)
    ==2277==    by 0x646AC84: g_signal_emit_valist (in /usr/lib/libgobject-2.0.so.0.5200.3)
2017-10-05 23:46:41 +02:00
Aleksander Morgado
48850f21b4 port-serial: avoid invalid memory write on cancellation logic
If the GCancellable is already cancelled when trying to connect a
signal, the callback given will be run right away, and that may end up
completing the async task and removing the last MMPortSerial
reference.

    ==30627== Invalid write of size 8
    ==30627==    at 0x1ED43B: port_serial_queue_process (mm-port-serial.c:812)
    ==30627==    by 0x66DE342: ??? (in /usr/lib/libglib-2.0.so.0.5200.3)
    ==30627==    by 0x66DD8C4: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.5200.3)
    ==30627==    by 0x66DDC87: ??? (in /usr/lib/libglib-2.0.so.0.5200.3)
    ==30627==    by 0x66DDFA1: g_main_loop_run (in /usr/lib/libglib-2.0.so.0.5200.3)
    ==30627==    by 0x143F9B: main (main.c:180)
    ==30627==  Address 0xf6f0e98 is 200 bytes inside a block of size 328 free'd
    ==30627==    at 0x4C2E14B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==30627==    by 0x64742B2: g_type_free_instance (in /usr/lib/libgobject-2.0.so.0.5200.3)
    ==30627==    by 0x1ED0F2: port_serial_got_response (mm-port-serial.c:704)
    ==30627==    by 0x1ED21B: port_serial_response_wait_cancelled (mm-port-serial.c:757)
    ==30627==    by 0x60E1A81: g_cancellable_connect (in /usr/lib/libgio-2.0.so.0.5200.3)
    ==30627==    by 0x1ED43A: port_serial_queue_process (mm-port-serial.c:812)
    ==30627==    by 0x66DE342: ??? (in /usr/lib/libglib-2.0.so.0.5200.3)
    ==30627==    by 0x66DD8C4: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.5200.3)
    ==30627==    by 0x66DDC87: ??? (in /usr/lib/libglib-2.0.so.0.5200.3)
    ==30627==    by 0x66DDFA1: g_main_loop_run (in /usr/lib/libglib-2.0.so.0.5200.3)
    ==30627==    by 0x143F9B: main (main.c:180)
    ==30627==  Block was alloc'd at
    ==30627==    at 0x4C2CE5F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==30627==    by 0x66E3028: g_malloc (in /usr/lib/libglib-2.0.so.0.5200.3)
    ==30627==    by 0x66FAB25: g_slice_alloc (in /usr/lib/libglib-2.0.so.0.5200.3)
    ==30627==    by 0x66FAFB8: g_slice_alloc0 (in /usr/lib/libglib-2.0.so.0.5200.3)
    ==30627==    by 0x6473FB5: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.5200.3)
    ==30627==    by 0x6455027: ??? (in /usr/lib/libgobject-2.0.so.0.5200.3)
    ==30627==    by 0x6456DBC: g_object_new_valist (in /usr/lib/libgobject-2.0.so.0.5200.3)
    ==30627==    by 0x6457200: g_object_new (in /usr/lib/libgobject-2.0.so.0.5200.3)
    ==30627==    by 0x1F253A: mm_port_serial_at_new (mm-port-serial-at.c:533)
    ==30627==    by 0x1AC7E7: serial_open_at (mm-port-probe.c:1210)
    ==30627==    by 0x66DD8C4: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.5200.3)
    ==30627==    by 0x66DDC87: ??? (in /usr/lib/libglib-2.0.so.0.5200.3)
2017-10-05 23:19:22 +02:00
Aleksander Morgado
54b21292b1 base-manager: plug memleak
==28888== 622 (280 direct, 342 indirect) bytes in 7 blocks are definitely lost in loss record 2,515 of 2,548
    ==28888==    at 0x6474014: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.5200.3)
    ==28888==    by 0x6455027: ??? (in /usr/lib/libgobject-2.0.so.0.5200.3)
    ==28888==    by 0x6456A54: g_object_newv (in /usr/lib/libgobject-2.0.so.0.5200.3)
    ==28888==    by 0x6457213: g_object_new (in /usr/lib/libgobject-2.0.so.0.5200.3)
    ==28888==    by 0x4E9DD7D: mm_kernel_event_properties_new (mm-kernel-event-properties.c:422)
    ==28888==    by 0x4E9D8BC: mm_kernel_event_properties_new_from_string (mm-kernel-event-properties.c:283)
    ==28888==    by 0x1465D7: process_initial_kernel_events (mm-base-manager.c:555)
    ==28888==    by 0x14679E: mm_base_manager_start (mm-base-manager.c:581)
    ==28888==    by 0x143CF3: name_acquired_cb (main.c:110)
    ==28888==    by 0x616B805: ??? (in /usr/lib/libgio-2.0.so.0.5200.3)
    ==28888==    by 0x616BA47: ??? (in /usr/lib/libgio-2.0.so.0.5200.3)
    ==28888==    by 0x612FD52: ??? (in /usr/lib/libgio-2.0.so.0.5200.3)
2017-10-05 22:59:55 +02:00
Aleksander Morgado
5bb205d351 kerneldevice,generic: avoid segfault when reported device doesn't exist
Could be a user error or a race condition. In any case, we shouldn't
crash.

    ModemManager[19677]: <debug> [1507235472.301934] Kernel event reported:
    ModemManager[19677]: <debug> [1507235472.301944]   action:    add
    ModemManager[19677]: <debug> [1507235472.301953]   subsystem: usbmisc
    ModemManager[19677]: <debug> [1507235472.301962]   name:      cdc-wdm0
    ModemManager[19677]: <debug> [1507235472.301970]   uid:       n/a
    ModemManager[19677]: <debug> [1507235472.301984] (usbmisc/cdc-wdm0) preloading contents and properties...
    ModemManager[19677]: <warn>  [1507235472.302007] Invalid sysfs path read for usbmisc/cdc-wdm0
    ModemManager[19677]: <debug> [1507235472.302017] (usbmisc/cdc-wdm0) interface class: 0x00
    ModemManager[19677]: <debug> [1507235472.302027] (usbmisc/cdc-wdm0) interface subclass: 0x00
    ModemManager[19677]: <debug> [1507235472.302037] (usbmisc/cdc-wdm0) interface protocol: 0x00
    ModemManager[19677]: <debug> [1507235472.302046] (usbmisc/cdc-wdm0) interface number (ID_USB_INTERFACE_NUM): 0x00
    ModemManager[19677]: <debug> [1507235472.302059] (usbmisc/cdc-wdm0) manufacturer: unknown
    ModemManager[19677]: <debug> [1507235472.302069] (usbmisc/cdc-wdm0) product: unknown
    ModemManager[19677]: <debug> [1507235472.302078] (usbmisc/cdc-wdm0) vid: unknown
    ModemManager[19677]: <debug> [1507235472.302088] (usbmisc/cdc-wdm0) pid: unknown

    (ModemManager:19677): GLib-CRITICAL **: g_str_has_prefix: assertion 'str != NULL' failed

    (ModemManager:19677): GLib-CRITICAL **: g_str_has_prefix: assertion 'str != NULL' failed

    (ModemManager:19677): GLib-CRITICAL **: g_str_has_prefix: assertion 'str != NULL' failed

    (ModemManager:19677): GLib-CRITICAL **: g_str_has_prefix: assertion 'str != NULL' failed

    Thread 1 "ModemManager" received signal SIGSEGV, Segmentation fault.
2017-10-05 22:50:11 +02:00
Aleksander Morgado
71730509ee port-probe: avoid deadlock trying to disconnect cancellable
We cannot in any way try to disconnect a GCancellable from within a
cancellation handler, or we'll deadlock.

    Thread 1 (Thread 0x7fe98bf25700 (LWP 12079)):
    #0  0x00007fe98a355f36 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
    #1  0x00007fe98a7f5ac0 in g_cond_wait () from /usr/lib/libglib-2.0.so.0
    #2  0x00007fe98ad14650 in g_cancellable_disconnect () from /usr/lib/libgio-2.0.so.0
    #3  0x000000000045be5d in port_probe_run_context_free ()
    #4  0x00007fe98ad519ed in g_task_finalize () from /usr/lib/libgio-2.0.so.0
    #5  0x00007fe98aaaa7b3 in g_object_unref () from /usr/lib/libgobject-2.0.so.0
    #6  0x000000000045b5f8 in port_probe_task_return_error_if_cancelled ()
    #7  0x000000000045c57d in serial_probe_at_parse_response ()
    #8  0x00007fe98ad42ed2 in g_simple_async_result_complete () from /usr/lib/libgio-2.0.so.0
    #9  0x0000000000485c7d in serial_command_ready ()
    #10 0x00007fe98ad42ed2 in g_simple_async_result_complete () from /usr/lib/libgio-2.0.so.0
    #11 0x0000000000482345 in command_context_complete_and_free ()
    #12 0x0000000000482fa5 in port_serial_got_response ()
    #13 0x00000000004830f5 in port_serial_response_wait_cancelled ()
    #14 0x00007fe98aaa70c5 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
    #15 0x00007fe98aab47ce in signal_emit_unlocked_R () from /usr/lib/libgobject-2.0.so.0
    #16 0x00007fe98aabb595 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
    #17 0x00007fe98aabb662 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
    #18 0x00007fe98ad144c5 in g_cancellable_cancel () from /usr/lib/libgio-2.0.so.0
    #19 0x00007fe98aaa70c5 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
    #20 0x00007fe98aab47ce in signal_emit_unlocked_R () from /usr/lib/libgobject-2.0.so.0
    #21 0x00007fe98aabb595 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
    #22 0x00007fe98aabb662 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
    #23 0x00007fe98ad144c5 in g_cancellable_cancel () from /usr/lib/libgio-2.0.so.0
    #24 0x000000000042e9f6 in port_context_cancel ()
    #25 0x00007fe989b99a4c in ffi_call_unix64 () at ../src/x86/unix64.S:75
    #26 0x00007fe989b994b9 in ffi_call (cif=0x7fffc41dcdb0, fn=0x42ea40 <device_context_port_released>, rvalue=<optimized out>, avalue=0x7fffc41dccd0) at ../src/x86/ffi64.c:492
    #27 0x00007fe98aaa7700 in g_cclosure_marshal_generic () from /usr/lib/libgobject-2.0.so.0
    #28 0x00007fe98aaa70c5 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
    #29 0x00007fe98aab47ce in signal_emit_unlocked_R () from /usr/lib/libgobject-2.0.so.0
    #30 0x00007fe98aabb595 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
    #31 0x00007fe98aabb662 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
    #32 0x000000000042c8f0 in mm_device_release_port ()
    #33 0x000000000042a6cb in device_removed ()
    #34 0x000000000042af94 in handle_kernel_event ()
    #35 0x000000000042b356 in report_kernel_event_auth_ready ()
    #36 0x00007fe98ad51783 in g_task_return_now () from /usr/lib/libgio-2.0.so.0
    #37 0x00007fe98ad517b9 in complete_in_idle_cb () from /usr/lib/libgio-2.0.so.0
    #38 0x00007fe98a7bda5e in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
    #39 0x00007fe98a7bddb8 in g_main_context_iterate.isra () from /usr/lib/libglib-2.0.so.0
    #40 0x00007fe98a7be042 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
    #41 0x0000000000428dc4 in main ()

So, just clear the cancellation id before going on with the handler logic.
2017-10-05 12:37:12 +02:00
Dan Williams
3e15dc15ef bearer-mbim: don't crash when modem doesn't send gateways
When the Ericsson F5321 with firmware R3C11/R4D04 is told to make
an IPv6-only connection, it reports that it has IPv4 configuration
but then returns no actual addresses.  Check both the flags and
actual data before trying to use them.

ModemManager[25850]: <debug> [1506958721.914717] IPv4 configuration available: 'address, gateway, dns, mtu'
ModemManager[25850]: <debug> [1506958721.914731]   IP addresses (0)
ModemManager[25850]: <debug> [1506958721.914741]   DNS addresses (0)
ModemManager[25850]: <debug> [1506958721.914748]   MTU: '0'
ModemManager[25850]: <debug> [1506958721.914758] IPv6 configuration available: 'address, dns, mtu'
ModemManager[25850]: <debug> [1506958721.914767]   IP addresses (1)
ModemManager[25850]: <debug> [1506958721.914852]     IP [0]: 'fe80::39:f622:7d01/64'
ModemManager[25850]: <debug> [1506958721.914866]   DNS addresses (2)
ModemManager[25850]: <debug> [1506958721.914883]     DNS [0]: 'fd00:976a::9'
ModemManager[25850]: <debug> [1506958721.914896]   MTU: '1500'
ModemManager[25850]: <debug> [1506958721.914947] (wwp0s20u1i6): port now connected
2017-10-02 10:49:32 -05:00
Aleksander Morgado
b252ab668f build,tests: make sure tests are rebuilt if helper libs are updated 2017-09-28 23:13:12 +02:00
Aleksander Morgado
280b72f15e mbm: remove unused struct member 2017-09-28 11:04:55 +02:00
Aleksander Morgado
6847fb48f6 mbm: no need to re-set self pointer 2017-09-28 10:58:00 +02:00
Ben Chan
e0a3eeee5d mbm: port get_ip_config_3gpp to use GTask 2017-09-28 10:49:57 +02:00
Ben Chan
a910c45c08 mbm: port {enable,disable}_location_gathering to use GTask 2017-09-28 10:49:57 +02:00
Ben Chan
414aac9510 mbm: port location_load_capabilities to use GTask 2017-09-28 10:49:57 +02:00
Ben Chan
d19593d344 mbm: port modem_3gpp_disable_unsolicited_events to use GTask 2017-09-28 10:49:57 +02:00
Ben Chan
f79719c518 mbm: port modem_3gpp_enable_unsolicited_events to use GTask 2017-09-28 10:49:56 +02:00
Ben Chan
4454f840bc mbm: port modem_3gpp_{setup,cleanup}_unsolicited_events to use GTask 2017-09-28 10:49:56 +02:00
Ben Chan
a0e3a889b0 mbm: port enabling_modem_init to use GTask 2017-09-28 10:49:56 +02:00
Ben Chan
0b37db42b4 mbm: port set_current_modes to use GTask 2017-09-28 10:49:56 +02:00
Ben Chan
43bf7c764b mbm: port modem_after_sim_unlock to use GTask 2017-09-28 10:49:56 +02:00
Ben Chan
2e7aff84a6 mbm: port modem_create_bearer to use GTask 2017-09-28 10:49:56 +02:00
Ben Chan
9f573d3bcf mbm: port common_send_pin_puk to use GTask 2017-09-28 10:49:56 +02:00
Ben Chan
5769d52d3b x22x: port x22x_custom_init to use GTask 2017-09-28 10:45:52 +02:00
Ben Chan
1f6e7c9931 x22x: port set_current_modes to use GTask 2017-09-28 10:45:52 +02:00
Ben Chan
4e3a6b4eb5 x22x: port load_supported_modes to use GTask 2017-09-28 10:45:52 +02:00
Ben Chan
fea6835592 mtk: port disable_unsolicited_events to use GTask 2017-09-28 10:39:25 +02:00
Ben Chan
fe58e5f498 mtk: port enable_unsolicited_events to use GTask 2017-09-28 10:39:25 +02:00
Ben Chan
bfac21fbb8 mtk: port modem_3gpp_{setup,cleanup}_unsolicited_events to use GTask 2017-09-28 10:39:25 +02:00
Ben Chan
42bde89bae mtk: port modem_after_sim_unlock to use GTask 2017-09-28 10:39:25 +02:00
Ben Chan
3b2873148c mtk: port set_current_modes to use GTask 2017-09-28 10:39:25 +02:00
Ben Chan
996612f8db mtk: port load_supported_modes to use GTask 2017-09-28 10:39:25 +02:00
Ben Chan
2991ae0e86 mtk: port load_unlock_retries to use GTask 2017-09-28 10:39:25 +02:00
Aleksander Morgado
766c934f54 po: add Hungarian translation
From: Gabor Kelemen <kelemeng@ubuntu.com>

https://bugs.freedesktop.org/show_bug.cgi?id=103014
2017-09-27 21:56:06 +02:00
Aleksander Morgado
3ee1dc5fa0 libmm-glib,sms: fix get|dup_data() introspection annotations
We need to specify explicitly that the return type is an array of
guint8 elements.
2017-09-27 17:33:31 +02:00
Aleksander Morgado
bda7b9a74a ublox: plug memleak when parsing UAUTHREQ test 2017-09-26 13:45:17 +02:00
Aleksander Morgado
4c36bd42d4 huawei: plug memleak when listing cdc-wdm AT ports
The returned list contains full references, so make sure we unref them
before going on. Note that it's ok to return a pointer to one object
inside this list even if we're unref-ing them all, because we're sure
that the caller knows it's peek-ing a port object.
2017-09-26 10:46:55 +02:00
Aleksander Morgado
1e318bec54 broadband-bearer: fix object types in connect_3gpp() steps
All the steps in the connect_3gpp() sequence are implemented as
methods in the MMBroadbandBearer class, and therefore the objects
received in the corresponding ready() methods are all bearers, not
modems.

This issue wasn't found before because the objects received were not
really being used after all, as we were relying on the ones kept in
the context or lately in the GTask itself.
2017-09-26 10:03:17 +02:00
Ben Chan
9f9c88a72a broadband-modem-qmi: support loading hardware revision
This patch implements hardware revision loading in MMBroadbandModemQmi
using QMI DMS 'Get Hardware Revision' command.
2017-09-20 09:56:23 -07:00
Ben Chan
a848b6c368 broadband-modem-mbim: support loading hardware revision
This patch implements hardware revision loading in MMBroadbandModemMbim
by extracting the HardwareInfo field from the response to a
MBIM_CID_DEVICE_CAPS query.
2017-09-20 09:56:23 -07:00
Ben Chan
4a5a73eb1e cli: show hardware revision property of Modem interface 2017-09-20 09:56:23 -07:00
Ben Chan
9c6a1ebb1e libmm-glib: add helpers for loading hardware revision 2017-09-20 09:56:23 -07:00
Ben Chan
daa59aeb4c iface-modem: add hook to load hardware revision 2017-09-20 09:56:23 -07:00
Ben Chan
e32510418a api,introspection: new 'HardwareRevision' property
This property will let the clients know the hardware revision reported
by the modem.
2017-09-20 09:56:23 -07:00
Ben Chan
795ecad0e6 hso: port disconnect_3gpp to use GTask 2017-09-20 09:30:27 -07:00
Ben Chan
ee80e1f660 hso: port get_ip_config_3gpp to use GTask 2017-09-20 09:30:27 -07:00
Ben Chan
8bae1a785a hso: port {enable,disable}_location_gathering to use GTask 2017-09-20 09:30:27 -07:00
Ben Chan
227eae3f31 hso: port location_load_capabilities to use GTask 2017-09-20 09:30:27 -07:00
Ben Chan
616cfa9959 hso: port modem_3gpp_{setup,cleanup}_unsolicited_events to use GTask 2017-09-20 09:30:27 -07:00
Ben Chan
0131f9b006 hso: port modem_create_bearer to use GTask 2017-09-20 09:30:27 -07:00
Ben Chan
d23dd2343a hso: port load_unlock_retries to use GTask 2017-09-20 09:30:27 -07:00