Loading drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service.c +14 −0 Original line number Diff line number Diff line Loading @@ -425,6 +425,20 @@ static int ipa3_qmi_init_modem_send_sync_msg(void) req.v6_hash_filter_tbl_start_addr = IPA_MEM_PART(v6_flt_hash_ofst) + smem_restr_bytes; req.hw_stats_quota_base_addr_valid = true; req.hw_stats_quota_base_addr = IPA_MEM_PART(stats_quota_ofst) + smem_restr_bytes; req.hw_stats_quota_size_valid = true; req.hw_stats_quota_size = IPA_MEM_PART(stats_quota_size); req.hw_drop_stats_base_addr_valid = true; req.hw_drop_stats_base_addr = IPA_MEM_PART(stats_drop_ofst) + smem_restr_bytes; req.hw_drop_stats_table_size_valid = true; req.hw_drop_stats_table_size = IPA_MEM_PART(stats_drop_size); if (!ipa3_uc_loaded_check()) { /* First time boot */ req.is_ssr_bootup_valid = false; req.is_ssr_bootup = 0; Loading drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service_v01.c +81 −0 Original line number Diff line number Diff line Loading @@ -1092,11 +1092,92 @@ struct qmi_elem_info ipa3_init_modem_driver_req_msg_data_v01_ei[] = { struct ipa_init_modem_driver_req_msg_v01, v6_hash_filter_tbl_start_addr), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(uint8_t), .is_array = NO_ARRAY, .tlv_type = 0x1F, .offset = offsetof( struct ipa_init_modem_driver_req_msg_v01, hw_stats_quota_base_addr_valid), }, { .data_type = QMI_UNSIGNED_4_BYTE, .elem_len = 1, .elem_size = sizeof(uint32_t), .is_array = NO_ARRAY, .tlv_type = 0x1F, .offset = offsetof( struct ipa_init_modem_driver_req_msg_v01, hw_stats_quota_base_addr), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(uint8_t), .is_array = NO_ARRAY, .tlv_type = 0x20, .offset = offsetof( struct ipa_init_modem_driver_req_msg_v01, hw_stats_quota_size_valid), }, { .data_type = QMI_UNSIGNED_4_BYTE, .elem_len = 1, .elem_size = sizeof(uint32_t), .is_array = NO_ARRAY, .tlv_type = 0x20, .offset = offsetof( struct ipa_init_modem_driver_req_msg_v01, hw_stats_quota_size), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(uint8_t), .is_array = NO_ARRAY, .tlv_type = 0x21, .offset = offsetof( struct ipa_init_modem_driver_req_msg_v01, hw_drop_stats_base_addr_valid), }, { .data_type = QMI_UNSIGNED_4_BYTE, .elem_len = 1, .elem_size = sizeof(uint32_t), .is_array = NO_ARRAY, .tlv_type = 0x21, .offset = offsetof( struct ipa_init_modem_driver_req_msg_v01, hw_drop_stats_base_addr), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(uint8_t), .is_array = NO_ARRAY, .tlv_type = 0x22, .offset = offsetof( struct ipa_init_modem_driver_req_msg_v01, hw_drop_stats_table_size_valid), }, { .data_type = QMI_UNSIGNED_4_BYTE, .elem_len = 1, .elem_size = sizeof(uint32_t), .is_array = NO_ARRAY, .tlv_type = 0x22, .offset = offsetof( struct ipa_init_modem_driver_req_msg_v01, hw_drop_stats_table_size), }, { .data_type = QMI_EOTI, .is_array = NO_ARRAY, .tlv_type = QMI_COMMON_TLV_TYPE, }, }; struct qmi_elem_info ipa3_init_modem_driver_resp_msg_data_v01_ei[] = { Loading include/uapi/linux/ipa_qmi_service_v01.h +38 −1 Original line number Diff line number Diff line Loading @@ -56,6 +56,11 @@ #define QMI_IPA_MAX_CLIENT_DST_PIPES_V01 8 #define QMI_IPA_MAX_UL_FIREWALL_RULES_V01 64 /* * Indicates presence of newly added member to support HW stats. */ #define IPA_QMI_SUPPORTS_STATS #define IPA_INT_MAX ((int)(~0U>>1)) #define IPA_INT_MIN (-IPA_INT_MAX - 1) Loading Loading @@ -316,6 +321,38 @@ struct ipa_init_modem_driver_req_msg_v01 { * table in IPAv3 onwards. Denotes the offset from the start of * the IPA shared memory. */ /* Optional * Modem HW Stats Quota Base address * Must be set to true if hw_stats_quota_base_addr * is being passed */ uint8_t hw_stats_quota_base_addr_valid; uint32_t hw_stats_quota_base_addr; /* Optional * Modem HW Stats Quota Size * Must be set to true if hw_stats_quota_size * is being passed */ uint8_t hw_stats_quota_size_valid; uint32_t hw_stats_quota_size; /* Optional * Modem HW Drop Stats Table Start Address * Must be set to true if hw_drop_stats_base_addr * is being passed */ uint8_t hw_drop_stats_base_addr_valid; uint32_t hw_drop_stats_base_addr; /* Optional * Modem HW Drop Stats Table size * Must be set to true if hw_drop_stats_table_size * is being passed */ uint8_t hw_drop_stats_table_size_valid; uint32_t hw_drop_stats_table_size; }; /* Message */ /* Response Message; Requests the modem IPA driver about initialization */ Loading Loading @@ -1953,7 +1990,7 @@ struct ipa_configure_ul_firewall_rules_ind_msg_v01 { #define QMI_IPA_INSTALL_UL_FIREWALL_RULES_IND_V01 0x003A /* add for max length*/ #define QMI_IPA_INIT_MODEM_DRIVER_REQ_MAX_MSG_LEN_V01 134 #define QMI_IPA_INIT_MODEM_DRIVER_REQ_MAX_MSG_LEN_V01 162 #define QMI_IPA_INIT_MODEM_DRIVER_RESP_MAX_MSG_LEN_V01 25 #define QMI_IPA_INDICATION_REGISTER_REQ_MAX_MSG_LEN_V01 8 #define QMI_IPA_INDICATION_REGISTER_RESP_MAX_MSG_LEN_V01 7 Loading Loading
drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service.c +14 −0 Original line number Diff line number Diff line Loading @@ -425,6 +425,20 @@ static int ipa3_qmi_init_modem_send_sync_msg(void) req.v6_hash_filter_tbl_start_addr = IPA_MEM_PART(v6_flt_hash_ofst) + smem_restr_bytes; req.hw_stats_quota_base_addr_valid = true; req.hw_stats_quota_base_addr = IPA_MEM_PART(stats_quota_ofst) + smem_restr_bytes; req.hw_stats_quota_size_valid = true; req.hw_stats_quota_size = IPA_MEM_PART(stats_quota_size); req.hw_drop_stats_base_addr_valid = true; req.hw_drop_stats_base_addr = IPA_MEM_PART(stats_drop_ofst) + smem_restr_bytes; req.hw_drop_stats_table_size_valid = true; req.hw_drop_stats_table_size = IPA_MEM_PART(stats_drop_size); if (!ipa3_uc_loaded_check()) { /* First time boot */ req.is_ssr_bootup_valid = false; req.is_ssr_bootup = 0; Loading
drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service_v01.c +81 −0 Original line number Diff line number Diff line Loading @@ -1092,11 +1092,92 @@ struct qmi_elem_info ipa3_init_modem_driver_req_msg_data_v01_ei[] = { struct ipa_init_modem_driver_req_msg_v01, v6_hash_filter_tbl_start_addr), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(uint8_t), .is_array = NO_ARRAY, .tlv_type = 0x1F, .offset = offsetof( struct ipa_init_modem_driver_req_msg_v01, hw_stats_quota_base_addr_valid), }, { .data_type = QMI_UNSIGNED_4_BYTE, .elem_len = 1, .elem_size = sizeof(uint32_t), .is_array = NO_ARRAY, .tlv_type = 0x1F, .offset = offsetof( struct ipa_init_modem_driver_req_msg_v01, hw_stats_quota_base_addr), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(uint8_t), .is_array = NO_ARRAY, .tlv_type = 0x20, .offset = offsetof( struct ipa_init_modem_driver_req_msg_v01, hw_stats_quota_size_valid), }, { .data_type = QMI_UNSIGNED_4_BYTE, .elem_len = 1, .elem_size = sizeof(uint32_t), .is_array = NO_ARRAY, .tlv_type = 0x20, .offset = offsetof( struct ipa_init_modem_driver_req_msg_v01, hw_stats_quota_size), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(uint8_t), .is_array = NO_ARRAY, .tlv_type = 0x21, .offset = offsetof( struct ipa_init_modem_driver_req_msg_v01, hw_drop_stats_base_addr_valid), }, { .data_type = QMI_UNSIGNED_4_BYTE, .elem_len = 1, .elem_size = sizeof(uint32_t), .is_array = NO_ARRAY, .tlv_type = 0x21, .offset = offsetof( struct ipa_init_modem_driver_req_msg_v01, hw_drop_stats_base_addr), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(uint8_t), .is_array = NO_ARRAY, .tlv_type = 0x22, .offset = offsetof( struct ipa_init_modem_driver_req_msg_v01, hw_drop_stats_table_size_valid), }, { .data_type = QMI_UNSIGNED_4_BYTE, .elem_len = 1, .elem_size = sizeof(uint32_t), .is_array = NO_ARRAY, .tlv_type = 0x22, .offset = offsetof( struct ipa_init_modem_driver_req_msg_v01, hw_drop_stats_table_size), }, { .data_type = QMI_EOTI, .is_array = NO_ARRAY, .tlv_type = QMI_COMMON_TLV_TYPE, }, }; struct qmi_elem_info ipa3_init_modem_driver_resp_msg_data_v01_ei[] = { Loading
include/uapi/linux/ipa_qmi_service_v01.h +38 −1 Original line number Diff line number Diff line Loading @@ -56,6 +56,11 @@ #define QMI_IPA_MAX_CLIENT_DST_PIPES_V01 8 #define QMI_IPA_MAX_UL_FIREWALL_RULES_V01 64 /* * Indicates presence of newly added member to support HW stats. */ #define IPA_QMI_SUPPORTS_STATS #define IPA_INT_MAX ((int)(~0U>>1)) #define IPA_INT_MIN (-IPA_INT_MAX - 1) Loading Loading @@ -316,6 +321,38 @@ struct ipa_init_modem_driver_req_msg_v01 { * table in IPAv3 onwards. Denotes the offset from the start of * the IPA shared memory. */ /* Optional * Modem HW Stats Quota Base address * Must be set to true if hw_stats_quota_base_addr * is being passed */ uint8_t hw_stats_quota_base_addr_valid; uint32_t hw_stats_quota_base_addr; /* Optional * Modem HW Stats Quota Size * Must be set to true if hw_stats_quota_size * is being passed */ uint8_t hw_stats_quota_size_valid; uint32_t hw_stats_quota_size; /* Optional * Modem HW Drop Stats Table Start Address * Must be set to true if hw_drop_stats_base_addr * is being passed */ uint8_t hw_drop_stats_base_addr_valid; uint32_t hw_drop_stats_base_addr; /* Optional * Modem HW Drop Stats Table size * Must be set to true if hw_drop_stats_table_size * is being passed */ uint8_t hw_drop_stats_table_size_valid; uint32_t hw_drop_stats_table_size; }; /* Message */ /* Response Message; Requests the modem IPA driver about initialization */ Loading Loading @@ -1953,7 +1990,7 @@ struct ipa_configure_ul_firewall_rules_ind_msg_v01 { #define QMI_IPA_INSTALL_UL_FIREWALL_RULES_IND_V01 0x003A /* add for max length*/ #define QMI_IPA_INIT_MODEM_DRIVER_REQ_MAX_MSG_LEN_V01 134 #define QMI_IPA_INIT_MODEM_DRIVER_REQ_MAX_MSG_LEN_V01 162 #define QMI_IPA_INIT_MODEM_DRIVER_RESP_MAX_MSG_LEN_V01 25 #define QMI_IPA_INDICATION_REGISTER_REQ_MAX_MSG_LEN_V01 8 #define QMI_IPA_INDICATION_REGISTER_RESP_MAX_MSG_LEN_V01 7 Loading