[PATCH] filter: cdc-acm protocols 1 through 6 are all AT-capable

Dan Williams dcbw at redhat.com
Thu Jan 18 17:07:32 UTC 2018


On Thu, 2018-01-18 at 16:33 +0100, Aleksander Morgado wrote:
> As per USB-IF "Class definitions for Communication Devices 1.2" docs.

LGTM.

Dan

> Reported-by: Iván Sánchez Ortega <ivan at sanchezortega.es>
> ---
>  src/mm-filter.c | 20 ++++++++++++++++++--
>  1 file changed, 18 insertions(+), 2 deletions(-)
> 
> diff --git a/src/mm-filter.c b/src/mm-filter.c
> index ca0241a0..6526cfaa 100644
> --- a/src/mm-filter.c
> +++ b/src/mm-filter.c
> @@ -134,12 +134,28 @@ mm_filter_port (MMFilter        *self,
>              return TRUE;
>          }
>  
> -        /* If the TTY kernel driver is cdc-acm and the interface is
> class=2/subclass=2/protocol=1, allow it */
> +        /*
> +         * If the TTY kernel driver is cdc-acm and the interface is
> class=2/subclass=2/protocol=[1-6], allow it.
> +         *
> +         * Class definitions for Communication Devices 1.2
> +         * Communications Interface Class Control Protocol Codes:
> +         *     00h     | USB specification | No class specific
> protocol required
> +         *     01h     | ITU-T V.250       | AT Commands: V.250 etc
> +         *     02h     | PCCA-101          | AT Commands defined by
> PCCA-101
> +         *     03h     | PCCA-101          | AT Commands defined by
> PCCA-101 & Annex O
> +         *     04h     | GSM 7.07          | AT Commands defined by
> GSM 07.07
> +         *     05h     | 3GPP 27.07        | AT Commands defined by
> 3GPP 27.007
> +         *     06h     | C-S0017-0         | AT Commands defined by
> TIA for CDMA
> +         *     07h     | USB EEM           | Ethernet Emulation
> Model
> +         *     08h-FDh |                   | RESERVED (future use)
> +         *     FEh     |                   | External Protocol:
> Commands defined by Command Set Functional Descriptor
> +         *     FFh     | USB Specification | Vendor-specific
> +         */
>          if ((self->priv->enabled_rules &
> MM_FILTER_RULE_TTY_ACM_INTERFACE) &&
>              (!g_strcmp0 (driver, "cdc_acm")) &&
>              (mm_kernel_device_get_interface_class (port) == 2) &&
>              (mm_kernel_device_get_interface_subclass (port) == 2) &&
> -            (mm_kernel_device_get_interface_protocol (port) == 1)) {
> +            (mm_kernel_device_get_interface_protocol (port) >= 1) &&
> (mm_kernel_device_get_interface_protocol (port) <= 6)) {
>              mm_dbg ("[filter] (%s/%s): port allowed: cdc-acm
> interface reported AT-capable", subsystem, name);
>              return TRUE;
>          }


More information about the ModemManager-devel mailing list