Bluetooth: hci_qca: Add support for controller debug logs.
PATCH v3 1/1 Bluetooth: hci_qca: Add support for controller debug logs.
This patch will prevent error messages splashing on console.
[ 78.426697] Bluetooth: hci_core.c:hci_acldata_packet() hci0: ACL packet for unknown connection handle 3804 [ 78.436682] Bluetooth: hci_core.c:hci_acldata_packet() hci0: ACL packet for unknown connection handle 3804 [ 78.446639] Bluetooth: hci_core.c:hci_acldata_packet() hci0: ACL packet for unknown connection handle 3804 [ 78.456596] Bluetooth: hci_core.c:hci_acldata_packet() hci0: ACL packet for unknown connection handle 3804
QCA wcn3990 will send the debug logs in the form of ACL packets. While decoding packet in qca_recv(), marking the received debug log packet as diagnostic packet.
---
v3:
* used get_unaligned_le16() instead of checking individual bytes
v2:
* Addressed reviewer comments.
v1:
* initial patch
--- drivers/bluetooth/hci_qca.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-)
drivers/bluetooth/hci_qca.c +18 -1
@@ -40,6 +40,7 @@#include <linux/platform_device.h> #include <linux/regulator/consumer.h> #include <linux/serdev.h> +#include <asm/unaligned.h> #include <net/bluetooth/bluetooth.h> #include <net/bluetooth/hci_core.h>
@@ -63,6 +64,9 @@/* susclk rate */ #define SUSCLK_RATE_32KHZ 32768 +/* Controller debug log header */ +#define QCA_DEBUG_HANDLE 0x2EDC +/* HCI_IBS transmit side sleep protocol states */ enum tx_ibs_states {HCI_IBS_TX_ASLEEP ,
@@ -849,6 +853,19 @@ static int qca_ibs_wake_ack(struct hci_dev *hdev, struct sk_buff *skb)return 0 ; } +static int qca_recv_acl_data (struct hci_dev *hdev,struct sk_buff *skb) +{ +/* We receive debug logs from chip as an ACL packets. +* Instead of sending the data to ACL to decode the +* received data, we are pushing them to the above layers +* as a diagnostic packet. +*/ +if (get_unaligned_le16 (skb->data) ==QCA_DEBUG_HANDLE ) +return hci_recv_diag (hdev, skb); + +return hci_recv_frame (hdev, skb); +} +#define QCA_IBS_SLEEP_IND_EVENT \ .type = HCI_IBS_SLEEP_IND, \ .hlen = 0, \
@@ -871,7 +888,7 @@ static int qca_ibs_wake_ack(struct hci_dev *hdev, struct sk_buff *skb) .maxlen = HCI_MAX_IBS_SIZE static const struct h4_recv_pkt qca_recv_pkts[] = { - {H4_RECV_ACL , .recv = hci_recv_frame }, + {H4_RECV_ACL , .recv = qca_recv_acl_data }, {H4_RECV_SCO , .recv = hci_recv_frame }, {H4_RECV_EVENT , .recv = hci_recv_frame }, {QCA_IBS_WAKE_IND_EVENT , .recv = qca_ibs_wake_ind },
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project
Marcel Holtmann
maintainerHi Balakrishna,
Quoted 22 lines
This patch will prevent error messages splashing on console.
[ 78.426697] Bluetooth: hci_core.c:hci_acldata_packet() hci0: ACL packet for unknown connection handle 3804 [ 78.436682] Bluetooth: hci_core.c:hci_acldata_packet() hci0: ACL packet for unknown connection handle 3804 [ 78.446639] Bluetooth: hci_core.c:hci_acldata_packet() hci0: ACL packet for unknown connection handle 3804 [ 78.456596] Bluetooth: hci_core.c:hci_acldata_packet() hci0: ACL packet for unknown connection handle 3804QCA wcn3990 will send the debug logs in the form of ACL packets. While decoding packet in
qca_recv(), marking the received debug log packet as diagnostic packet.Signed-off-by Harish Bandi <[email protected]>Signed-off-by Balakrishna Godavarthi <[email protected]>---
v3:
* usedget_unaligned_le16()instead of checking individual bytes
v2:
* Addressed reviewer comments.
v1:
* initial patch
---drivers/bluetooth/hci_qca.c| 19 ++++++++++++++++++-
Quoted 1 line
1 file changed, 18 insertions(+), 1 deletion(-)
patch has been applied to bluetooth-next tree.
Regards
Marcel