]> www.infradead.org Git - users/hch/misc.git/commitdiff
Bluetooth: Always allow SCO packets for user channel
authorHsin-chen Chuang <chharry@chromium.org>
Fri, 14 Feb 2025 11:17:09 +0000 (19:17 +0800)
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Thu, 20 Feb 2025 18:25:08 +0000 (13:25 -0500)
The SCO packets from Bluetooth raw socket are now rejected because
hci_conn_num is left 0. This patch allows such the usecase to enable
the userspace SCO support.

Fixes: b16b327edb4d ("Bluetooth: btusb: add sysfs attribute to control USB alt setting")
Signed-off-by: Hsin-chen Chuang <chharry@chromium.org>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
drivers/bluetooth/btusb.c

index 90966dfbd2781f64a2babe0a6ba45543851950e5..8149e53fd0a76fbe0749403d1a130b09d46ed350 100644 (file)
@@ -2102,7 +2102,8 @@ static int btusb_send_frame(struct hci_dev *hdev, struct sk_buff *skb)
                return submit_or_queue_tx_urb(hdev, urb);
 
        case HCI_SCODATA_PKT:
-               if (hci_conn_num(hdev, SCO_LINK) < 1)
+               if (!hci_dev_test_flag(hdev, HCI_USER_CHANNEL) &&
+                   hci_conn_num(hdev, SCO_LINK) < 1)
                        return -ENODEV;
 
                urb = alloc_isoc_urb(hdev, skb);
@@ -2576,7 +2577,8 @@ static int btusb_send_frame_intel(struct hci_dev *hdev, struct sk_buff *skb)
                return submit_or_queue_tx_urb(hdev, urb);
 
        case HCI_SCODATA_PKT:
-               if (hci_conn_num(hdev, SCO_LINK) < 1)
+               if (!hci_dev_test_flag(hdev, HCI_USER_CHANNEL) &&
+                   hci_conn_num(hdev, SCO_LINK) < 1)
                        return -ENODEV;
 
                urb = alloc_isoc_urb(hdev, skb);