net: cdc_ncm, cdc_mbim: allow user to prefer NCM for backwards compatibility
commit bd329e1
("net: cdc_ncm: do not bind to NCM compatible MBIM devices")
introduced a new policy, preferring MBIM for dual NCM/MBIM functions if
the cdc_mbim driver was enabled. This caused a regression for users
wanting to use NCM.
Devices implementing NCM backwards compatibility according to section
3.2 of the MBIM v1.0 specification allow either NCM or MBIM on a single
USB function, using different altsettings. The cdc_ncm and cdc_mbim
drivers will both probe such functions, and must agree on a common
policy for selecting either MBIM or NCM. Until now, this policy has
been set at build time based on CONFIG_USB_NET_CDC_MBIM.
Use a module parameter to set the system policy at runtime, allowing the
user to prefer NCM on systems with the cdc_mbim driver.
Cc: Greg Suarez <gsuarez@smithmicro.com>
Cc: Alexey Orishko <alexey.orishko@stericsson.com>
Reported-by: Geir Haatveit <nospam@haatveit.nu>
Reported-by: Tommi Kyntola <kynde@ts.ray.fi>
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=54791
Signed-off-by: Bjørn Mork <bjorn@mork.no>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
a5b8db9144
commit
1e8bbe6cd0
@@ -68,18 +68,9 @@ static int cdc_mbim_bind(struct usbnet *dev, struct usb_interface *intf)
|
||||
struct cdc_ncm_ctx *ctx;
|
||||
struct usb_driver *subdriver = ERR_PTR(-ENODEV);
|
||||
int ret = -ENODEV;
|
||||
u8 data_altsetting = CDC_NCM_DATA_ALTSETTING_NCM;
|
||||
u8 data_altsetting = cdc_ncm_select_altsetting(dev, intf);
|
||||
struct cdc_mbim_state *info = (void *)&dev->data;
|
||||
|
||||
/* see if interface supports MBIM alternate setting */
|
||||
if (intf->num_altsetting == 2) {
|
||||
if (!cdc_ncm_comm_intf_is_mbim(intf->cur_altsetting))
|
||||
usb_set_interface(dev->udev,
|
||||
intf->cur_altsetting->desc.bInterfaceNumber,
|
||||
CDC_NCM_COMM_ALTSETTING_MBIM);
|
||||
data_altsetting = CDC_NCM_DATA_ALTSETTING_MBIM;
|
||||
}
|
||||
|
||||
/* Probably NCM, defer for cdc_ncm_bind */
|
||||
if (!cdc_ncm_comm_intf_is_mbim(intf->cur_altsetting))
|
||||
goto err;
|
||||
|
Reference in New Issue
Block a user