https://github.com/torvalds/linux
Raw File
Tip revision: 637f847b68741de42547d5f846c71ed5fe859b6e authored by TarAldarion on 02 March 2020, 12:13:05 UTC
Fix for packets being rejected in the ring buffer used by the xHCI controller. When a packet larger than MTU arrives in Linux from the modem, it is discarded with -EOVERFLOW error (Babble error). This is seen on USB3.0 and USB2.0 busses. This is essentially because the MRU (Max Receive Size) is not a separate entity to the MTU (Max Transmit Size) and the received packets can be larger than those transmitted. Following the babble error there were an endless supply of zero-length URBs which are rejected with -EPROTO (increasing the rx input error counter each time). This is only seen on USB3.0. These continue to come ad infinitum until the modem is shutdown. There appears to be a bug in the core USB handling code in Linux that doesn't deal well with network MTUs smaller than 1500 bytes. By default the dev->hard_mtu (the real MTU) is in lockstep with dev->rx_urb_size (essentially an MRU), and it's the latter that is causing trouble. This has nothing to do with the modems; the issue can be reproduced by getting a USB-Ethernet dongle, setting the MTU to 1430, and pinging with size greater than 1406.
Tip revision: 637f847
Kconfig
# SPDX-License-Identifier: GPL-2.0-only
#
# NFC sybsystem configuration
#

menuconfig NFC
	depends on NET
	depends on RFKILL || !RFKILL
	tristate "NFC subsystem support"
	default n
	help
	  Say Y here if you want to build support for NFC (Near field
	  communication) devices.

	  To compile this support as a module, choose M here: the module will
	  be called nfc.

config NFC_DIGITAL
	depends on NFC
	select CRC_CCITT
	select CRC_ITU_T
	tristate "NFC Digital Protocol stack support"
	default n
	help
	  Say Y if you want to build NFC digital protocol stack support.
	  This is needed by NFC chipsets whose firmware only implement
	  the NFC analog layer.

	  To compile this support as a module, choose M here: the module will
	  be called nfc_digital.

source "net/nfc/nci/Kconfig"
source "net/nfc/hci/Kconfig"

source "drivers/nfc/Kconfig"
back to top