summaryrefslogtreecommitdiff
path: root/drivers/bluetooth
diff options
context:
space:
mode:
authorNeeraj Sanjay Kale <neeraj.sanjaykale@nxp.com>2024-12-20 18:32:52 +0530
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2025-01-17 13:36:14 +0100
commitb455f050709af2d77611bc3daa3c001ffe1a3896 (patch)
tree30321adfcd4ffe3eb69b265d5da3963ade3595ec /drivers/bluetooth
parent327bd191bb441854451fb7f406756a9d80c43829 (diff)
downloadlinux-b455f050709af2d77611bc3daa3c001ffe1a3896.tar.gz
linux-b455f050709af2d77611bc3daa3c001ffe1a3896.tar.bz2
linux-b455f050709af2d77611bc3daa3c001ffe1a3896.zip
Bluetooth: btnxpuart: Fix driver sending truncated data
[ Upstream commit 8023dd2204254a70887f5ee58d914bf70a060b9d ] This fixes the apparent controller hang issue seen during stress test where the host sends a truncated payload, followed by HCI commands. The controller treats these HCI commands as a part of previously truncated payload, leading to command timeouts. Adding a serdev_device_wait_until_sent() call after serdev_device_write_buf() fixed the issue. 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.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/bluetooth/btnxpuart.c b/drivers/bluetooth/btnxpuart.c
index 5ee9a8b8dcfd..e809bb2dbe5e 100644
--- a/drivers/bluetooth/btnxpuart.c
+++ b/drivers/bluetooth/btnxpuart.c
@@ -1280,6 +1280,7 @@ 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);