Patch "Bluetooth: btnxpuart: Fix glitches seen in dual A2DP streaming" has been added to the 6.13-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    Bluetooth: btnxpuart: Fix glitches seen in dual A2DP streaming

to the 6.13-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     bluetooth-btnxpuart-fix-glitches-seen-in-dual-a2dp-s.patch
and it can be found in the queue-6.13 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit dcf5fdf8e0d5c5ec97ad2f9bd0337ab41abd6e8a
Author: Neeraj Sanjay Kale <neeraj.sanjaykale@xxxxxxx>
Date:   Mon Jan 20 19:49:46 2025 +0530

    Bluetooth: btnxpuart: Fix glitches seen in dual A2DP streaming
    
    [ Upstream commit 7de119bb79a63f6a1959b83117a98734914fb0b0 ]
    
    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@xxxxxxx>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/bluetooth/btnxpuart.c b/drivers/bluetooth/btnxpuart.c
index 1230045d78a5f..aa5ec1d444a9d 100644
--- a/drivers/bluetooth/btnxpuart.c
+++ b/drivers/bluetooth/btnxpuart.c
@@ -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)) {




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux