USB: serial: option: reimplement interface masking
commitc3a65808f04a8426481b63a4fbd9392f009f6330
authorJohan Hovold <johan@kernel.org>
Wed, 7 Mar 2018 16:40:48 +0000 (7 17:40 +0100)
committerJohan Hovold <johan@kernel.org>
Mon, 19 Mar 2018 11:20:01 +0000 (19 12:20 +0100)
tree729a3d9059b913e2a5a306add17564f2e46a95d0
parent4a3928c6f8a53fa1aed28ccba227742486e8ddcb
USB: serial: option: reimplement interface masking

Reimplement interface masking using device flags stored directly in the
device-id table. This will make it easier to add and maintain device-id
entries by using a more compact and readable notation compared to the
current implementation (which manages pairs of masks in separate
blacklist structs).

Two convenience macros are used to flag an interface as either reserved
or as not supporting modem-control requests:

{ USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910_DUAL_MODEM),
  .driver_info = NCTRL(0) | RSVD(3) },

For now, we limit the highest maskable interface number to seven, which
allows for (up to 16) additional device flags to be added later should
need arise.

Note that this will likely need to be backported to stable in order to
make future device-id backports more manageable.

Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Johan Hovold <johan@kernel.org>
drivers/usb/serial/option.c