]> asedeno.scripts.mit.edu Git - linux.git/commit
Bluetooth: hci_qca: wcn3990: Drop baudrate change vendor event
authorMatthias Kaehlcke <mka@chromium.org>
Tue, 21 May 2019 19:53:07 +0000 (12:53 -0700)
committerMarcel Holtmann <marcel@holtmann.org>
Sat, 6 Jul 2019 10:46:42 +0000 (12:46 +0200)
commit2faa3f15fa2fc13ad1e12a61fc3dbb14b326ba7a
treea3a3bf65d68c8da0b6bf6bcd8fe74809a1a1c8d0
parent32646db8cc2862a14788de1bb4c365d0a27fb532
Bluetooth: hci_qca: wcn3990: Drop baudrate change vendor event

Firmware download to the WCN3990 often fails with a 'TLV response size
mismatch' error:

[  133.064659] Bluetooth: hci0: setting up wcn3990
[  133.489150] Bluetooth: hci0: QCA controller version 0x02140201
[  133.495245] Bluetooth: hci0: QCA Downloading qca/crbtfw21.tlv
[  133.507214] Bluetooth: hci0: QCA TLV response size mismatch
[  133.513265] Bluetooth: hci0: QCA Failed to download patch (-84)

This is caused by a vendor event that corresponds to an earlier command
to change the baudrate. The event is not processed in the context of the
baudrate change and is later interpreted as response to the firmware
download command (which is also a vendor command), but the driver detects
that the event doesn't have the expected amount of associated data.

More details:

For the WCN3990 the vendor command for a baudrate change isn't sent as
synchronous HCI command, because the controller sends the corresponding
vendor event with the new baudrate. The event is received and decoded
after the baudrate change of the host port.

Identify the 'unused' event when it is received and don't add it to
the queue of RX frames.

Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
drivers/bluetooth/hci_qca.c