qcacmn: Add register/deregister data stall detect cb api
Add register and deregister data stall detect callback apis. Change-Id: I59d5871b7ec03da4b4f69d87b14f7eb5e8606c4a CRs-Fixed: 2090654
This commit is contained in:

committed by
snandini

parent
d85083e7be
commit
5c57a8905e
@@ -565,6 +565,84 @@ enum cdp_vdev_param_type {
|
|||||||
#define PER_RADIO_FW_STATS_REQUEST 0
|
#define PER_RADIO_FW_STATS_REQUEST 0
|
||||||
#define PER_VDEV_FW_STATS_REQUEST 1
|
#define PER_VDEV_FW_STATS_REQUEST 1
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum data_stall_log_event_indicator - Module triggering data stall
|
||||||
|
* @DATA_STALL_LOG_INDICATOR_UNUSED: Unused
|
||||||
|
* @DATA_STALL_LOG_INDICATOR_HOST_DRIVER: Host driver indicates data stall
|
||||||
|
* @DATA_STALL_LOG_INDICATOR_FIRMWARE: FW indicates data stall
|
||||||
|
* @DATA_STALL_LOG_INDICATOR_FRAMEWORK: Framework indicates data stall
|
||||||
|
*
|
||||||
|
* Enum indicating the module that indicates data stall event
|
||||||
|
*/
|
||||||
|
enum data_stall_log_event_indicator {
|
||||||
|
DATA_STALL_LOG_INDICATOR_UNUSED,
|
||||||
|
DATA_STALL_LOG_INDICATOR_HOST_DRIVER,
|
||||||
|
DATA_STALL_LOG_INDICATOR_FIRMWARE,
|
||||||
|
DATA_STALL_LOG_INDICATOR_FRAMEWORK,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum data_stall_log_event_type - data stall event type
|
||||||
|
* @DATA_STALL_LOG_NONE
|
||||||
|
* @DATA_STALL_LOG_FW_VDEV_PAUSE
|
||||||
|
* @DATA_STALL_LOG_HWSCHED_CMD_FILTER
|
||||||
|
* @DATA_STALL_LOG_HWSCHED_CMD_FLUSH
|
||||||
|
* @DATA_STALL_LOG_FW_RX_REFILL_FAILED
|
||||||
|
* @DATA_STALL_LOG_FW_RX_FCS_LEN_ERROR
|
||||||
|
* @DATA_STALL_LOG_FW_WDOG_ERRORS
|
||||||
|
* @DATA_STALL_LOG_BB_WDOG_ERROR
|
||||||
|
* @DATA_STALL_LOG_HOST_STA_TX_TIMEOUT
|
||||||
|
* @DATA_STALL_LOG_HOST_SOFTAP_TX_TIMEOUT
|
||||||
|
* @DATA_STALL_LOG_NUD_FAILURE
|
||||||
|
*
|
||||||
|
* Enum indicating data stall event type
|
||||||
|
*/
|
||||||
|
enum data_stall_log_event_type {
|
||||||
|
DATA_STALL_LOG_NONE,
|
||||||
|
DATA_STALL_LOG_FW_VDEV_PAUSE,
|
||||||
|
DATA_STALL_LOG_HWSCHED_CMD_FILTER,
|
||||||
|
DATA_STALL_LOG_HWSCHED_CMD_FLUSH,
|
||||||
|
DATA_STALL_LOG_FW_RX_REFILL_FAILED,
|
||||||
|
DATA_STALL_LOG_FW_RX_FCS_LEN_ERROR,
|
||||||
|
DATA_STALL_LOG_FW_WDOG_ERRORS,
|
||||||
|
DATA_STALL_LOG_BB_WDOG_ERROR,
|
||||||
|
DATA_STALL_LOG_HOST_STA_TX_TIMEOUT,
|
||||||
|
DATA_STALL_LOG_HOST_SOFTAP_TX_TIMEOUT,
|
||||||
|
DATA_STALL_LOG_NUD_FAILURE,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum data_stall_log_recovery_type - data stall recovery type
|
||||||
|
* @DATA_STALL_LOG_RECOVERY_NONE,
|
||||||
|
* @DATA_STALL_LOG_RECOVERY_CONNECT_DISCONNECT,
|
||||||
|
* @DATA_STALL_LOG_RECOVERY_TRIGGER_PDR
|
||||||
|
*
|
||||||
|
* Enum indicating data stall recovery type
|
||||||
|
*/
|
||||||
|
enum data_stall_log_recovery_type {
|
||||||
|
DATA_STALL_LOG_RECOVERY_NONE = 0,
|
||||||
|
DATA_STALL_LOG_RECOVERY_CONNECT_DISCONNECT,
|
||||||
|
DATA_STALL_LOG_RECOVERY_TRIGGER_PDR,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct data_stall_event_info - data stall info
|
||||||
|
* @indicator: Module triggering data stall
|
||||||
|
* @data_stall_type: data stall event type
|
||||||
|
* @vdev_id_bitmap: vdev_id_bitmap
|
||||||
|
* @pdev_id: pdev id
|
||||||
|
* @recovery_type: data stall recovery type
|
||||||
|
*/
|
||||||
|
struct data_stall_event_info {
|
||||||
|
uint32_t indicator;
|
||||||
|
uint32_t data_stall_type;
|
||||||
|
uint32_t vdev_id_bitmap;
|
||||||
|
uint32_t pdev_id;
|
||||||
|
uint32_t recovery_type;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef void (*data_stall_detect_cb)(struct data_stall_event_info *);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* cdp_stats - options for host and firmware
|
* cdp_stats - options for host and firmware
|
||||||
* statistics
|
* statistics
|
||||||
|
@@ -120,6 +120,76 @@ cdp_set_wisa_mode(ol_txrx_soc_handle soc, struct cdp_vdev *vdev, bool enable)
|
|||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* cdp_data_stall_cb_register() - register data stall callback
|
||||||
|
* @soc - data path soc handle
|
||||||
|
* @cb - callback function
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS register success
|
||||||
|
*/
|
||||||
|
static inline QDF_STATUS cdp_data_stall_cb_register(ol_txrx_soc_handle soc,
|
||||||
|
data_stall_detect_cb cb)
|
||||||
|
{
|
||||||
|
if (!soc || !soc->ops || !soc->ops->misc_ops) {
|
||||||
|
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_FATAL,
|
||||||
|
"%s invalid instance", __func__);
|
||||||
|
return QDF_STATUS_E_INVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (soc->ops->misc_ops->txrx_data_stall_cb_register)
|
||||||
|
return soc->ops->misc_ops->txrx_data_stall_cb_register(cb);
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* cdp_data_stall_cb_deregister() - de-register data stall callback
|
||||||
|
* @soc - data path soc handle
|
||||||
|
* @cb - callback function
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS de-register success
|
||||||
|
*/
|
||||||
|
static inline QDF_STATUS cdp_data_stall_cb_deregister(ol_txrx_soc_handle soc,
|
||||||
|
data_stall_detect_cb cb)
|
||||||
|
{
|
||||||
|
if (!soc || !soc->ops || !soc->ops->misc_ops) {
|
||||||
|
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_FATAL,
|
||||||
|
"%s invalid instance", __func__);
|
||||||
|
return QDF_STATUS_E_INVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (soc->ops->misc_ops->txrx_data_stall_cb_deregister)
|
||||||
|
return soc->ops->misc_ops->txrx_data_stall_cb_deregister(cb);
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* cdp_post_data_stall_event() - post data stall event
|
||||||
|
* @soc - data path soc handle
|
||||||
|
* @indicator: Module triggering data stall
|
||||||
|
* @data_stall_type: data stall event type
|
||||||
|
* @pdev_id: pdev id
|
||||||
|
* @vdev_id_bitmap: vdev id bitmap
|
||||||
|
* @recovery_type: data stall recovery type
|
||||||
|
*
|
||||||
|
* Return: None
|
||||||
|
*/
|
||||||
|
static inline void
|
||||||
|
cdp_post_data_stall_event(ol_txrx_soc_handle soc,
|
||||||
|
enum data_stall_log_event_indicator indicator,
|
||||||
|
enum data_stall_log_event_type data_stall_type,
|
||||||
|
uint32_t pdev_id, uint32_t vdev_id_bitmap,
|
||||||
|
enum data_stall_log_recovery_type recovery_type)
|
||||||
|
{
|
||||||
|
if (!soc || !soc->ops || !soc->ops->misc_ops)
|
||||||
|
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_FATAL,
|
||||||
|
"%s invalid instance", __func__);
|
||||||
|
|
||||||
|
if (soc->ops->misc_ops->txrx_post_data_stall_event)
|
||||||
|
soc->ops->misc_ops->txrx_post_data_stall_event(
|
||||||
|
indicator, data_stall_type, pdev_id,
|
||||||
|
vdev_id_bitmap, recovery_type);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cdp_set_wmm_param() - set wmm parameter
|
* cdp_set_wmm_param() - set wmm parameter
|
||||||
* @soc - data path soc handle
|
* @soc - data path soc handle
|
||||||
|
@@ -644,6 +644,9 @@ struct ol_if_ops {
|
|||||||
* @tx_non_std:
|
* @tx_non_std:
|
||||||
* @get_vdev_id:
|
* @get_vdev_id:
|
||||||
* @set_wisa_mode:
|
* @set_wisa_mode:
|
||||||
|
* @txrx_data_stall_cb_register:
|
||||||
|
* @txrx_data_stall_cb_deregister:
|
||||||
|
* @txrx_post_data_stall_event
|
||||||
* @runtime_suspend:
|
* @runtime_suspend:
|
||||||
* @runtime_resume:
|
* @runtime_resume:
|
||||||
*/
|
*/
|
||||||
@@ -661,6 +664,13 @@ struct cdp_misc_ops {
|
|||||||
enum ol_tx_spec tx_spec, qdf_nbuf_t msdu_list);
|
enum ol_tx_spec tx_spec, qdf_nbuf_t msdu_list);
|
||||||
uint16_t (*get_vdev_id)(struct cdp_vdev *vdev);
|
uint16_t (*get_vdev_id)(struct cdp_vdev *vdev);
|
||||||
QDF_STATUS (*set_wisa_mode)(struct cdp_vdev *vdev, bool enable);
|
QDF_STATUS (*set_wisa_mode)(struct cdp_vdev *vdev, bool enable);
|
||||||
|
QDF_STATUS (*txrx_data_stall_cb_register)(data_stall_detect_cb cb);
|
||||||
|
QDF_STATUS (*txrx_data_stall_cb_deregister)(data_stall_detect_cb cb);
|
||||||
|
void (*txrx_post_data_stall_event)(
|
||||||
|
enum data_stall_log_event_indicator indicator,
|
||||||
|
enum data_stall_log_event_type data_stall_type,
|
||||||
|
uint32_t pdev_id, uint32_t vdev_id_bitmap,
|
||||||
|
enum data_stall_log_recovery_type recovery_type);
|
||||||
QDF_STATUS (*runtime_suspend)(struct cdp_pdev *pdev);
|
QDF_STATUS (*runtime_suspend)(struct cdp_pdev *pdev);
|
||||||
QDF_STATUS (*runtime_resume)(struct cdp_pdev *pdev);
|
QDF_STATUS (*runtime_resume)(struct cdp_pdev *pdev);
|
||||||
int (*get_opmode)(struct cdp_vdev *vdev);
|
int (*get_opmode)(struct cdp_vdev *vdev);
|
||||||
|
@@ -54,7 +54,7 @@ typedef enum {
|
|||||||
SYS_MSG_ID_MC_TIMER,
|
SYS_MSG_ID_MC_TIMER,
|
||||||
SYS_MSG_ID_FTM_RSP,
|
SYS_MSG_ID_FTM_RSP,
|
||||||
SYS_MSG_ID_QVIT,
|
SYS_MSG_ID_QVIT,
|
||||||
|
SYS_MSG_ID_DATA_STALL_MSG,
|
||||||
} SYS_MSG_ID;
|
} SYS_MSG_ID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -394,14 +394,32 @@ enum host_sta_kickout_events {
|
|||||||
------------------------------------------------------------------------*/
|
------------------------------------------------------------------------*/
|
||||||
/**
|
/**
|
||||||
* enum host_datastall_events - Enum containing datastall subtype
|
* enum host_datastall_events - Enum containing datastall subtype
|
||||||
|
* @DATA_STALL_NONE: Indicate no data stall
|
||||||
|
* @FW_VDEV_PAUSE: Indicate FW vdev Pause
|
||||||
|
* @HWSCHED_CMD_FILTER:Indicate HW sched command filter
|
||||||
|
* @HWSCHED_CMD_FLUSH: Indicate HW sched command flush
|
||||||
|
* @FW_RX_REFILL_FAILED:Indicate FW rx refill failed
|
||||||
|
* @FW_RX_FCS_LEN_ERROR:Indicate FW fcs len error
|
||||||
|
* @FW_WDOG_ERRORS:Indicate watchdog error
|
||||||
|
* @FW_BB_WDOG_ERROR:Indicate BB watchdog error
|
||||||
* @STA_TX_TIMEOUT: Indicate sta tx timeout
|
* @STA_TX_TIMEOUT: Indicate sta tx timeout
|
||||||
* @SOFTAP_TX_TIMEOUT:Indicate softap tx timeout
|
* @SOFTAP_TX_TIMEOUT:Indicate softap tx timeout
|
||||||
|
* @NUD_FAILURE: Indicare NUD Failure
|
||||||
*
|
*
|
||||||
* This enum contains the event subtype
|
* This enum contains the event subtype
|
||||||
*/
|
*/
|
||||||
enum host_datastall_events {
|
enum host_datastall_events {
|
||||||
|
DATA_STALL_NONE,
|
||||||
|
FW_VDEV_PAUSE,
|
||||||
|
HWSCHED_CMD_FILTER,
|
||||||
|
HWSCHED_CMD_FLUSH,
|
||||||
|
FW_RX_REFILL_FAILED,
|
||||||
|
FW_RX_FCS_LEN_ERROR,
|
||||||
|
FW_WDOG_ERRORS,
|
||||||
|
FW_BB_WDOG_ERROR,
|
||||||
STA_TX_TIMEOUT,
|
STA_TX_TIMEOUT,
|
||||||
SOFTAP_TX_TIMEOUT,
|
SOFTAP_TX_TIMEOUT,
|
||||||
|
NUD_FAILURE,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------
|
/*-------------------------------------------------------------------------
|
||||||
|
Reference in New Issue
Block a user