ソースを参照

msm: ipa: support new qmi request for hw filter stats info

Includes qmi req ipa_filter_stats_info_type_v01 for
the ipa_filter_stats_info_type_v01.

Change-Id: I015479b02c2c92f6ed048caac0d46d51f96102e8
Signed-off-by: Michael Adisumarta <[email protected]>
Michael Adisumarta 4 年 前
コミット
9fe77b2f6f

+ 1 - 1
drivers/platform/msm/ipa/ipa_v3/ipa_hw_stats.c

@@ -2454,7 +2454,7 @@ static ssize_t ipa_debugfs_print_flt_rt_stats(struct file *file,
 		return -ENOMEM;
 	query->start_id = 1;
 	query->end_id = IPA_MAX_FLT_RT_CNT_INDEX;
-	query->reset = true;
+	query->reset = false;
 	query->stats_size = sizeof(struct ipa_flt_rt_stats);
 	pyld_size = IPA_MAX_FLT_RT_CNT_INDEX *
 		sizeof(struct ipa_flt_rt_stats);

+ 5 - 0
drivers/platform/msm/ipa/ipa_v3/ipa_i.h

@@ -75,6 +75,11 @@
 #define IPA_HOLB_TMR_VAL_4_5 31
 #define IPA_IMM_IP_PACKET_INIT_EX_CMD_NUM (IPA5_MAX_NUM_PIPES + 1)
 
+#define IPA_Q6_FNR_START_IDX (128)
+#define IPA_Q6_FNR_IDX_CNT (52)
+#define IPA_Q6_FNR_END_IDX (IPA_Q6_FNR_START_IDX+IPA_Q6_FNR_IDX_CNT-1)
+#define IPA_Q6_FNR_STATS_SIZE (IPA_Q6_FNR_IDX_CNT * 16)
+
 /* ULSO Constants */
 enum {
 	ENDP_INIT_ULSO_CFG_IP_ID_MIN_MAX_VAL_IDX_LINUX,

+ 9 - 0
drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service.c

@@ -620,6 +620,15 @@ static int ipa3_qmi_init_modem_send_sync_msg(void)
 		req.is_ssr_bootup = 1;
 	}
 
+	req.hw_fiter_stats_info_valid = true;
+	req.hw_filter_stats_info.hw_filter_stats_start_addr =
+		IPA_MEM_PART(stats_fnr_ofst);
+	req.hw_filter_stats_info.hw_filter_stats_size = IPA_Q6_FNR_STATS_SIZE;
+	req.hw_filter_stats_info.hw_filter_stats_start_index = IPA_Q6_FNR_START_IDX;
+	req.hw_filter_stats_info.hw_filter_stats_end_index = IPA_Q6_FNR_END_IDX;
+	IPAWANDBG("hw_flt stats: hw_filter_start_address = %u", req.hw_filter_stats_info.hw_filter_stats_start_addr);
+	IPAWANDBG("hw_flt stats: hw_filter_stats_size = %u", req.hw_filter_stats_info.hw_filter_stats_size);
+	IPAWANDBG("hw_flt stats: hw_filter_stats_start_index  = %u", req.hw_filter_stats_info.hw_filter_stats_start_index);
 	IPAWANDBG("platform_type %d\n", req.platform_type);
 	IPAWANDBG("hdr_tbl_info.modem_offset_start %d\n",
 			req.hdr_tbl_info.modem_offset_start);

+ 65 - 0
drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service_v01.c

@@ -62,6 +62,50 @@ static struct qmi_elem_info ipa3_route_tbl_info_type_data_v01_ei[] = {
 	},
 };
 
+static struct qmi_elem_info ipa3_filter_tbl_info_type_data_v01_ei[] = {
+	{
+		.data_type	= QMI_UNSIGNED_4_BYTE,
+		.elem_len	= 1,
+		.elem_size	= sizeof(uint32_t),
+		.array_type	= NO_ARRAY,
+		.tlv_type	= QMI_COMMON_TLV_TYPE,
+		.offset		= offsetof(struct ipa_filter_stats_info_type_v01,
+					hw_filter_stats_start_addr),
+	},
+	{
+		.data_type	= QMI_UNSIGNED_4_BYTE,
+		.elem_len	= 1,
+		.elem_size	= sizeof(uint32_t),
+		.array_type	= NO_ARRAY,
+		.tlv_type	= QMI_COMMON_TLV_TYPE,
+		.offset		= offsetof(struct ipa_filter_stats_info_type_v01,
+					hw_filter_stats_size),
+	},
+	{
+		.data_type	= QMI_UNSIGNED_1_BYTE,
+		.elem_len	= 1,
+		.elem_size	= sizeof(uint8_t),
+		.array_type	= NO_ARRAY,
+		.tlv_type	= QMI_COMMON_TLV_TYPE,
+		.offset		= offsetof(struct ipa_filter_stats_info_type_v01,
+					hw_filter_stats_start_index),
+	},
+	{
+		.data_type	= QMI_UNSIGNED_1_BYTE,
+		.elem_len	= 1,
+		.elem_size	= sizeof(uint8_t),
+		.array_type	= NO_ARRAY,
+		.tlv_type	= QMI_COMMON_TLV_TYPE,
+		.offset		= offsetof(struct ipa_filter_stats_info_type_v01,
+					hw_filter_stats_end_index),
+	},
+	{
+		.data_type	= QMI_EOTI,
+		.array_type	= NO_ARRAY,
+		.tlv_type	= QMI_COMMON_TLV_TYPE,
+	},
+};
+
 static struct qmi_elem_info ipa3_modem_mem_info_type_data_v01_ei[] = {
 	{
 		.data_type	= QMI_UNSIGNED_4_BYTE,
@@ -1164,6 +1208,27 @@ struct qmi_elem_info ipa3_init_modem_driver_req_msg_data_v01_ei[] = {
 			struct ipa_init_modem_driver_req_msg_v01,
 			hw_drop_stats_table_size),
 	},
+	{
+		.data_type	= QMI_OPT_FLAG,
+		.elem_len	= 1,
+		.elem_size	= sizeof(uint8_t),
+		.array_type	= NO_ARRAY,
+		.tlv_type	= 0x23,
+		.offset		= offsetof(
+			struct ipa_init_modem_driver_req_msg_v01,
+			hw_fiter_stats_info_valid),
+	},
+	{
+		.data_type	= QMI_STRUCT,
+		.elem_len	= 1,
+		.elem_size	= sizeof(struct ipa_filter_stats_info_type_v01),
+		.array_type	= NO_ARRAY,
+		.tlv_type	= 0x23,
+		.offset		= offsetof(
+			struct ipa_init_modem_driver_req_msg_v01,
+			hw_filter_stats_info),
+		.ei_array	= ipa3_filter_tbl_info_type_data_v01_ei,
+	},
 	{
 		.data_type	= QMI_EOTI,
 		.array_type	= NO_ARRAY,