]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
Bluetooth: btintel_pcie: Reduce driver buffer posting to prevent race condition
authorChandrashekar Devegowda <chandrashekar.devegowda@intel.com>
Tue, 3 Jun 2025 10:04:40 +0000 (15:34 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 19 Jun 2025 13:32:25 +0000 (15:32 +0200)
[ Upstream commit bf2ffc4d14db29cab781549912d2dc69127f4d3e ]

Modify the driver to post 3 fewer buffers than the maximum rx buffers
(64) allowed for the firmware. This change mitigates a hardware issue
causing a race condition in the firmware, improving stability and data
handling.

Signed-off-by: Chandrashekar Devegowda <chandrashekar.devegowda@intel.com>
Signed-off-by: Kiran K <kiran.k@intel.com>
Fixes: c2b636b3f788 ("Bluetooth: btintel_pcie: Add support for PCIe transport")
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/bluetooth/btintel_pcie.c

index c02d671396e245226875820868fe11e166369798..34812bf7587d66522a6b871cdc298035aac11f62 100644 (file)
@@ -233,7 +233,11 @@ static int btintel_pcie_start_rx(struct btintel_pcie_data *data)
        int i, ret;
        struct rxq *rxq = &data->rxq;
 
-       for (i = 0; i < rxq->count; i++) {
+       /* Post (BTINTEL_PCIE_RX_DESCS_COUNT - 3) buffers to overcome the
+        * hardware issues leading to race condition at the firmware.
+        */
+
+       for (i = 0; i < rxq->count - 3; i++) {
                ret = btintel_pcie_submit_rx(data);
                if (ret)
                        return ret;