mirror of
https://github.com/torvalds/linux.git
synced 2024-12-02 17:11:33 +00:00
net: cdc_mbim: send ZLP only for the specific buggy device
Reverting328d7b8
and instead adding an exception for the Sierra Wireless MC7710. commit328d7b8
(net: cdc_mbim: send ZLP after max sized NTBs) added a workaround for an issue observed on one specific device. Concerns were raised that this workaround adds a performance penalty to all devices based on questionable, if not buggy, behaviour of a single device: "If you add ZLP for NTBs of dwNtbOutMaxSize, you are heavily affecting CPU load, increasing interrupt load by factor of 2 in high load traffic scenario and possibly decreasing throughput for all other devices which behaves correctly." "The idea of NCM was to avoid extra ZLPs. If your transfer is exactly dwNtbOutMaxSize, it's known, you can submit such request on the receiver side and you do not need any EOT indicatation, so the frametime can be used for useful data." Adding a device specific exception to prevent the workaround from affecting well behaved devices. The assumption here is that needing a ZLP is truly an *exception*. We do not yet have enough data to verify this. The generic workaround in commit328d7b8
should be considered acceptable despite the performance penalty if the exception list becomes a maintainance hassle. Cc: Alexey ORISHKO <alexey.orishko@stericsson.com> Cc: Yauheni Kaliuta <y.kaliuta@gmail.com> Signed-off-by: Bjørn Mork <bjorn@mork.no> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
b44108dbdb
commit
844e88f044
@ -365,6 +365,21 @@ err:
|
||||
}
|
||||
|
||||
static const struct driver_info cdc_mbim_info = {
|
||||
.description = "CDC MBIM",
|
||||
.flags = FLAG_NO_SETINT | FLAG_MULTI_PACKET | FLAG_WWAN,
|
||||
.bind = cdc_mbim_bind,
|
||||
.unbind = cdc_mbim_unbind,
|
||||
.manage_power = cdc_mbim_manage_power,
|
||||
.rx_fixup = cdc_mbim_rx_fixup,
|
||||
.tx_fixup = cdc_mbim_tx_fixup,
|
||||
};
|
||||
|
||||
/* MBIM and NCM devices should not need a ZLP after NTBs with
|
||||
* dwNtbOutMaxSize length. This driver_info is for the exceptional
|
||||
* devices requiring it anyway, allowing them to be supported without
|
||||
* forcing the performance penalty on all the sane devices.
|
||||
*/
|
||||
static const struct driver_info cdc_mbim_info_zlp = {
|
||||
.description = "CDC MBIM",
|
||||
.flags = FLAG_NO_SETINT | FLAG_MULTI_PACKET | FLAG_WWAN | FLAG_SEND_ZLP,
|
||||
.bind = cdc_mbim_bind,
|
||||
@ -385,6 +400,10 @@ static const struct usb_device_id mbim_devs[] = {
|
||||
{ USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_NCM, USB_CDC_PROTO_NONE),
|
||||
.driver_info = (unsigned long)&cdc_mbim_info,
|
||||
},
|
||||
/* Sierra Wireless MC7710 need ZLPs */
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(0x1199, 0x68a2, USB_CLASS_COMM, USB_CDC_SUBCLASS_MBIM, USB_CDC_PROTO_NONE),
|
||||
.driver_info = (unsigned long)&cdc_mbim_info_zlp,
|
||||
},
|
||||
{ USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_MBIM, USB_CDC_PROTO_NONE),
|
||||
.driver_info = (unsigned long)&cdc_mbim_info,
|
||||
},
|
||||
|
Loading…
Reference in New Issue
Block a user