qcacmn: Control path support for Spectral DMA debug

All gen III chipsets use Direct-DMA mechanism to copy Spectral reports to
the Host for further processing. This mechanism involves ring and buffer
management in the Host, FW, and uCode, where improper/incomplete DMA and
improper tail update issues are seen. DBR framework provides support to
debug such issues. Add Spectral control path support to facilitate the
configuration of these debug options.

CRs-Fixed: 2478596 2478595
Change-Id: I094616c4137145389b6984ccab933e5ebd0aa1ab
This commit is contained in:
Shwetha G K
2019-10-24 11:58:01 +05:30
committed by nshrivas
parent 85d32ab984
commit 8db4b4ac32
12 changed files with 502 additions and 22 deletions

View File

@@ -514,6 +514,12 @@ struct wmi_spectral_cmd_ops;
* @sptrlto_use_nl_bcast: Get whether to use Netlink broadcast/unicast
* @sptrlto_deregister_netlink_cb: De-register Spectral Netlink callbacks
* @sptrlto_process_spectral_report: Process spectral report
* @sptrlto_set_dma_debug: Set DMA debug for Spectral
* @sptrlto_direct_dma_support: Whether Direct-DMA is supported on this radio
* @sptrlto_check_and_do_dbr_ring_debug: Start/Stop Spectral ring debug based
* on the previous state
* @sptrlto_check_and_do_dbr_buff_debug: Start/Stop Spectral buffer debug based
* on the previous state
**/
struct wlan_lmac_if_sptrl_tx_ops {
void *(*sptrlto_pdev_spectral_init)(struct wlan_objmgr_pdev *pdev);
@@ -560,6 +566,16 @@ struct wlan_lmac_if_sptrl_tx_ops {
int (*sptrlto_process_spectral_report)(
struct wlan_objmgr_pdev *pdev,
void *payload);
QDF_STATUS (*sptrlto_set_dma_debug)(
struct wlan_objmgr_pdev *pdev,
enum spectral_dma_debug dma_debug_type,
bool dma_debug_enable);
bool (*sptrlto_direct_dma_support)(struct wlan_objmgr_pdev *pdev);
QDF_STATUS (*sptrlto_check_and_do_dbr_ring_debug)(
struct wlan_objmgr_pdev *pdev);
QDF_STATUS (*sptrlto_check_and_do_dbr_buff_debug)(
struct wlan_objmgr_pdev *pdev);
};
#endif /* WLAN_CONV_SPECTRAL_ENABLE */
@@ -627,7 +643,7 @@ struct wlan_lmac_if_direct_buf_rx_tx_ops {
QDF_STATUS (*direct_buf_rx_stop_buffer_poisoning)(
struct wlan_objmgr_pdev *pdev, uint8_t mod_id);
};
#endif
#endif /* DIRECT_BUF_RX_ENABLE */
#ifdef FEATURE_WLAN_TDLS
/* fwd declarations for tdls tx ops */