mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-26 02:39:48 +00:00
Bluetooth: hci_bcm: Handle specific unknown packets after firmware loading
[ Upstream commit22bba80500
] The Broadcom controller on aries S5PV210 boards sends out a couple of unknown packets after the firmware is loaded. This will cause logging of errors such as: Bluetooth: hci0: Frame reassembly failed (-84) This is probably also the case with other boards, as there are related Android userspace patches for custom ROMs such as https://review.lineageos.org/#/c/LineageOS/android_system_bt/+/142721/ Since this appears to be intended behaviour, treated them as diagnostic packets. Note that this is another variant of commit01d5e44ace
("Bluetooth: hci_bcm: Handle empty packet after firmware loading") Signed-off-by: Jonathan Bakker <xc-racer2@live.ca> Signed-off-by: Paweł Chmiel <pawel.mikolaj.chmiel@gmail.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
b63cd67875
commit
c6418ce8b8
1 changed files with 22 additions and 0 deletions
|
@ -50,6 +50,12 @@
|
|||
#define BCM_LM_DIAG_PKT 0x07
|
||||
#define BCM_LM_DIAG_SIZE 63
|
||||
|
||||
#define BCM_TYPE49_PKT 0x31
|
||||
#define BCM_TYPE49_SIZE 0
|
||||
|
||||
#define BCM_TYPE52_PKT 0x34
|
||||
#define BCM_TYPE52_SIZE 0
|
||||
|
||||
#define BCM_AUTOSUSPEND_DELAY 5000 /* default autosleep delay */
|
||||
|
||||
/* platform device driver resources */
|
||||
|
@ -483,12 +489,28 @@ static int bcm_setup(struct hci_uart *hu)
|
|||
.lsize = 0, \
|
||||
.maxlen = BCM_NULL_SIZE
|
||||
|
||||
#define BCM_RECV_TYPE49 \
|
||||
.type = BCM_TYPE49_PKT, \
|
||||
.hlen = BCM_TYPE49_SIZE, \
|
||||
.loff = 0, \
|
||||
.lsize = 0, \
|
||||
.maxlen = BCM_TYPE49_SIZE
|
||||
|
||||
#define BCM_RECV_TYPE52 \
|
||||
.type = BCM_TYPE52_PKT, \
|
||||
.hlen = BCM_TYPE52_SIZE, \
|
||||
.loff = 0, \
|
||||
.lsize = 0, \
|
||||
.maxlen = BCM_TYPE52_SIZE
|
||||
|
||||
static const struct h4_recv_pkt bcm_recv_pkts[] = {
|
||||
{ H4_RECV_ACL, .recv = hci_recv_frame },
|
||||
{ H4_RECV_SCO, .recv = hci_recv_frame },
|
||||
{ H4_RECV_EVENT, .recv = hci_recv_frame },
|
||||
{ BCM_RECV_LM_DIAG, .recv = hci_recv_diag },
|
||||
{ BCM_RECV_NULL, .recv = hci_recv_diag },
|
||||
{ BCM_RECV_TYPE49, .recv = hci_recv_diag },
|
||||
{ BCM_RECV_TYPE52, .recv = hci_recv_diag },
|
||||
};
|
||||
|
||||
static int bcm_recv(struct hci_uart *hu, const void *data, int count)
|
||||
|
|
Loading…
Reference in a new issue