[PATCH] telit: don't ignore AT ports without an explicit port type hint tag

Daniele Palmas dnlplm at gmail.com
Sun Mar 12 16:23:22 UTC 2017


Hi Aleksander,

2017-03-11 13:29 GMT+01:00 Aleksander Morgado <aleksander at aleksander.es>:
> The telit plugin is based on two main ways of checking the purpose of
> each port: udev tags flagging specific interfaces (with info taken
> from Windows .inf drivers), or otherwise using AT#PORTCFG? to query
> the modem about that information. If none of those applies, the port
> is ignored by default.
>
> In order to support devices that are not explicitly tagged, the plugin
> shouldn't flag as ignored the AT-capable TTYs, instead they are now
> grabbed as 'secondary': ports grabbed as secondary will never be used
> for either primary/data IF there is another port flagged explicitly
> for primary/data.
>
> This fixes the support for modems with a single TTY and no explicit
> port type hint tag, e.g. RS232 modems with just one single TTY where
> there's no point in specifying port type hints: the port will be
> grabbed as secondary, and then automatically promoted to primary/data
> as there is no other port grabbed.
>
> https://bugs.freedesktop.org/show_bug.cgi?id=100159
> ---
>
> Hey Dan, Daniele, Carlo and everyone,
>
> This patch makes it possible for the Telit plugin to support Telit modems that only expose a single TTY, without needing to manually add any port type hint.
>
> What do you think?

Makes sense to me, thanks.

Daniele

>
> ---
>  plugins/telit/mm-common-telit.c | 19 +++++++++++++++----
>  1 file changed, 15 insertions(+), 4 deletions(-)
>
> diff --git a/plugins/telit/mm-common-telit.c b/plugins/telit/mm-common-telit.c
> index 78530c42..3f2cce5c 100644
> --- a/plugins/telit/mm-common-telit.c
> +++ b/plugins/telit/mm-common-telit.c
> @@ -84,11 +84,22 @@ telit_grab_port (MMPlugin *self,
>          } else
>              ptype = MM_PORT_TYPE_IGNORED;
>      } else {
> -        /* If the port was tagged by the udev rules but isn't a primary or secondary,
> -         * then ignore it to guard against race conditions if a device just happens
> -         * to show up with more than two AT-capable ports.
> +        /* If the port isn't explicitly tagged as primary, secondary, or gps
> +         * port, we will fallback to flagging it as secondary, but only if it
> +         * probed AT successfully.
> +         *
> +         * This is so that we support the case where a single TTY is exposed
> +         * by the modem and no explicit port type hint is specified.
> +         *
> +         * From the modem point of view, only the AT_FLAG_PRIMARY would be
> +         * important, as that is the port that would end up getting used for PPP
> +         * in this case, so having multiple secondary ports, if that ever
> +         * happened, wouldn't be an issue.
>           */
> -        ptype = MM_PORT_TYPE_IGNORED;
> +        if (mm_port_probe_is_at (probe))
> +            pflags = MM_PORT_SERIAL_AT_FLAG_SECONDARY;
> +        else
> +            ptype = MM_PORT_TYPE_IGNORED;
>      }
>
>      return mm_base_modem_grab_port (modem,
> --
> 2.12.0


More information about the ModemManager-devel mailing list