]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
Bluetooth: btusb: Fixed too many in-token issue for Mediatek Chip.
authormark-yw.chen <mark-yw.chen@mediatek.com>
Mon, 12 Apr 2021 15:06:26 +0000 (23:06 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 19 Jul 2021 08:01:09 +0000 (10:01 +0200)
[ Upstream commit 8454ed9ff9647e31e061fb5eb2e39ce79bc5e960 ]

This patch reduce in-token during download patch procedure.
Don't submit urb for polling event before sending hci command.

Signed-off-by: mark-yw.chen <mark-yw.chen@mediatek.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/bluetooth/btusb.c

index ddc7b86725cd70feeb2f73de8ed66d6cc20c743c..b3ba5a9dc5fccc9ba599ceaccccda456ca2deb49 100644 (file)
@@ -3377,11 +3377,6 @@ static int btusb_mtk_hci_wmt_sync(struct hci_dev *hdev,
        struct btmtk_wmt_hdr *hdr;
        int err;
 
-       /* Submit control IN URB on demand to process the WMT event */
-       err = btusb_mtk_submit_wmt_recv_urb(hdev);
-       if (err < 0)
-               return err;
-
        /* Send the WMT command and wait until the WMT event returns */
        hlen = sizeof(*hdr) + wmt_params->dlen;
        if (hlen > 255)
@@ -3407,6 +3402,11 @@ static int btusb_mtk_hci_wmt_sync(struct hci_dev *hdev,
                goto err_free_wc;
        }
 
+       /* Submit control IN URB on demand to process the WMT event */
+       err = btusb_mtk_submit_wmt_recv_urb(hdev);
+       if (err < 0)
+               return err;
+
        /* The vendor specific WMT commands are all answered by a vendor
         * specific event and will have the Command Status or Command
         * Complete as with usual HCI command flow control.