qcacmn: add an ini field to control rx frame pending check
Add a ini control field to control rx frame pending check logic in WoW case. In some cases, power consumption is more important than rx frame ping loss, so add a control flag Change-Id: I8c4d3725edddb82a0f06dc70c22a8dd5243209f2 CRs-Fixed: 2806786
This commit is contained in:
@@ -2664,7 +2664,10 @@ cdp_rx_get_pending(ol_txrx_soc_handle soc)
|
|||||||
!soc->ol_ops->dp_rx_get_pending)
|
!soc->ol_ops->dp_rx_get_pending)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return soc->ol_ops->dp_rx_get_pending(soc);
|
if (cdp_cfg_get(soc, cfg_dp_wow_check_rx_pending))
|
||||||
|
return soc->ol_ops->dp_rx_get_pending(soc);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef QCA_SUPPORT_WDS_EXTENDED
|
#ifdef QCA_SUPPORT_WDS_EXTENDED
|
||||||
|
@@ -2345,6 +2345,7 @@ struct cdp_monitor_filter {
|
|||||||
* @cfg_dp_ce_classify_enable: get CE classify enable config
|
* @cfg_dp_ce_classify_enable: get CE classify enable config
|
||||||
* @cfg_dp_disable_intra_bss_fwd: get intra bss fwd config
|
* @cfg_dp_disable_intra_bss_fwd: get intra bss fwd config
|
||||||
* @cfg_dp_pktlog_buffer_size: get packet log buffer size config
|
* @cfg_dp_pktlog_buffer_size: get packet log buffer size config
|
||||||
|
* @cfg_dp_wow_check_rx_pending: get wow rx pending frame check config
|
||||||
*/
|
*/
|
||||||
enum cdp_dp_cfg {
|
enum cdp_dp_cfg {
|
||||||
cfg_dp_enable_data_stall,
|
cfg_dp_enable_data_stall,
|
||||||
@@ -2366,6 +2367,7 @@ enum cdp_dp_cfg {
|
|||||||
cfg_dp_ce_classify_enable,
|
cfg_dp_ce_classify_enable,
|
||||||
cfg_dp_disable_intra_bss_fwd,
|
cfg_dp_disable_intra_bss_fwd,
|
||||||
cfg_dp_pktlog_buffer_size,
|
cfg_dp_pktlog_buffer_size,
|
||||||
|
cfg_dp_wow_check_rx_pending,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -10637,6 +10637,8 @@ static uint32_t dp_get_cfg(struct cdp_soc_t *soc, enum cdp_dp_cfg cfg)
|
|||||||
case cfg_dp_pktlog_buffer_size:
|
case cfg_dp_pktlog_buffer_size:
|
||||||
value = dpsoc->wlan_cfg_ctx->pktlog_buffer_size;
|
value = dpsoc->wlan_cfg_ctx->pktlog_buffer_size;
|
||||||
break;
|
break;
|
||||||
|
case cfg_dp_wow_check_rx_pending:
|
||||||
|
value = dpsoc->wlan_cfg_ctx->wow_check_rx_pending_enable;
|
||||||
default:
|
default:
|
||||||
value = 0;
|
value = 0;
|
||||||
}
|
}
|
||||||
|
@@ -1027,6 +1027,24 @@
|
|||||||
#define CFG_DP_SWLM_ENABLE \
|
#define CFG_DP_SWLM_ENABLE \
|
||||||
CFG_INI_BOOL("gEnableSWLM", false, \
|
CFG_INI_BOOL("gEnableSWLM", false, \
|
||||||
"Enable/Disable DP SWLM")
|
"Enable/Disable DP SWLM")
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* wow_check_rx_pending_enable - control to check RX frames pending in Wow
|
||||||
|
* @Min: 0
|
||||||
|
* @Max: 1
|
||||||
|
* @Default: 0
|
||||||
|
*
|
||||||
|
* This ini is used to control DP Software to perform RX pending check
|
||||||
|
* before entering WoW mode
|
||||||
|
*
|
||||||
|
* Usage: Internal
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#define CFG_DP_WOW_CHECK_RX_PENDING \
|
||||||
|
CFG_INI_BOOL("wow_check_rx_pending_enable", \
|
||||||
|
false, \
|
||||||
|
"enable rx frame pending check in WoW mode")
|
||||||
|
|
||||||
#define CFG_DP \
|
#define CFG_DP \
|
||||||
CFG(CFG_DP_HTT_PACKET_TYPE) \
|
CFG(CFG_DP_HTT_PACKET_TYPE) \
|
||||||
@@ -1117,5 +1135,6 @@
|
|||||||
CFG(CFG_DP_RX_FST_IN_CMEM) \
|
CFG(CFG_DP_RX_FST_IN_CMEM) \
|
||||||
CFG(CFG_DP_RX_RADIO_0_DEFAULT_REO) \
|
CFG(CFG_DP_RX_RADIO_0_DEFAULT_REO) \
|
||||||
CFG(CFG_DP_RX_RADIO_1_DEFAULT_REO) \
|
CFG(CFG_DP_RX_RADIO_1_DEFAULT_REO) \
|
||||||
CFG(CFG_DP_RX_RADIO_2_DEFAULT_REO)
|
CFG(CFG_DP_RX_RADIO_2_DEFAULT_REO) \
|
||||||
|
CFG(CFG_DP_WOW_CHECK_RX_PENDING)
|
||||||
#endif /* _CFG_DP_H_ */
|
#endif /* _CFG_DP_H_ */
|
||||||
|
@@ -630,6 +630,8 @@ wlan_cfg_soc_attach(struct cdp_ctrl_objmgr_psoc *psoc)
|
|||||||
cfg_get(psoc, CFG_DP_RX_RADIO_1_DEFAULT_REO);
|
cfg_get(psoc, CFG_DP_RX_RADIO_1_DEFAULT_REO);
|
||||||
wlan_cfg_ctx->radio2_rx_default_reo =
|
wlan_cfg_ctx->radio2_rx_default_reo =
|
||||||
cfg_get(psoc, CFG_DP_RX_RADIO_2_DEFAULT_REO);
|
cfg_get(psoc, CFG_DP_RX_RADIO_2_DEFAULT_REO);
|
||||||
|
wlan_cfg_ctx->wow_check_rx_pending_enable =
|
||||||
|
cfg_get(psoc, CFG_DP_WOW_CHECK_RX_PENDING);
|
||||||
|
|
||||||
return wlan_cfg_ctx;
|
return wlan_cfg_ctx;
|
||||||
}
|
}
|
||||||
|
@@ -191,6 +191,7 @@ struct wlan_srng_cfg {
|
|||||||
* @rx_pending_low_threshold: threshold of stopping pkt drop
|
* @rx_pending_low_threshold: threshold of stopping pkt drop
|
||||||
* @is_swlm_enabled: flag to enable/disable SWLM
|
* @is_swlm_enabled: flag to enable/disable SWLM
|
||||||
* @tx_per_pkt_vdev_id_check: Enable tx perpkt vdev id check
|
* @tx_per_pkt_vdev_id_check: Enable tx perpkt vdev id check
|
||||||
|
* @wow_check_rx_pending_enable: Enable RX frame pending check in WoW
|
||||||
*/
|
*/
|
||||||
struct wlan_cfg_dp_soc_ctxt {
|
struct wlan_cfg_dp_soc_ctxt {
|
||||||
int num_int_ctxts;
|
int num_int_ctxts;
|
||||||
@@ -306,6 +307,7 @@ struct wlan_cfg_dp_soc_ctxt {
|
|||||||
uint8_t radio0_rx_default_reo;
|
uint8_t radio0_rx_default_reo;
|
||||||
uint8_t radio1_rx_default_reo;
|
uint8_t radio1_rx_default_reo;
|
||||||
uint8_t radio2_rx_default_reo;
|
uint8_t radio2_rx_default_reo;
|
||||||
|
bool wow_check_rx_pending_enable;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user