Message ID | 20250420015156.192605-1-kiran.k@intel.com |
---|---|
State | New |
Headers | show |
Series | [v1] Bluetooth: btintel_pcie: Add additional to checks to clear TX/RX paths | expand |
This is automated email and please do not reply to this email! Dear submitter, Thank you for submitting the patches to the linux bluetooth mailing list. This is a CI test results with your patch series: PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=955133 ---Test result--- Test Summary: CheckPatch PENDING 0.26 seconds GitLint PENDING 0.17 seconds SubjectPrefix PASS 20.25 seconds BuildKernel PASS 24.03 seconds CheckAllWarning PASS 26.61 seconds CheckSparse PASS 38.60 seconds BuildKernel32 PASS 52.23 seconds TestRunnerSetup PASS 453.27 seconds TestRunner_l2cap-tester PENDING 58.88 seconds TestRunner_iso-tester PASS 54.56 seconds TestRunner_bnep-tester PASS 8.93 seconds TestRunner_mgmt-tester PASS 144.75 seconds TestRunner_rfcomm-tester PASS 25.02 seconds TestRunner_sco-tester PENDING 68.30 seconds TestRunner_ioctl-tester PASS 25.44 seconds TestRunner_mesh-tester PASS 24.48 seconds TestRunner_smp-tester PASS 14.96 seconds TestRunner_userchan-tester PASS 27.20 seconds IncrementalBuild PENDING 0.68 seconds Details ############################## Test: CheckPatch - PENDING Desc: Run checkpatch.pl script Output: ############################## Test: GitLint - PENDING Desc: Run gitlint Output: ############################## Test: TestRunner_l2cap-tester - PENDING Desc: Run l2cap-tester with test-runner Output: ############################## Test: TestRunner_sco-tester - PENDING Desc: Run sco-tester with test-runner Output: ############################## Test: IncrementalBuild - PENDING Desc: Incremental build with the patches in the series Output: --- Regards, Linux Bluetooth
diff --git a/drivers/bluetooth/btintel_pcie.c b/drivers/bluetooth/btintel_pcie.c index b73928e38d34..c23823e2a3ec 100644 --- a/drivers/bluetooth/btintel_pcie.c +++ b/drivers/bluetooth/btintel_pcie.c @@ -1262,10 +1262,8 @@ static void btintel_pcie_msix_rx_handle(struct btintel_pcie_data *data) bt_dev_dbg(hdev, "RXQ: cr_hia: %u cr_tia: %u", cr_hia, cr_tia); /* Check CR_TIA and CR_HIA for change */ - if (cr_tia == cr_hia) { - bt_dev_warn(hdev, "RXQ: no new CD found"); + if (cr_tia == cr_hia) return; - } rxq = &data->rxq; @@ -1301,6 +1299,16 @@ static irqreturn_t btintel_pcie_msix_isr(int irq, void *data) return IRQ_WAKE_THREAD; } +static inline bool btintel_pcie_is_rxq_empty(struct btintel_pcie_data *data) +{ + return data->ia.cr_hia[BTINTEL_PCIE_RXQ_NUM] == data->ia.cr_tia[BTINTEL_PCIE_RXQ_NUM]; +} + +static inline bool btintel_pcie_is_txackq_empty(struct btintel_pcie_data *data) +{ + return data->ia.cr_tia[BTINTEL_PCIE_TXQ_NUM] == data->ia.cr_hia[BTINTEL_PCIE_TXQ_NUM]; +} + static irqreturn_t btintel_pcie_irq_msix_handler(int irq, void *dev_id) { struct msix_entry *entry = dev_id; @@ -1332,12 +1340,18 @@ static irqreturn_t btintel_pcie_irq_msix_handler(int irq, void *dev_id) btintel_pcie_msix_gp0_handler(data); /* For TX */ - if (intr_fh & BTINTEL_PCIE_MSIX_FH_INT_CAUSES_0) + if (intr_fh & BTINTEL_PCIE_MSIX_FH_INT_CAUSES_0) { btintel_pcie_msix_tx_handle(data); + if (!btintel_pcie_is_rxq_empty(data)) + btintel_pcie_msix_rx_handle(data); + } /* For RX */ - if (intr_fh & BTINTEL_PCIE_MSIX_FH_INT_CAUSES_1) + if (intr_fh & BTINTEL_PCIE_MSIX_FH_INT_CAUSES_1) { btintel_pcie_msix_rx_handle(data); + if (!btintel_pcie_is_txackq_empty(data)) + btintel_pcie_msix_tx_handle(data); + } /* * Before sending the interrupt the HW disables it to prevent a nested