From patchwork Sun May 25 05:39:38 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kiran K X-Patchwork-Id: 892515 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3D69B208CA for ; Sun, 25 May 2025 05:23:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748150595; cv=none; b=T0QhfKNcNeqACa0dU4Y2/eeDKQ7n6xmjsRpsDGzEP+MosW/wFgLUvxc5irZcU1uXPpxUFUit8GbXIAufibjqPw9YwqxY56It/tOwo1Spa++q4OhPQkJstlD5hYrCrIqpHPamglqYQ2UKgZmqUHeMKmOvibda8PYL3CNsT37sy/A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748150595; c=relaxed/simple; bh=lnnrjuBUBBNiXjj5NiuFHbHbdooEDMAX6mzfSyhXIhU=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=OGuhAaHZsT7atAaZzFx/HQ4RQvjK5/fvV6AhtHHnVad1o+px7CCQy1klX2kIK3Q+Wo8TE3oTGbPjjLwwCiGOHVHMzt17VErHQi3bjAEHLWIbUQf9r1T4Bfi46LiWFpH8hAboB4d0VWLgCEoDwYNiVNI/uG/iJJ/XERbrHCNH3pQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=MlaNOw83; arc=none smtp.client-ip=198.175.65.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="MlaNOw83" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1748150593; x=1779686593; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=lnnrjuBUBBNiXjj5NiuFHbHbdooEDMAX6mzfSyhXIhU=; b=MlaNOw83/BhT++1mVKG9WJbHCOs5WLDT5d7Pm9KJk07NZFfpx1rpyKqR HRsB/EBvo9XT9xegxL7BaKAbFCkjJ0QxCQ44nKI+Qe2JqQhe0C+sr/AqN FJtbphGJgJuY3l3yXHMdnb8kQNl0YZqU75gbhofGyNcw6mAywPCVX7pSl KsTqtcBlPqtzdT3By/FQu8aYU/9eWrDBN8/PHowV7fzC2Vg2/qJG/Mb5C l99Trpl31OU/h+bgqA0wI2ln2SK/2YlZWCxhvFn4IfRJ31Vj5bjeqmPda iQTBFg2Bmw/5MfR/DBJjDcPcno0ccd8ODpgYd0iNqgjZiRmn6tuEzFbYv g==; X-CSE-ConnectionGUID: KQjY1RaRS4ihaDXa9YX/hA== X-CSE-MsgGUID: kOr7wfHSRoG/owzJwhKzEw== X-IronPort-AV: E=McAfee;i="6700,10204,11443"; a="61208327" X-IronPort-AV: E=Sophos;i="6.15,312,1739865600"; d="scan'208";a="61208327" Received: from fmviesa005.fm.intel.com ([10.60.135.145]) by orvoesa105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2025 22:23:11 -0700 X-CSE-ConnectionGUID: 6ujmUrKASb2w2XTPKIJmTA== X-CSE-MsgGUID: MJVNdyWfRrOXLIcShAVecw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,312,1739865600"; d="scan'208";a="146656270" Received: from unknown (HELO intel-Lenovo-Legion-Y540-15IRH-PG0.iind.intel.com) ([10.224.186.95]) by fmviesa005.fm.intel.com with ESMTP; 24 May 2025 22:23:09 -0700 From: Kiran K To: linux-bluetooth@vger.kernel.org Cc: ravishankar.srivatsa@intel.com, chethan.tumkur.narayan@intel.com, chandrashekar.devegowda@intel.com, vijay.satija@intel.com, Kiran K Subject: [PATCH v1 1/3] Bluetooth: btintel_pcie: Fix driver not posting maximum rx buffers Date: Sun, 25 May 2025 11:09:38 +0530 Message-ID: <20250525053940.520283-1-kiran.k@intel.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The driver was posting only 6 rx buffers, despite the maximum rx buffers being defined as 16. Update the driver to post the full 16 Rx buffers to utilize the maximum capacity and improve performance. Signed-off-by: Chandrashekar Devegowda Signed-off-by: Kiran K Fixes: c2b636b3f788 ("Bluetooth: btintel_pcie: Add support for PCIe transport") --- drivers/bluetooth/btintel_pcie.c | 3 ++- drivers/bluetooth/btintel_pcie.h | 3 --- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/bluetooth/btintel_pcie.c b/drivers/bluetooth/btintel_pcie.c index 50fe17f1e1d1..2c7731803c9f 100644 --- a/drivers/bluetooth/btintel_pcie.c +++ b/drivers/bluetooth/btintel_pcie.c @@ -396,8 +396,9 @@ static int btintel_pcie_submit_rx(struct btintel_pcie_data *data) static int btintel_pcie_start_rx(struct btintel_pcie_data *data) { int i, ret; + struct rxq *rxq = &data->rxq; - for (i = 0; i < BTINTEL_PCIE_RX_MAX_QUEUE; i++) { + for (i = 0; i < rxq->count; i++) { ret = btintel_pcie_submit_rx(data); if (ret) return ret; diff --git a/drivers/bluetooth/btintel_pcie.h b/drivers/bluetooth/btintel_pcie.h index 21b964b15c1c..5ddd6d7d8d45 100644 --- a/drivers/bluetooth/btintel_pcie.h +++ b/drivers/bluetooth/btintel_pcie.h @@ -177,9 +177,6 @@ enum { /* Doorbell vector for TFD */ #define BTINTEL_PCIE_TX_DB_VEC 0 -/* Number of pending RX requests for downlink */ -#define BTINTEL_PCIE_RX_MAX_QUEUE 6 - /* Doorbell vector for FRBD */ #define BTINTEL_PCIE_RX_DB_VEC 513 From patchwork Sun May 25 05:39:39 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kiran K X-Patchwork-Id: 892658 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6B0BF149C4D for ; Sun, 25 May 2025 05:23:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748150595; cv=none; b=qRAPqRsptAMhVrVchniCme9DM6TmWqduuYpGxAaAA9ZhCTANdvlrchylpZip560f81mh1kgjlwTuI/VX8REvqkTzx+wGg5g8T71MXVKGsgVDqKWH5luUrLv8O/3CJKS7FzhGXlhXyykryCFj+qk5QSQdN7akhn0QwA/kPy8FtSU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748150595; c=relaxed/simple; bh=lYBo94Xo2bpWjux4JX9arPShTTWJLPpbtaCncIv9qMU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=d7psMgaXqEBfUsE9dB95KwSIVyTavhFCtF5HMKie/DKaVCREa6jhouHZC7d2NgQb+yGi6ZS/HulnzOm1l8suc0kkWtKFs+N6cCaDWYq7pLeUfulobqT4z5BmxliCjiAYD6HNu1a4ytMsbMYIPT60hKCteFftWzRSjFrxq6yMuXo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=VY5p0uXr; arc=none smtp.client-ip=198.175.65.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="VY5p0uXr" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1748150594; x=1779686594; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=lYBo94Xo2bpWjux4JX9arPShTTWJLPpbtaCncIv9qMU=; b=VY5p0uXrCQFRiZWe7l1gwjVlnZfm2UgFTIPJ/KK6vWIvVevRIC/KGBMr 0OcMQFLh7oSthjxHG8um1w2nlCZUJHCB4Ko2DNLTfVwLEteP7/kfFIKC6 hki1Bk8txfvjLTrJKdcZTCQPbccBpPLobIWW7MiS8SM2AI1KmCJvofMsO orvZgePtIKWgffnIiuGzf8edYHScJcDEXpGj9EUZNO8JLWw0VU6GDCM8t J0suWeefNeS4CUwZrVP+mQpdDeSLb4mv0AUqiblbRYY4E00uwokVCCe66 2AgiTfWgLsss3koyZvBqbIOD9jBnXd2crUWjKpNfbMsi/DMqd7kK3Iwqm g==; X-CSE-ConnectionGUID: JnsX1Vh9RQWGS+f3LRlRxA== X-CSE-MsgGUID: iaHkGmvDQ52IypQAwpXwQQ== X-IronPort-AV: E=McAfee;i="6700,10204,11443"; a="61208328" X-IronPort-AV: E=Sophos;i="6.15,312,1739865600"; d="scan'208";a="61208328" Received: from fmviesa005.fm.intel.com ([10.60.135.145]) by orvoesa105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2025 22:23:13 -0700 X-CSE-ConnectionGUID: pRhYGFi9SOCZV7dTgNrxbw== X-CSE-MsgGUID: C9W1IL/gSxiMhY39SjDvfQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,312,1739865600"; d="scan'208";a="146656304" Received: from unknown (HELO intel-Lenovo-Legion-Y540-15IRH-PG0.iind.intel.com) ([10.224.186.95]) by fmviesa005.fm.intel.com with ESMTP; 24 May 2025 22:23:11 -0700 From: Kiran K To: linux-bluetooth@vger.kernel.org Cc: ravishankar.srivatsa@intel.com, chethan.tumkur.narayan@intel.com, chandrashekar.devegowda@intel.com, vijay.satija@intel.com, Kiran K Subject: [PATCH v1 2/3] Bluetooth: btintel_pcie: Increase the tx and rx descriptor count Date: Sun, 25 May 2025 11:09:39 +0530 Message-ID: <20250525053940.520283-2-kiran.k@intel.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250525053940.520283-1-kiran.k@intel.com> References: <20250525053940.520283-1-kiran.k@intel.com> Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Chandrashekar Devegowda This change addresses latency issues observed in HID use cases where events arrive in bursts. By increasing the Rx descriptor count to 64, the firmware can handle bursty data more effectively, reducing latency and preventing buffer overflows. Signed-off-by: Chandrashekar Devegowda Signed-off-by: Kiran K --- drivers/bluetooth/btintel_pcie.c | 24 ++++++++++++------------ drivers/bluetooth/btintel_pcie.h | 7 +++++-- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/drivers/bluetooth/btintel_pcie.c b/drivers/bluetooth/btintel_pcie.c index 2c7731803c9f..03f13de4a723 100644 --- a/drivers/bluetooth/btintel_pcie.c +++ b/drivers/bluetooth/btintel_pcie.c @@ -1783,8 +1783,8 @@ static int btintel_pcie_alloc(struct btintel_pcie_data *data) * + size of index * Number of queues(2) * type of index array(4) * + size of context information */ - total = (sizeof(struct tfd) + sizeof(struct urbd0) + sizeof(struct frbd) - + sizeof(struct urbd1)) * BTINTEL_DESCS_COUNT; + total = (sizeof(struct tfd) + sizeof(struct urbd0)) * BTINTEL_PCIE_TX_DESCS_COUNT; + total += (sizeof(struct frbd) + sizeof(struct urbd1)) * BTINTEL_PCIE_RX_DESCS_COUNT; /* Add the sum of size of index array and size of ci struct */ total += (sizeof(u16) * BTINTEL_PCIE_NUM_QUEUES * 4) + sizeof(struct ctx_info); @@ -1809,36 +1809,36 @@ static int btintel_pcie_alloc(struct btintel_pcie_data *data) data->dma_v_addr = v_addr; /* Setup descriptor count */ - data->txq.count = BTINTEL_DESCS_COUNT; - data->rxq.count = BTINTEL_DESCS_COUNT; + data->txq.count = BTINTEL_PCIE_TX_DESCS_COUNT; + data->rxq.count = BTINTEL_PCIE_RX_DESCS_COUNT; /* Setup tfds */ data->txq.tfds_p_addr = p_addr; data->txq.tfds = v_addr; - p_addr += (sizeof(struct tfd) * BTINTEL_DESCS_COUNT); - v_addr += (sizeof(struct tfd) * BTINTEL_DESCS_COUNT); + p_addr += (sizeof(struct tfd) * BTINTEL_PCIE_TX_DESCS_COUNT); + v_addr += (sizeof(struct tfd) * BTINTEL_PCIE_TX_DESCS_COUNT); /* Setup urbd0 */ data->txq.urbd0s_p_addr = p_addr; data->txq.urbd0s = v_addr; - p_addr += (sizeof(struct urbd0) * BTINTEL_DESCS_COUNT); - v_addr += (sizeof(struct urbd0) * BTINTEL_DESCS_COUNT); + p_addr += (sizeof(struct urbd0) * BTINTEL_PCIE_TX_DESCS_COUNT); + v_addr += (sizeof(struct urbd0) * BTINTEL_PCIE_TX_DESCS_COUNT); /* Setup FRBD*/ data->rxq.frbds_p_addr = p_addr; data->rxq.frbds = v_addr; - p_addr += (sizeof(struct frbd) * BTINTEL_DESCS_COUNT); - v_addr += (sizeof(struct frbd) * BTINTEL_DESCS_COUNT); + p_addr += (sizeof(struct frbd) * BTINTEL_PCIE_RX_DESCS_COUNT); + v_addr += (sizeof(struct frbd) * BTINTEL_PCIE_RX_DESCS_COUNT); /* Setup urbd1 */ data->rxq.urbd1s_p_addr = p_addr; data->rxq.urbd1s = v_addr; - p_addr += (sizeof(struct urbd1) * BTINTEL_DESCS_COUNT); - v_addr += (sizeof(struct urbd1) * BTINTEL_DESCS_COUNT); + p_addr += (sizeof(struct urbd1) * BTINTEL_PCIE_RX_DESCS_COUNT); + v_addr += (sizeof(struct urbd1) * BTINTEL_PCIE_RX_DESCS_COUNT); /* Setup data buffers for txq */ err = btintel_pcie_setup_txq_bufs(data, &data->txq); diff --git a/drivers/bluetooth/btintel_pcie.h b/drivers/bluetooth/btintel_pcie.h index 5ddd6d7d8d45..7dad4523236c 100644 --- a/drivers/bluetooth/btintel_pcie.h +++ b/drivers/bluetooth/btintel_pcie.h @@ -154,8 +154,11 @@ enum msix_mbox_int_causes { /* Default interrupt timeout in msec */ #define BTINTEL_DEFAULT_INTR_TIMEOUT_MS 3000 -/* The number of descriptors in TX/RX queues */ -#define BTINTEL_DESCS_COUNT 16 +/* The number of descriptors in TX queues */ +#define BTINTEL_PCIE_TX_DESCS_COUNT 32 + +/* The number of descriptors in RX queues */ +#define BTINTEL_PCIE_RX_DESCS_COUNT 64 /* Number of Queue for TX and RX * It indicates the index of the IA(Index Array) From patchwork Sun May 25 05:39:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kiran K X-Patchwork-Id: 892514 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4E52415533F for ; Sun, 25 May 2025 05:23:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748150596; cv=none; b=bjHywvpo6wgtT/nBWeYZ6tClwKbS+92XMjDA1FwDyeOXJ3ntLNtjkQY8AaxjGxhapFD5pMQirrh81PFAnrVLj3gUdHamalEErllKcPea0YFxoO614UoFkAmCffUmVAiTPiP1kvO9zusOmj0Gerz8O/+Kt5Tts5ZEc3DMMZGlU9U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748150596; c=relaxed/simple; bh=agEt3vemqiDf0fkw4RaDsfrJ76P9XBT32usEnO7NPrI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PMM+LcW5U5mpsg+goXQ+U1uUnvxzGsngtRuAukNtXCUmTg0vNH9T8fdYpCAlzX74+dWON/Jl0Pe5nRRJEZNgig/EY2ZXinyUFy8SiLhT/oSwV6YV++PD27J6SmEqvm3zg23OGCo/fYUpI6jOZ7rJ1mB98Smt+wgCxyT/N3SkrP8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=Z+oAa9hK; arc=none smtp.client-ip=198.175.65.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="Z+oAa9hK" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1748150596; x=1779686596; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=agEt3vemqiDf0fkw4RaDsfrJ76P9XBT32usEnO7NPrI=; b=Z+oAa9hKjeeFOtTRIiewVz+RVfgwFuitdUsplqSWH/hUYnTzD52jcLrs 5elvfL41Z/GBvX4nirsdPpEEkMh9nIOgOHfs2oy2zmWqQZ6FCtyhnLGCp QtAU9wuOu1SZ3Bkk+DFgEDrkSmb8fTwBrNTFT1rl/bDatB9y9IkonbRjK W2FcJPGbwaQRSL0+U8738Py7f77Hrv3PxmtHsuGUtHm+uyMC5eUlrcdJJ ZQCW55LyRZtjNFMM+O90EJrEMJF4rulezqX3y0PTWXZ/eD8hy+EGoE/Wr tcqATFAjQEX0+1V+XvMoQybUvScHscDsXwdTbBfh6jxSDnwNx8wMP3u7F A==; X-CSE-ConnectionGUID: Aubny44zRN28rvLEdMz4SQ== X-CSE-MsgGUID: 6gVmskugRXWgm/kBwgFP/g== X-IronPort-AV: E=McAfee;i="6700,10204,11443"; a="61208331" X-IronPort-AV: E=Sophos;i="6.15,312,1739865600"; d="scan'208";a="61208331" Received: from fmviesa005.fm.intel.com ([10.60.135.145]) by orvoesa105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2025 22:23:15 -0700 X-CSE-ConnectionGUID: i9WSQKP3S9uQKos32nCKQA== X-CSE-MsgGUID: fQMCFzctRQ+0aojuyO2REg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,312,1739865600"; d="scan'208";a="146656319" Received: from unknown (HELO intel-Lenovo-Legion-Y540-15IRH-PG0.iind.intel.com) ([10.224.186.95]) by fmviesa005.fm.intel.com with ESMTP; 24 May 2025 22:23:13 -0700 From: Kiran K To: linux-bluetooth@vger.kernel.org Cc: ravishankar.srivatsa@intel.com, chethan.tumkur.narayan@intel.com, chandrashekar.devegowda@intel.com, vijay.satija@intel.com, Kiran K Subject: [PATCH v1 3/3] Bluetooth: btintel_pcie: Reduce driver buffer posting to prevent race condition Date: Sun, 25 May 2025 11:09:40 +0530 Message-ID: <20250525053940.520283-3-kiran.k@intel.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250525053940.520283-1-kiran.k@intel.com> References: <20250525053940.520283-1-kiran.k@intel.com> Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Chandrashekar Devegowda 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 Signed-off-by: Kiran K --- drivers/bluetooth/btintel_pcie.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/bluetooth/btintel_pcie.c b/drivers/bluetooth/btintel_pcie.c index 03f13de4a723..14f000e08e1e 100644 --- a/drivers/bluetooth/btintel_pcie.c +++ b/drivers/bluetooth/btintel_pcie.c @@ -398,7 +398,10 @@ 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;