diff --git a/include/linux/ipa.h b/include/linux/ipa.h index 2c91444880ca..b7c5551c3996 100644 --- a/include/linux/ipa.h +++ b/include/linux/ipa.h @@ -223,6 +223,10 @@ struct ipa_ep_cfg_hdr { * @hdr_little_endian: 0-Big Endian, 1-Little Endian * @hdr: The header structure. Used starting IPA4.5 where part of the info * at the header structure is implemented via the EXT register at the H/W + * @hdr_bytes_to_remove_valid: 0-Ignore hdr_bytes_to_remove field, 1-Process + * hdr_bytes_to_remove field + * @hdr_bytes_to_remove: desired bytes to remove from top of the packet for + * partial L2 header retention */ struct ipa_ep_cfg_hdr_ext { u32 hdr_pad_to_alignment; @@ -232,6 +236,8 @@ struct ipa_ep_cfg_hdr_ext { bool hdr_total_len_or_pad_valid; bool hdr_little_endian; struct ipa_ep_cfg_hdr *hdr; + bool hdr_bytes_to_remove_valid; + u32 hdr_bytes_to_remove; }; /** @@ -425,6 +431,7 @@ struct ipa_ep_cfg_cfg { enum ipa_cs_offload cs_offload_en; u8 cs_metadata_hdr_offset; u8 gen_qmb_master_sel; + u8 tx_instance; }; /** diff --git a/include/uapi/linux/msm_ipa.h b/include/uapi/linux/msm_ipa.h index 0afa345fe6dd..650729a4f6c4 100644 --- a/include/uapi/linux/msm_ipa.h +++ b/include/uapi/linux/msm_ipa.h @@ -252,7 +252,7 @@ enum ipa_client_type { IPA_CLIENT_A5_WLAN_AMPDU_PROD = 12, IPA_CLIENT_WLAN2_CONS = 13, - /* RESERVED PROD = 14, */ + IPA_CLIENT_WLAN3_PROD = 14, IPA_CLIENT_WLAN3_CONS = 15, /* RESERVED PROD = 16, */ @@ -390,9 +390,12 @@ enum ipa_client_type { IPA_CLIENT_APPS_WAN_LOW_LAT_PROD = 104, IPA_CLIENT_APPS_WAN_LOW_LAT_CONS = 105, + + IPA_CLIENT_QDSS_PROD = 106, + IPA_CLIENT_MHI_QDSS_CONS = 107, }; -#define IPA_CLIENT_MAX (IPA_CLIENT_APPS_WAN_LOW_LAT_CONS + 1) +#define IPA_CLIENT_MAX (IPA_CLIENT_MHI_QDSS_CONS + 1) #define IPA_CLIENT_WLAN2_PROD IPA_CLIENT_A5_WLAN_AMPDU_PROD #define IPA_CLIENT_Q6_DL_NLO_DATA_PROD IPA_CLIENT_Q6_DL_NLO_DATA_PROD @@ -778,6 +781,7 @@ enum ipa_rm_resource_name { * @IPA_HW_v4_7: IPA hardware version 4.7 * @IPA_HW_v4_9: IPA hardware version 4.9 * @IPA_HW_v4_11: IPA hardware version 4.11 + * @IPA_HW_v5_0: IPA hardware version 5.0 */ enum ipa_hw_type { IPA_HW_None = 0, @@ -799,8 +803,9 @@ enum ipa_hw_type { IPA_HW_v4_7 = 18, IPA_HW_v4_9 = 19, IPA_HW_v4_11 = 20, + IPA_HW_v5_0 = 21, }; -#define IPA_HW_MAX (IPA_HW_v4_11 + 1) +#define IPA_HW_MAX (IPA_HW_v5_0 + 1) #define IPA_HW_v4_0 IPA_HW_v4_0 #define IPA_HW_v4_1 IPA_HW_v4_1 @@ -809,6 +814,7 @@ enum ipa_hw_type { #define IPA_HW_v4_7 IPA_HW_v4_7 #define IPA_HW_v4_9 IPA_HW_v4_9 #define IPA_HW_v4_11 IPA_HW_v4_11 +#define IPA_HW_v5_0 IPA_HW_v5_0 /** * struct ipa_rule_attrib - attributes of a routing/filtering @@ -1077,6 +1083,8 @@ struct ipa_flt_rule { * flt rule. * @cnt_idx: if 0 means disable, otherwise use for index. * will be assigned by ipa driver. + * @close_aggr_irq_mod: close aggregation/coalescing and close GSI + * interrupt moderation */ struct ipa_flt_rule_v2 { uint8_t retain_hdr; @@ -1094,6 +1102,7 @@ struct ipa_flt_rule_v2 { uint8_t pdn_idx; uint8_t enable_stats; uint8_t cnt_idx; + uint8_t close_aggr_irq_mod; }; /** @@ -1186,6 +1195,8 @@ struct ipa_rt_rule { * rt rule. * @cnt_idx: if enable_stats is 1 and cnt_idx is 0, then cnt_idx * will be assigned by ipa driver. + * @close_aggr_irq_mod: close aggregation/coalescing and close GSI + * interrupt moderation */ struct ipa_rt_rule_v2 { enum ipa_client_type dst; @@ -1198,6 +1209,7 @@ struct ipa_rt_rule_v2 { uint8_t coalesce; uint8_t enable_stats; uint8_t cnt_idx; + uint8_t close_aggr_irq_mod; }; /**