summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDhanashri Atre <datre@qca.qualcomm.com>2014-09-03 15:32:41 -0700
committerAkash Patel <c_akashp@qca.qualcomm.com>2014-09-04 18:21:10 -0700
commitd5bca918b7d7882565c8a345d580e6c146b4f0bf (patch)
tree155c235d275cc2f29ece11b73a52f4fdff16ee5d
parentd8a66cae6ab82298eb069bbf27f9d64c8ca4a8c2 (diff)
wlan: qca_cld: Fix rx data recovery issue
Fix following issue during rx data error recovery 1. Sometimes rx data error recovery is not triggered - Issue was because of using wrong feature flag. 2. During rx data error recovery, watch dog bark is hit - Issue was because of setting recovery flag which needs to be set only when PCIe link down is detected. 3. Fix compilation issue because of uninitialized variable. Change-Id: Icdad79e13a3ab0da89dde8166c3526baca978227 CRs-Fixed: 719142
-rw-r--r--CORE/CLD_TXRX/HTT/htt_rx.c6
-rw-r--r--CORE/CLD_TXRX/TXRX/ol_rx.c3
-rw-r--r--CORE/SERVICES/HIF/PCIe/if_pci.c2
3 files changed, 7 insertions, 4 deletions
diff --git a/CORE/CLD_TXRX/HTT/htt_rx.c b/CORE/CLD_TXRX/HTT/htt_rx.c
index c7dfc98f7019..b28457aaf425 100644
--- a/CORE/CLD_TXRX/HTT/htt_rx.c
+++ b/CORE/CLD_TXRX/HTT/htt_rx.c
@@ -960,7 +960,7 @@ htt_rx_amsdu_pop_ll(
adf_nbuf_set_next(msdu, NULL);
*tail_msdu = msdu;
pdev->rx_ring.rx_reset = 1;
- return msdu_chained;
+ return msdu_chaining;
#else
process_wma_set_command(0,(int)GEN_PARAM_CRASH_INJECT,
0, GEN_CMD);
@@ -2402,6 +2402,10 @@ htt_rx_attach(struct htt_pdev_t *pdev)
pdev->rx_ring.dbg_refill_cnt = 0;
pdev->rx_ring.dbg_sync_success = 0;
#endif
+#ifdef HTT_RX_RESTORE
+ pdev->rx_ring.rx_reset = 0;
+ pdev->rx_ring.htt_rx_restore = 0;
+#endif
htt_rx_ring_fill_n(pdev, pdev->rx_ring.fill_level);
if (pdev->cfg.is_full_reorder_offload) {
diff --git a/CORE/CLD_TXRX/TXRX/ol_rx.c b/CORE/CLD_TXRX/TXRX/ol_rx.c
index f7509e3eeed9..2b4248b8d272 100644
--- a/CORE/CLD_TXRX/TXRX/ol_rx.c
+++ b/CORE/CLD_TXRX/TXRX/ol_rx.c
@@ -97,6 +97,7 @@ void ol_rx_trigger_restore(htt_pdev_handle htt_pdev, adf_nbuf_t head_msdu,
}
if ( !htt_pdev->rx_ring.htt_rx_restore){
+ vos_set_logp_in_progress(VOS_MODULE_ID_VOSS, TRUE);
htt_pdev->rx_ring.htt_rx_restore = 1;
schedule_work(&ol_rx_restore_work);
}
@@ -298,7 +299,7 @@ ol_rx_indication_handler(
msdu_chaining = htt_rx_amsdu_pop(
htt_pdev, rx_ind_msg, &head_msdu, &tail_msdu);
-#ifdef HTT_RX_RESET
+#ifdef HTT_RX_RESTORE
if (htt_pdev->rx_ring.rx_reset) {
ol_rx_trigger_restore(htt_pdev, head_msdu, tail_msdu);
return;
diff --git a/CORE/SERVICES/HIF/PCIe/if_pci.c b/CORE/SERVICES/HIF/PCIe/if_pci.c
index 55a24e8d1d8e..129240688bf5 100644
--- a/CORE/SERVICES/HIF/PCIe/if_pci.c
+++ b/CORE/SERVICES/HIF/PCIe/if_pci.c
@@ -1664,8 +1664,6 @@ void hif_pci_shutdown(struct pci_dev *pdev)
if (!sc)
return;
- sc->recovery = true;
-
if (vos_is_load_unload_in_progress(VOS_MODULE_ID_HIF, NULL)) {
printk("Load/unload in progress, ignore SSR shutdown\n");
return;