summaryrefslogtreecommitdiff
path: root/drivers/bluetooth
diff options
context:
space:
mode:
authorNeeraj Sanjay Kale <neeraj.sanjaykale@nxp.com>2025-01-20 19:49:46 +0530
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2025-02-08 09:52:31 +0100
commit3924c153761c4dd44f1ef1b5c94a7313f90f8336 (patch)
tree8bb86f0c91d5cdadc152c940256506fcf1a2e6f3 /drivers/bluetooth
parentd2cd915aea83c6e8993ee239492076c36ffba6e1 (diff)
downloadlinux-3924c153761c4dd44f1ef1b5c94a7313f90f8336.tar.gz
linux-3924c153761c4dd44f1ef1b5c94a7313f90f8336.tar.bz2
linux-3924c153761c4dd44f1ef1b5c94a7313f90f8336.zip
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@nxp.com> Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'drivers/bluetooth')
-rw-r--r--drivers/bluetooth/btnxpuart.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/bluetooth/btnxpuart.c b/drivers/bluetooth/btnxpuart.c
index e809bb2dbe5e..a4274d8c7faa 100644
--- a/drivers/bluetooth/btnxpuart.c
+++ b/drivers/bluetooth/btnxpuart.c
@@ -1280,13 +1280,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)) {