]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
Bluetooth: btnxpuart: Fix glitches seen in dual A2DP streaming
authorNeeraj Sanjay Kale <neeraj.sanjaykale@nxp.com>
Mon, 20 Jan 2025 14:19:46 +0000 (19:49 +0530)
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Wed, 29 Jan 2025 20:23:49 +0000 (15:23 -0500)
This fixes a regression caused by previous commit for fixing truncated
ACL data, which is causing some intermittent glitches when running two
A2DP streams.

serdev_device_write_buf() is the root cause of the glitch, which is
reverted, and the TX work will continue to write until the queue is empty.

This change fixes both issues. No A2DP streaming glitches or truncated
ACL data issue observed.

Fixes: 8023dd220425 ("Bluetooth: btnxpuart: Fix driver sending truncated data")
Fixes: 689ca16e5232 ("Bluetooth: NXP: Add protocol support for NXP Bluetooth chipsets")
Signed-off-by: Neeraj Sanjay Kale <neeraj.sanjaykale@nxp.com>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
drivers/bluetooth/btnxpuart.c

index 1230045d78a5f06b8beb623d73e2c54a2d78a65c..aa5ec1d444a9d91b584cfaae53affd78fe269c52 100644 (file)
@@ -1381,13 +1381,12 @@ static void btnxpuart_tx_work(struct work_struct *work)
 
        while ((skb = nxp_dequeue(nxpdev))) {
                len = serdev_device_write_buf(serdev, skb->data, skb->len);
-               serdev_device_wait_until_sent(serdev, 0);
                hdev->stat.byte_tx += len;
 
                skb_pull(skb, len);
                if (skb->len > 0) {
                        skb_queue_head(&nxpdev->txq, skb);
-                       break;
+                       continue;
                }
 
                switch (hci_skb_pkt_type(skb)) {