Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4c735be8 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: ipa4: add unit test for statistics"

parents 714a9aa7 8548f47a
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -3,6 +3,7 @@ obj-$(CONFIG_IPA3) += ipahal/
obj-$(CONFIG_IPA3) += ipat.o
obj-$(CONFIG_IPA3) += ipat.o
ipat-y := ipa.o ipa_debugfs.o ipa_hdr.o ipa_flt.o ipa_rt.o ipa_dp.o ipa_client.o \
ipat-y := ipa.o ipa_debugfs.o ipa_hdr.o ipa_flt.o ipa_rt.o ipa_dp.o ipa_client.o \
	ipa_utils.o ipa_nat.o ipa_intf.o teth_bridge.o ipa_interrupts.o \
	ipa_utils.o ipa_nat.o ipa_intf.o teth_bridge.o ipa_interrupts.o \
	ipa_uc.o ipa_uc_wdi.o ipa_dma.o ipa_uc_mhi.o ipa_mhi.o ipa_uc_ntn.o
	ipa_uc.o ipa_uc_wdi.o ipa_dma.o ipa_uc_mhi.o ipa_mhi.o ipa_uc_ntn.o \
	ipa_hw_stats.o


obj-$(CONFIG_RMNET_IPA3) += rmnet_ipa.o ipa_qmi_service_v01.o ipa_qmi_service.o rmnet_ipa_fd_ioctl.o
obj-$(CONFIG_RMNET_IPA3) += rmnet_ipa.o ipa_qmi_service_v01.o ipa_qmi_service.o rmnet_ipa_fd_ioctl.o
+29 −4
Original line number Original line Diff line number Diff line
@@ -3947,14 +3947,17 @@ static void ipa3_destroy_flt_tbl_idrs(void)
	int i;
	int i;
	struct ipa3_flt_tbl *flt_tbl;
	struct ipa3_flt_tbl *flt_tbl;


	idr_destroy(&ipa3_ctx->flt_rule_ids[IPA_IP_v4]);
	idr_destroy(&ipa3_ctx->flt_rule_ids[IPA_IP_v6]);

	for (i = 0; i < ipa3_ctx->ipa_num_pipes; i++) {
	for (i = 0; i < ipa3_ctx->ipa_num_pipes; i++) {
		if (!ipa_is_ep_support_flt(i))
		if (!ipa_is_ep_support_flt(i))
			continue;
			continue;


		flt_tbl = &ipa3_ctx->flt_tbl[i][IPA_IP_v4];
		flt_tbl = &ipa3_ctx->flt_tbl[i][IPA_IP_v4];
		idr_destroy(&flt_tbl->rule_ids);
		flt_tbl->rule_ids = NULL;
		flt_tbl = &ipa3_ctx->flt_tbl[i][IPA_IP_v6];
		flt_tbl = &ipa3_ctx->flt_tbl[i][IPA_IP_v6];
		idr_destroy(&flt_tbl->rule_ids);
		flt_tbl->rule_ids = NULL;
	}
	}
}
}


@@ -4129,6 +4132,7 @@ static int ipa3_post_init(const struct ipa3_plat_drv_res *resource_p,
	struct ipa3_uc_hdlrs uc_hdlrs = { 0 };
	struct ipa3_uc_hdlrs uc_hdlrs = { 0 };
	struct ipa3_flt_tbl *flt_tbl;
	struct ipa3_flt_tbl *flt_tbl;
	int i;
	int i;
	struct idr *idr;


	if (ipa3_ctx == NULL) {
	if (ipa3_ctx == NULL) {
		IPADBG("IPA driver haven't initialized\n");
		IPADBG("IPA driver haven't initialized\n");
@@ -4152,6 +4156,11 @@ static int ipa3_post_init(const struct ipa3_plat_drv_res *resource_p,
	/* Assign resource limitation to each group */
	/* Assign resource limitation to each group */
	ipa3_set_resorce_groups_min_max_limits();
	ipa3_set_resorce_groups_min_max_limits();


	idr = &(ipa3_ctx->flt_rule_ids[IPA_IP_v4]);
	idr_init(idr);
	idr = &(ipa3_ctx->flt_rule_ids[IPA_IP_v6]);
	idr_init(idr);

	for (i = 0; i < ipa3_ctx->ipa_num_pipes; i++) {
	for (i = 0; i < ipa3_ctx->ipa_num_pipes; i++) {
		if (!ipa_is_ep_support_flt(i))
		if (!ipa_is_ep_support_flt(i))
			continue;
			continue;
@@ -4162,7 +4171,7 @@ static int ipa3_post_init(const struct ipa3_plat_drv_res *resource_p,
			!ipa3_ctx->ip4_flt_tbl_hash_lcl;
			!ipa3_ctx->ip4_flt_tbl_hash_lcl;
		flt_tbl->in_sys[IPA_RULE_NON_HASHABLE] =
		flt_tbl->in_sys[IPA_RULE_NON_HASHABLE] =
			!ipa3_ctx->ip4_flt_tbl_nhash_lcl;
			!ipa3_ctx->ip4_flt_tbl_nhash_lcl;
		idr_init(&flt_tbl->rule_ids);
		flt_tbl->rule_ids = &ipa3_ctx->flt_rule_ids[IPA_IP_v4];


		flt_tbl = &ipa3_ctx->flt_tbl[i][IPA_IP_v6];
		flt_tbl = &ipa3_ctx->flt_tbl[i][IPA_IP_v6];
		INIT_LIST_HEAD(&flt_tbl->head_flt_rule_list);
		INIT_LIST_HEAD(&flt_tbl->head_flt_rule_list);
@@ -4170,7 +4179,7 @@ static int ipa3_post_init(const struct ipa3_plat_drv_res *resource_p,
			!ipa3_ctx->ip6_flt_tbl_hash_lcl;
			!ipa3_ctx->ip6_flt_tbl_hash_lcl;
		flt_tbl->in_sys[IPA_RULE_NON_HASHABLE] =
		flt_tbl->in_sys[IPA_RULE_NON_HASHABLE] =
			!ipa3_ctx->ip6_flt_tbl_nhash_lcl;
			!ipa3_ctx->ip6_flt_tbl_nhash_lcl;
		idr_init(&flt_tbl->rule_ids);
		flt_tbl->rule_ids = &ipa3_ctx->flt_rule_ids[IPA_IP_v6];
	}
	}


	if (!ipa3_ctx->apply_rg10_wa) {
	if (!ipa3_ctx->apply_rg10_wa) {
@@ -4255,6 +4264,12 @@ static int ipa3_post_init(const struct ipa3_plat_drv_res *resource_p,
	else
	else
		IPADBG(":ntn init ok\n");
		IPADBG(":ntn init ok\n");


	result = ipa_hw_stats_init();
	if (result)
		IPAERR("fail to init stats %d\n", result);
	else
		IPADBG(":stats init ok\n");

	ipa3_register_panic_hdlr();
	ipa3_register_panic_hdlr();


	ipa3_ctx->q6_proxy_clk_vote_valid = true;
	ipa3_ctx->q6_proxy_clk_vote_valid = true;
@@ -4815,12 +4830,16 @@ static int ipa3_pre_init(const struct ipa3_plat_drv_res *resource_p,
				hdr_proc_ctx_tbl.head_free_offset_list[i]);
				hdr_proc_ctx_tbl.head_free_offset_list[i]);
	}
	}
	INIT_LIST_HEAD(&ipa3_ctx->rt_tbl_set[IPA_IP_v4].head_rt_tbl_list);
	INIT_LIST_HEAD(&ipa3_ctx->rt_tbl_set[IPA_IP_v4].head_rt_tbl_list);
	idr_init(&ipa3_ctx->rt_tbl_set[IPA_IP_v4].rule_ids);
	INIT_LIST_HEAD(&ipa3_ctx->rt_tbl_set[IPA_IP_v6].head_rt_tbl_list);
	INIT_LIST_HEAD(&ipa3_ctx->rt_tbl_set[IPA_IP_v6].head_rt_tbl_list);
	idr_init(&ipa3_ctx->rt_tbl_set[IPA_IP_v6].rule_ids);


	rset = &ipa3_ctx->reap_rt_tbl_set[IPA_IP_v4];
	rset = &ipa3_ctx->reap_rt_tbl_set[IPA_IP_v4];
	INIT_LIST_HEAD(&rset->head_rt_tbl_list);
	INIT_LIST_HEAD(&rset->head_rt_tbl_list);
	idr_init(&rset->rule_ids);
	rset = &ipa3_ctx->reap_rt_tbl_set[IPA_IP_v6];
	rset = &ipa3_ctx->reap_rt_tbl_set[IPA_IP_v6];
	INIT_LIST_HEAD(&rset->head_rt_tbl_list);
	INIT_LIST_HEAD(&rset->head_rt_tbl_list);
	idr_init(&rset->rule_ids);


	INIT_LIST_HEAD(&ipa3_ctx->intf_list);
	INIT_LIST_HEAD(&ipa3_ctx->intf_list);
	INIT_LIST_HEAD(&ipa3_ctx->msg_list);
	INIT_LIST_HEAD(&ipa3_ctx->msg_list);
@@ -4940,6 +4959,12 @@ static int ipa3_pre_init(const struct ipa3_plat_drv_res *resource_p,
fail_device_create:
fail_device_create:
	unregister_chrdev_region(ipa3_ctx->dev_num, 1);
	unregister_chrdev_region(ipa3_ctx->dev_num, 1);
fail_alloc_chrdev_region:
fail_alloc_chrdev_region:
	rset = &ipa3_ctx->reap_rt_tbl_set[IPA_IP_v6];
	idr_destroy(&rset->rule_ids);
	rset = &ipa3_ctx->reap_rt_tbl_set[IPA_IP_v4];
	idr_destroy(&rset->rule_ids);
	idr_destroy(&ipa3_ctx->rt_tbl_set[IPA_IP_v6].rule_ids);
	idr_destroy(&ipa3_ctx->rt_tbl_set[IPA_IP_v4].rule_ids);
	ipa3_free_dma_task_for_gsi();
	ipa3_free_dma_task_for_gsi();
fail_dma_task:
fail_dma_task:
	idr_destroy(&ipa3_ctx->ipa_idr);
	idr_destroy(&ipa3_ctx->ipa_idr);
+2 −0
Original line number Original line Diff line number Diff line
@@ -2169,6 +2169,8 @@ void ipa3_debugfs_init(void)
		goto fail;
		goto fail;
	}
	}


	ipa_debugfs_init_stats(dent);

	return;
	return;


fail:
fail:
+5 −5
Original line number Original line Diff line number Diff line
@@ -806,7 +806,7 @@ static int __ipa_create_flt_entry(struct ipa3_flt_entry **entry,
	if (rule->rule_id) {
	if (rule->rule_id) {
		id = rule->rule_id;
		id = rule->rule_id;
	} else {
	} else {
		id = ipa3_alloc_rule_id(&tbl->rule_ids);
		id = ipa3_alloc_rule_id(tbl->rule_ids);
		if (id < 0) {
		if (id < 0) {
			IPAERR("failed to allocate rule id\n");
			IPAERR("failed to allocate rule id\n");
			WARN_ON(1);
			WARN_ON(1);
@@ -880,7 +880,7 @@ static int __ipa_add_flt_rule(struct ipa3_flt_tbl *tbl, enum ipa_ip_type ip,
	list_del(&entry->link);
	list_del(&entry->link);
	/* if rule id was allocated from idr, remove it */
	/* if rule id was allocated from idr, remove it */
	if (!(entry->rule_id & ipahal_get_rule_id_hi_bit()))
	if (!(entry->rule_id & ipahal_get_rule_id_hi_bit()))
		idr_remove(&entry->tbl->rule_ids, entry->rule_id);
		idr_remove(entry->tbl->rule_ids, entry->rule_id);
	kmem_cache_free(ipa3_ctx->flt_rule_cache, entry);
	kmem_cache_free(ipa3_ctx->flt_rule_cache, entry);


error:
error:
@@ -927,7 +927,7 @@ static int __ipa_add_flt_rule_after(struct ipa3_flt_tbl *tbl,
	list_del(&entry->link);
	list_del(&entry->link);
	/* if rule id was allocated from idr, remove it */
	/* if rule id was allocated from idr, remove it */
	if (!(entry->rule_id & ipahal_get_rule_id_hi_bit()))
	if (!(entry->rule_id & ipahal_get_rule_id_hi_bit()))
		idr_remove(&entry->tbl->rule_ids, entry->rule_id);
		idr_remove(entry->tbl->rule_ids, entry->rule_id);
	kmem_cache_free(ipa3_ctx->flt_rule_cache, entry);
	kmem_cache_free(ipa3_ctx->flt_rule_cache, entry);


error:
error:
@@ -961,7 +961,7 @@ static int __ipa_del_flt_rule(u32 rule_hdl)
	entry->cookie = 0;
	entry->cookie = 0;
	/* if rule id was allocated from idr, remove it */
	/* if rule id was allocated from idr, remove it */
	if (!(entry->rule_id & ipahal_get_rule_id_hi_bit()))
	if (!(entry->rule_id & ipahal_get_rule_id_hi_bit()))
		idr_remove(&entry->tbl->rule_ids, entry->rule_id);
		idr_remove(entry->tbl->rule_ids, entry->rule_id);


	kmem_cache_free(ipa3_ctx->flt_rule_cache, entry);
	kmem_cache_free(ipa3_ctx->flt_rule_cache, entry);


@@ -1374,7 +1374,7 @@ int ipa3_reset_flt(enum ipa_ip_type ip)
				entry->rt_tbl->ref_cnt--;
				entry->rt_tbl->ref_cnt--;
			/* if rule id was allocated from idr, remove it */
			/* if rule id was allocated from idr, remove it */
			if (!(entry->rule_id & ipahal_get_rule_id_hi_bit()))
			if (!(entry->rule_id & ipahal_get_rule_id_hi_bit()))
				idr_remove(&entry->tbl->rule_ids,
				idr_remove(entry->tbl->rule_ids,
					entry->rule_id);
					entry->rule_id);
			entry->cookie = 0;
			entry->cookie = 0;
			id = entry->id;
			id = entry->id;
+1973 −0

File added.

Preview size limit exceeded, changes collapsed.

Loading