qmi_wwan: Support dynamic config on Quectel EP06
authorKristian Evensen <kristian.evensen@gmail.com>
Sat, 8 Sep 2018 11:50:48 +0000 (13:50 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 10 Sep 2018 17:48:54 +0000 (10:48 -0700)
commit7c5cca3588545e7f255171e28e0dd6e384ebb91d
tree5df51af919b5543418ede09ea418c9fdee400640
parent3ebb17446b954b7d39264564ec3f7522d502e785
qmi_wwan: Support dynamic config on Quectel EP06

Quectel EP06 (and EM06/EG06) supports dynamic configuration of USB
interfaces, without the device changing VID/PID or configuration number.
When the configuration is updated and interfaces are added/removed, the
interface numbers change. This means that the current code for matching
EP06 does not work.

This patch removes the current EP06 interface number match, and replaces
it with a match on class, subclass and protocol. Unfortunately, matching
on those three alone is not enough, as the diag interface exports the
same values as QMI. The other serial interfaces + adb export different
values and do not match.

The diag interface only has two endpoints, while the QMI interface has
three. I have therefore added a check for number of interfaces, and we
ignore the interface if the number of endpoints equals two.

Signed-off-by: Kristian Evensen <kristian.evensen@gmail.com>
Acked-by: Bjørn Mork <bjorn@mork.no>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/usb/qmi_wwan.c