Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 581d6fd6 authored by Marcel Holtmann's avatar Marcel Holtmann
Browse files

Bluetooth: Queue diagnostic messages together with HCI packets



Sending diagnostic messages directly to the monitor socket might cause
issues for devices processing their messages in interrupt context. So
instead of trying to directly forward them, queue them up with the other
HCI packets and lets them be processed by the sockets at the same time.

Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
parent bb77543e
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -3555,14 +3555,15 @@ EXPORT_SYMBOL(hci_recv_frame);
/* Receive diagnostic message from HCI drivers */
int hci_recv_diag(struct hci_dev *hdev, struct sk_buff *skb)
{
	/* Mark as diagnostic packet */
	bt_cb(skb)->pkt_type = HCI_DIAG_PKT;

	/* Time stamp */
	__net_timestamp(skb);

	/* Mark as diagnostic packet and send to monitor */
	bt_cb(skb)->pkt_type = HCI_DIAG_PKT;
	hci_send_to_monitor(hdev, skb);
	skb_queue_tail(&hdev->rx_q, skb);
	queue_work(hdev->workqueue, &hdev->rx_work);

	kfree_skb(skb);
	return 0;
}
EXPORT_SYMBOL(hci_recv_diag);