Loading drivers/platform/msm/ipa/ipa_v3/ipa_debugfs.c +1 −1 Original line number Diff line number Diff line Loading @@ -1917,7 +1917,7 @@ static void ipa3_read_pdn_table(void) } for (i = 0, pdn_entry = ipa3_ctx->nat_mem.pdn_mem.base; i < IPA_MAX_PDN_NUM; i < ipa3_get_max_pdn(); ++i, pdn_entry += pdn_entry_size) { result = ipahal_nat_is_entry_zeroed( Loading drivers/platform/msm/ipa/ipa_v3/ipa_flt.c +1 −1 Original line number Diff line number Diff line Loading @@ -857,7 +857,7 @@ static int __ipa_validate_flt_rule(const struct ipa_flt_rule_i *rule, "PDN index should be 0 when action is not pass to NAT\n"); goto error; } else { if (rule->pdn_idx >= IPA_MAX_PDN_NUM) { if (rule->pdn_idx >= ipa3_get_max_pdn()) { IPAERR_RL("PDN index %d is too large\n", rule->pdn_idx); goto error; Loading drivers/platform/msm/ipa/ipa_v3/ipa_i.h +1 −0 Original line number Diff line number Diff line Loading @@ -2874,6 +2874,7 @@ int ipa3_query_intf(struct ipa_ioc_query_intf *lookup); int ipa3_query_intf_tx_props(struct ipa_ioc_query_intf_tx_props *tx); int ipa3_query_intf_rx_props(struct ipa_ioc_query_intf_rx_props *rx); int ipa3_query_intf_ext_props(struct ipa_ioc_query_intf_ext_props *ext); int ipa3_get_max_pdn(void); void wwan_cleanup(void); Loading drivers/platform/msm/ipa/ipa_v3/ipa_nat.c +5 −3 Original line number Diff line number Diff line Loading @@ -763,7 +763,8 @@ int ipa3_allocate_nat_table( ipahal_nat_entry_size(IPAHAL_NAT_IPV4_PDN, &pdn_entry_size); pdn_mem_ptr->size = pdn_entry_size * IPA_MAX_PDN_NUM; pdn_mem_ptr->size = pdn_entry_size * ipa3_get_max_pdn(); if (IPA_MEM_PART(pdn_config_size) < pdn_mem_ptr->size) { IPAERR( Loading Loading @@ -1179,7 +1180,8 @@ static int ipa3_nat_create_modify_pdn_cmd( IPADBG("\n"); ipahal_nat_entry_size(IPAHAL_NAT_IPV4_PDN, &pdn_entry_size); mem_size = pdn_entry_size * IPA_MAX_PDN_NUM; mem_size = pdn_entry_size * ipa3_get_max_pdn(); /* Before providing physical base address check pointer exist or not*/ if (!ipa3_ctx->nat_mem.pdn_mem.base) Loading Loading @@ -1714,7 +1716,7 @@ int ipa3_nat_mdfy_pdn( goto bail; } if (mdfy_pdn->pdn_index > (IPA_MAX_PDN_NUM - 1)) { if (mdfy_pdn->pdn_index > (ipa3_get_max_pdn() - 1)) { IPAERR_RL("pdn index out of range %d\n", mdfy_pdn->pdn_index); result = -EPERM; goto bail; Loading drivers/platform/msm/ipa/ipa_v3/ipa_utils.c +15 −0 Original line number Diff line number Diff line Loading @@ -9301,3 +9301,18 @@ int ipa3_del_socksv5_conn(uint32_t handle) mutex_unlock(&ipa3_ctx->act_tbl_lock); return res; } /** * ipa3_get_max_pdn() - get max PDN number based on hardware version * * Returns: IPA_MAX_PDN_NUM of IPAv4_5 and IPA_MAX_PDN_NUM_v4_2 for others * */ int ipa3_get_max_pdn(void) { if (ipa3_get_hw_type_index() == IPA_4_5_AUTO) return IPA_MAX_PDN_NUM; else return IPA_MAX_PDN_NUM_v4; } Loading
drivers/platform/msm/ipa/ipa_v3/ipa_debugfs.c +1 −1 Original line number Diff line number Diff line Loading @@ -1917,7 +1917,7 @@ static void ipa3_read_pdn_table(void) } for (i = 0, pdn_entry = ipa3_ctx->nat_mem.pdn_mem.base; i < IPA_MAX_PDN_NUM; i < ipa3_get_max_pdn(); ++i, pdn_entry += pdn_entry_size) { result = ipahal_nat_is_entry_zeroed( Loading
drivers/platform/msm/ipa/ipa_v3/ipa_flt.c +1 −1 Original line number Diff line number Diff line Loading @@ -857,7 +857,7 @@ static int __ipa_validate_flt_rule(const struct ipa_flt_rule_i *rule, "PDN index should be 0 when action is not pass to NAT\n"); goto error; } else { if (rule->pdn_idx >= IPA_MAX_PDN_NUM) { if (rule->pdn_idx >= ipa3_get_max_pdn()) { IPAERR_RL("PDN index %d is too large\n", rule->pdn_idx); goto error; Loading
drivers/platform/msm/ipa/ipa_v3/ipa_i.h +1 −0 Original line number Diff line number Diff line Loading @@ -2874,6 +2874,7 @@ int ipa3_query_intf(struct ipa_ioc_query_intf *lookup); int ipa3_query_intf_tx_props(struct ipa_ioc_query_intf_tx_props *tx); int ipa3_query_intf_rx_props(struct ipa_ioc_query_intf_rx_props *rx); int ipa3_query_intf_ext_props(struct ipa_ioc_query_intf_ext_props *ext); int ipa3_get_max_pdn(void); void wwan_cleanup(void); Loading
drivers/platform/msm/ipa/ipa_v3/ipa_nat.c +5 −3 Original line number Diff line number Diff line Loading @@ -763,7 +763,8 @@ int ipa3_allocate_nat_table( ipahal_nat_entry_size(IPAHAL_NAT_IPV4_PDN, &pdn_entry_size); pdn_mem_ptr->size = pdn_entry_size * IPA_MAX_PDN_NUM; pdn_mem_ptr->size = pdn_entry_size * ipa3_get_max_pdn(); if (IPA_MEM_PART(pdn_config_size) < pdn_mem_ptr->size) { IPAERR( Loading Loading @@ -1179,7 +1180,8 @@ static int ipa3_nat_create_modify_pdn_cmd( IPADBG("\n"); ipahal_nat_entry_size(IPAHAL_NAT_IPV4_PDN, &pdn_entry_size); mem_size = pdn_entry_size * IPA_MAX_PDN_NUM; mem_size = pdn_entry_size * ipa3_get_max_pdn(); /* Before providing physical base address check pointer exist or not*/ if (!ipa3_ctx->nat_mem.pdn_mem.base) Loading Loading @@ -1714,7 +1716,7 @@ int ipa3_nat_mdfy_pdn( goto bail; } if (mdfy_pdn->pdn_index > (IPA_MAX_PDN_NUM - 1)) { if (mdfy_pdn->pdn_index > (ipa3_get_max_pdn() - 1)) { IPAERR_RL("pdn index out of range %d\n", mdfy_pdn->pdn_index); result = -EPERM; goto bail; Loading
drivers/platform/msm/ipa/ipa_v3/ipa_utils.c +15 −0 Original line number Diff line number Diff line Loading @@ -9301,3 +9301,18 @@ int ipa3_del_socksv5_conn(uint32_t handle) mutex_unlock(&ipa3_ctx->act_tbl_lock); return res; } /** * ipa3_get_max_pdn() - get max PDN number based on hardware version * * Returns: IPA_MAX_PDN_NUM of IPAv4_5 and IPA_MAX_PDN_NUM_v4_2 for others * */ int ipa3_get_max_pdn(void) { if (ipa3_get_hw_type_index() == IPA_4_5_AUTO) return IPA_MAX_PDN_NUM; else return IPA_MAX_PDN_NUM_v4; }