فهرست منبع

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
Alok Kumar 5 سال پیش
والد
کامیت
0265d7917a
4فایلهای تغییر یافته به همراه32 افزوده شده و 7 حذف شده
  1. 15 6
      utils/pktlog/pktlog_ac.c
  2. 13 1
      wlan_cfg/cfg_dp.h
  3. 2 0
      wlan_cfg/wlan_cfg.c
  4. 2 0
      wlan_cfg/wlan_cfg.h

+ 15 - 6
utils/pktlog/pktlog_ac.c

@@ -585,10 +585,14 @@ static void pktlog_callback_registration(uint8_t callback_type)
 }
 #endif
 
+#define ONE_MEGABYTE (1024 * 1024)
+
 void pktlog_init(struct hif_opaque_softc *scn)
 {
 	struct pktlog_dev_t *pl_dev = get_pktlog_handle();
 	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) {
 		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);
 	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->log_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;
 }
 
-#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)
 {
 	struct pktlog_dev_t *pl_dev;
 	struct ath_pktlog_info *pl_info;
 	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();
 
@@ -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;
 
-	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.",
 			  __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;
 		qdf_print("%s: Invalid requested buff size", __func__);
 		return -EINVAL;

+ 13 - 1
wlan_cfg/cfg_dp.h

@@ -316,6 +316,10 @@
 #define WLAN_CFG_RX_FLOW_SEARCH_TABLE_SIZE_MIN 1
 #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 */
 #define CFG_DP_HTT_PACKET_TYPE \
 		CFG_INI_UINT("dp_htt_packet_type", \
@@ -781,6 +785,13 @@
 #define CFG_DP_CONFIG_PKT_CAPTURE_MODE_ALL
 #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 \
 		CFG(CFG_DP_HTT_PACKET_TYPE) \
 		CFG(CFG_DP_INT_BATCH_THRESHOLD_OTHER) \
@@ -852,6 +863,7 @@
 		CFG(CFG_DP_RX_FLOW_SEARCH_TABLE_PER_PDEV) \
 		CFG(CFG_DP_RX_MON_PROTOCOL_FLOW_TAG_ENABLE) \
 		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_ */

+ 2 - 0
wlan_cfg/wlan_cfg.c

@@ -473,6 +473,8 @@ wlan_cfg_soc_attach(struct cdp_ctrl_objmgr_psoc *psoc)
 		cfg_get(psoc, CFG_DP_INT_BATCH_THRESHOLD_OTHER);
 	wlan_cfg_ctx->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
 	 * received from FW */

+ 2 - 0
wlan_cfg/wlan_cfg.h

@@ -179,6 +179,7 @@ struct wlan_srng_cfg {
  * @rx_flow_max_search: max skid length for each hash entry
  * @rx_toeplitz_hash_key: toeplitz key pointer used for hash computation over
  *                        5 tuple flow entry
+ * @pktlog_buffer_size: packet log buffer size
  */
 struct wlan_cfg_dp_soc_ctxt {
 	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_max_search;
 	uint8_t *rx_toeplitz_hash_key;
+	uint8_t pktlog_buffer_size;
 };
 
 /**