qcacmn: Add INI support for packet log buffer size

Add INI parameter "PacketLogBufSize" to populate
packet log buffer size.

Change-Id: Ic9b963a88a6f6d884d5fa3a63b4fed6768ba2fc4
CRs-Fixed: 2611409
This commit is contained in:
Alok Kumar
2020-01-24 16:59:58 +05:30
committed by nshrivas
parent 61df09450e
commit 0265d7917a
4 changed files with 32 additions and 7 deletions

View File

@@ -585,10 +585,14 @@ static void pktlog_callback_registration(uint8_t callback_type)
} }
#endif #endif
#define ONE_MEGABYTE (1024 * 1024)
void pktlog_init(struct hif_opaque_softc *scn) void pktlog_init(struct hif_opaque_softc *scn)
{ {
struct pktlog_dev_t *pl_dev = get_pktlog_handle(); struct pktlog_dev_t *pl_dev = get_pktlog_handle();
struct ath_pktlog_info *pl_info; struct ath_pktlog_info *pl_info;
void *soc = cds_get_context(QDF_MODULE_ID_SOC);
uint32_t buff_size;
if (!pl_dev || !pl_dev->pl_info) { if (!pl_dev || !pl_dev->pl_info) {
qdf_print("pl_dev or pl_info is invalid"); qdf_print("pl_dev or pl_info is invalid");
@@ -601,7 +605,9 @@ void pktlog_init(struct hif_opaque_softc *scn)
PKTLOG_LOCK_INIT(pl_info); PKTLOG_LOCK_INIT(pl_info);
mutex_init(&pl_info->pktlog_mutex); mutex_init(&pl_info->pktlog_mutex);
pl_info->buf_size = PKTLOG_DEFAULT_BUFSIZE; buff_size = cdp_cfg_get(soc, cfg_dp_pktlog_buffer_size) * ONE_MEGABYTE;
pl_info->buf_size = (buff_size ? buff_size : ONE_MEGABYTE);
pl_info->buf = NULL; pl_info->buf = NULL;
pl_info->log_state = 0; pl_info->log_state = 0;
pl_info->init_saved_state = 0; pl_info->init_saved_state = 0;
@@ -780,14 +786,14 @@ int pktlog_enable(struct hif_opaque_softc *scn, int32_t log_state,
return err; return err;
} }
#define ONE_MEGABYTE (1024 * 1024)
#define MAX_ALLOWED_PKTLOG_SIZE (64 * ONE_MEGABYTE)
static int __pktlog_setsize(struct hif_opaque_softc *scn, int32_t size) static int __pktlog_setsize(struct hif_opaque_softc *scn, int32_t size)
{ {
struct pktlog_dev_t *pl_dev; struct pktlog_dev_t *pl_dev;
struct ath_pktlog_info *pl_info; struct ath_pktlog_info *pl_info;
uint8_t pdev_id = WMI_PDEV_ID_SOC; uint8_t pdev_id = WMI_PDEV_ID_SOC;
void *soc = cds_get_context(QDF_MODULE_ID_SOC);
uint32_t buff_size;
uint32_t max_allowed_buff_size;
pl_dev = get_pktlog_handle(); pl_dev = get_pktlog_handle();
@@ -815,10 +821,13 @@ static int __pktlog_setsize(struct hif_opaque_softc *scn, int32_t size)
pl_info->curr_pkt_state = PKTLOG_OPR_IN_PROGRESS; pl_info->curr_pkt_state = PKTLOG_OPR_IN_PROGRESS;
if (size < ONE_MEGABYTE || size > MAX_ALLOWED_PKTLOG_SIZE) { buff_size = cdp_cfg_get(soc, cfg_dp_pktlog_buffer_size) * ONE_MEGABYTE;
max_allowed_buff_size = (buff_size ? buff_size : ONE_MEGABYTE);
if (size < ONE_MEGABYTE || size > max_allowed_buff_size) {
qdf_print("%s: Cannot Set Pktlog Buffer size of %d bytes.Min required is %d MB and Max allowed is %d MB.", qdf_print("%s: Cannot Set Pktlog Buffer size of %d bytes.Min required is %d MB and Max allowed is %d MB.",
__func__, size, (ONE_MEGABYTE / ONE_MEGABYTE), __func__, size, (ONE_MEGABYTE / ONE_MEGABYTE),
(MAX_ALLOWED_PKTLOG_SIZE / ONE_MEGABYTE)); (max_allowed_buff_size / ONE_MEGABYTE));
pl_info->curr_pkt_state = PKTLOG_OPR_NOT_IN_PROGRESS; pl_info->curr_pkt_state = PKTLOG_OPR_NOT_IN_PROGRESS;
qdf_print("%s: Invalid requested buff size", __func__); qdf_print("%s: Invalid requested buff size", __func__);
return -EINVAL; return -EINVAL;

View File

@@ -316,6 +316,10 @@
#define WLAN_CFG_RX_FLOW_SEARCH_TABLE_SIZE_MIN 1 #define WLAN_CFG_RX_FLOW_SEARCH_TABLE_SIZE_MIN 1
#define WLAN_CFG_RX_FLOW_SEARCH_TABLE_SIZE_MAX 16384 #define WLAN_CFG_RX_FLOW_SEARCH_TABLE_SIZE_MAX 16384
#define WLAN_CFG_PKTLOG_BUFFER_SIZE 10
#define WLAN_CFG_PKTLOG_MIN_BUFFER_SIZE 1
#define WLAN_CFG_PKTLOG_MAX_BUFFER_SIZE 10
/* DP INI Declerations */ /* DP INI Declerations */
#define CFG_DP_HTT_PACKET_TYPE \ #define CFG_DP_HTT_PACKET_TYPE \
CFG_INI_UINT("dp_htt_packet_type", \ CFG_INI_UINT("dp_htt_packet_type", \
@@ -781,6 +785,13 @@
#define CFG_DP_CONFIG_PKT_CAPTURE_MODE_ALL #define CFG_DP_CONFIG_PKT_CAPTURE_MODE_ALL
#endif /* WLAN_FEATURE_PKT_CAPTURE */ #endif /* WLAN_FEATURE_PKT_CAPTURE */
#define CFG_DP_PKTLOG_BUFFER_SIZE \
CFG_INI_UINT("PktlogBufSize", \
WLAN_CFG_PKTLOG_MIN_BUFFER_SIZE, \
WLAN_CFG_PKTLOG_MAX_BUFFER_SIZE, \
WLAN_CFG_PKTLOG_BUFFER_SIZE, \
CFG_VALUE_OR_DEFAULT, "Packet Log buffer size")
#define CFG_DP \ #define CFG_DP \
CFG(CFG_DP_HTT_PACKET_TYPE) \ CFG(CFG_DP_HTT_PACKET_TYPE) \
CFG(CFG_DP_INT_BATCH_THRESHOLD_OTHER) \ CFG(CFG_DP_INT_BATCH_THRESHOLD_OTHER) \
@@ -852,6 +863,7 @@
CFG(CFG_DP_RX_FLOW_SEARCH_TABLE_PER_PDEV) \ CFG(CFG_DP_RX_FLOW_SEARCH_TABLE_PER_PDEV) \
CFG(CFG_DP_RX_MON_PROTOCOL_FLOW_TAG_ENABLE) \ CFG(CFG_DP_RX_MON_PROTOCOL_FLOW_TAG_ENABLE) \
CFG(CFG_DP_RXDMA_MONITOR_RX_DROP_THRESHOLD) \ CFG(CFG_DP_RXDMA_MONITOR_RX_DROP_THRESHOLD) \
CFG_DP_CONFIG_PKT_CAPTURE_MODE_ALL CFG_DP_CONFIG_PKT_CAPTURE_MODE_ALL \
CFG(CFG_DP_PKTLOG_BUFFER_SIZE)
#endif /* _CFG_DP_H_ */ #endif /* _CFG_DP_H_ */

View File

@@ -473,6 +473,8 @@ wlan_cfg_soc_attach(struct cdp_ctrl_objmgr_psoc *psoc)
cfg_get(psoc, CFG_DP_INT_BATCH_THRESHOLD_OTHER); cfg_get(psoc, CFG_DP_INT_BATCH_THRESHOLD_OTHER);
wlan_cfg_ctx->int_timer_threshold_other = wlan_cfg_ctx->int_timer_threshold_other =
cfg_get(psoc, CFG_DP_INT_TIMER_THRESHOLD_OTHER); cfg_get(psoc, CFG_DP_INT_TIMER_THRESHOLD_OTHER);
wlan_cfg_ctx->pktlog_buffer_size =
cfg_get(psoc, CFG_DP_PKTLOG_BUFFER_SIZE);
/* This is default mapping and can be overridden by HW config /* This is default mapping and can be overridden by HW config
* received from FW */ * received from FW */

View File

@@ -179,6 +179,7 @@ struct wlan_srng_cfg {
* @rx_flow_max_search: max skid length for each hash entry * @rx_flow_max_search: max skid length for each hash entry
* @rx_toeplitz_hash_key: toeplitz key pointer used for hash computation over * @rx_toeplitz_hash_key: toeplitz key pointer used for hash computation over
* 5 tuple flow entry * 5 tuple flow entry
* @pktlog_buffer_size: packet log buffer size
*/ */
struct wlan_cfg_dp_soc_ctxt { struct wlan_cfg_dp_soc_ctxt {
int num_int_ctxts; int num_int_ctxts;
@@ -274,6 +275,7 @@ struct wlan_cfg_dp_soc_ctxt {
uint16_t rx_flow_search_table_size; uint16_t rx_flow_search_table_size;
uint16_t rx_flow_max_search; uint16_t rx_flow_max_search;
uint8_t *rx_toeplitz_hash_key; uint8_t *rx_toeplitz_hash_key;
uint8_t pktlog_buffer_size;
}; };
/** /**