]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
btusb: Avoid reset of ISOC endpoint alt settings to zero
authorChethan Tumkur Narayan <chethan.tumkur.narayan@intel.com>
Mon, 3 Oct 2022 06:48:36 +0000 (12:18 +0530)
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Mon, 12 Dec 2022 22:19:23 +0000 (14:19 -0800)
In case of suspend/resume and HCI_RESET (BT On and Off),
ISOC endpoint set to alt setting 0 when no SCO connection exists.
This patch shall avoid resetting of ISOC endpoint to alt setting to 0.

Signed-off-by: Chethan Tumkur Narayan <chethan.tumkur.narayan@intel.com>
Signed-off-by: Kiran K <kiran.k@intel.com>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
drivers/bluetooth/btusb.c

index f05018988a17754a15a471e065827e444bd67315..3b4ae7905fd48bde8f79fa0e6550b548a7cd22d8 100644 (file)
@@ -1981,10 +1981,11 @@ static void btusb_work(struct work_struct *work)
                if (btusb_switch_alt_setting(hdev, new_alts) < 0)
                        bt_dev_err(hdev, "set USB alt:(%d) failed!", new_alts);
        } else {
-               clear_bit(BTUSB_ISOC_RUNNING, &data->flags);
                usb_kill_anchored_urbs(&data->isoc_anchor);
 
-               __set_isoc_interface(hdev, 0);
+               if (test_and_clear_bit(BTUSB_ISOC_RUNNING, &data->flags))
+                       __set_isoc_interface(hdev, 0);
+
                if (test_and_clear_bit(BTUSB_DID_ISO_RESUME, &data->flags))
                        usb_autopm_put_interface(data->isoc ? data->isoc : data->intf);
        }