linux/drivers/bluetooth
Johan Hovold a112d3c72a Bluetooth: qca: fix NVM configuration parsing
The NVM configuration files used by WCN3988 and WCN3990/1/8 have two
sets of configuration tags that are enclosed by a type-length header of
type four which the current parser fails to account for.

Instead the driver happily parses random data as if it were valid tags,
something which can lead to the configuration data being corrupted if it
ever encounters the words 0x0011 or 0x001b.

As is clear from commit b63882549b ("Bluetooth: btqca: Fix the NVM
baudrate tag offcet for wcn3991") the intention has always been to
process the configuration data also for WCN3991 and WCN3998 which
encodes the baud rate at a different offset.

Fix the parser so that it can handle the WCN3xxx configuration files,
which has an enclosing type-length header of type four and two sets of
TLV tags enclosed by a type-length header of type two and three,
respectively.

Note that only the first set, which contains the tags the driver is
currently looking for, will be parsed for now.

With the parser fixed, the software in-band sleep bit will now be set
for WCN3991 and WCN3998 (as it is for later controllers) and the default
baud rate 3200000 may be updated by the driver also for WCN3xxx
controllers.

Notably the deep-sleep feature bit is already set by default in all
configuration files in linux-firmware.

Fixes: 4219d46868 ("Bluetooth: btqca: Add wcn3990 firmware download support.")
Cc: stable@vger.kernel.org	# 4.19
Cc: Matthias Kaehlcke <mka@chromium.org>
Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2024-05-03 13:05:30 -04:00
..
ath3k.c Bluetooth: ath3k: remove superfluous header files 2022-03-18 17:12:09 +01:00
bcm203x.c Bluetooth: bcm203x: remove superfluous header files 2022-03-18 17:12:09 +01:00
bfusb.c Bluetooth: bfusb: fix division by zero in send path 2021-10-25 15:04:46 +02:00
bluecard_cs.c Bluetooth: Use fallthrough pseudo-keyword 2020-07-10 19:09:42 +02:00
bpa10x.c Bluetooth: bpa10x: change return value 2019-09-04 16:11:46 +02:00
bt3c_cs.c Bluetooth: bt3c_cs: Fix obsolete function 2018-09-27 12:57:39 +02:00
btbcm.c Bluetooth: btbcm: Use devm_kstrdup() 2024-03-06 17:24:06 -05:00
btbcm.h Bluetooth: hci_bcm: Add support for FW loading in autobaud mode 2022-07-21 17:04:38 -07:00
btintel.c Bluetooth: btintel: Fixe build regression 2024-03-06 17:26:10 -05:00
btintel.h Bluetooth: btintel: Print firmware SHA1 2023-12-22 12:55:56 -05:00
btmrvl_debugfs.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_390.RULE 2022-06-10 14:51:36 +02:00
btmrvl_drv.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_390.RULE 2022-06-10 14:51:36 +02:00
btmrvl_main.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_390.RULE 2022-06-10 14:51:36 +02:00
btmrvl_sdio.c Bluetooth: btmrvl_sdio: mark OF related data as maybe unused 2023-04-23 21:49:18 -07:00
btmrvl_sdio.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_390.RULE 2022-06-10 14:51:36 +02:00
btmtk.c Bluetooth: btusb: mediatek: Fix double free of skb in coredump 2024-04-24 16:26:16 -04:00
btmtk.h Bluetooth: btmtk: Add MODULE_FIRMWARE() for MT7922 2024-03-06 17:27:11 -05:00
btmtksdio.c Bluetooth: btmtksdio: enable bluetooth wakeup in system suspend 2023-10-23 11:04:51 -07:00
btmtkuart.c treewide, serdev: change receive_buf() return type to size_t 2024-01-27 18:13:53 -08:00
btnxpuart.c TTY/Serial driver update for 6.9-rc1 2024-03-21 12:44:10 -07:00
btqca.c Bluetooth: qca: fix NVM configuration parsing 2024-05-03 13:05:30 -04:00
btqca.h Bluetooth: qca: add support for QCA2066 2023-10-23 10:59:46 -07:00
btqcomsmd.c Bluetooth: btqcomsmd: Fix command timeout after setting BD address 2023-03-23 13:09:38 -07:00
btrsi.c Bluetooth: btrsi: remove superfluous header files from btrsi.c 2021-09-29 00:13:48 +02:00
btrtl.c Bluetooth: btrtl: Add the support for RTL8852BT/RTL8852BE-VT 2024-03-06 17:22:36 -05:00
btrtl.h Bluetooth: btrtl: Add Realtek devcoredump support 2023-08-11 11:35:14 -07:00
btsdio.c Revert "Bluetooth: btsdio: fix use after free bug in btsdio_remove due to unfinished work" 2023-04-23 22:04:52 -07:00
btusb.c Bluetooth: btusb: Fix triggering coredump implementation for QCA 2024-04-24 16:26:10 -04:00
dtl1_cs.c networking: add and use skb_put_u8() 2017-06-16 11:48:40 -04:00
h4_recv.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
hci_ag6xx.c Bluetooth: hci_uart: Remove redundant assignment to fw_ptr 2021-06-26 07:52:41 +02:00
hci_ath.c Bluetooth: hci_uart: check for missing tty operations 2019-07-31 13:17:33 -07:00
hci_bcm4377.c Bluetooth: hci_bcm4377: do not mark valid bd_addr as invalid 2024-02-28 09:39:44 -05:00
hci_bcm.c Bluetooth: hci_bcm: do not mark valid bd_addr as invalid 2023-06-29 10:52:08 -07:00
hci_bcsp.c treewide: Convert del_timer*() to timer_shutdown*() 2022-12-25 13:38:09 -08:00
hci_h4.c Bluetooth: hci_h4: Fix padding calculation error within h4_recv_buf() 2021-11-16 13:57:25 +01:00
hci_h5.c Bluetooth: btrtl: fix out of bounds memory access 2024-03-06 17:26:21 -05:00
hci_intel.c Bluetooth: hci_intel: Add check for platform_driver_register 2022-07-21 17:05:10 -07:00
hci_ldisc.c TTY/Serial driver changes for 6.6-rc1 2023-09-01 09:38:00 -07:00
hci_ll.c Bluetooth: hci_ll: drop of_match_ptr for ID table 2023-04-23 21:49:03 -07:00
hci_mrvl.c Bluetooth: hci_mrvl: Add serdev support for 88W8997 2023-04-23 21:45:29 -07:00
hci_nokia.c Bluetooth: nokia: fix value check in nokia_bluetooth_serdev_probe() 2023-08-11 11:50:41 -07:00
hci_qca.c Bluetooth: qca: set power_ctrl_enabled on NULL returned by gpiod_get_optional() 2024-04-24 16:26:22 -04:00
hci_serdev.c TTY/Serial driver update for 6.9-rc1 2024-03-21 12:44:10 -07:00
hci_uart.h Bluetooth: hci_h5: Add ability to allocate memory for private data 2024-03-06 17:26:21 -05:00
hci_vhci.c Bluetooth: Fix deadlock in vhci_send_frame 2023-12-15 11:29:16 -05:00
Kconfig Bluetooth: Add vhci devcoredump support 2023-04-23 21:58:21 -07:00
Makefile Bluetooth: NXP: Add protocol support for NXP Bluetooth chipsets 2023-04-23 21:51:55 -07:00
virtio_bt.c virtio_bt: call scheduler when we free unused buffs 2023-07-03 12:15:12 -04:00