diff options
| author | Dhanashri Atre <datre@qca.qualcomm.com> | 2014-09-03 15:32:41 -0700 |
|---|---|---|
| committer | Akash Patel <c_akashp@qca.qualcomm.com> | 2014-09-04 18:21:10 -0700 |
| commit | d5bca918b7d7882565c8a345d580e6c146b4f0bf (patch) | |
| tree | 155c235d275cc2f29ece11b73a52f4fdff16ee5d | |
| parent | d8a66cae6ab82298eb069bbf27f9d64c8ca4a8c2 (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.c | 6 | ||||
| -rw-r--r-- | CORE/CLD_TXRX/TXRX/ol_rx.c | 3 | ||||
| -rw-r--r-- | CORE/SERVICES/HIF/PCIe/if_pci.c | 2 |
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; |
