dataipa: fix compilation with IPA_ETH_API_VER 2, KBDEV

* Reduce stack usage in functions for KBDEV
* Adjust pre-processor directives to a kernel change

Signed-off-by: Eliad Ben Yishay <quic_ebenyish@quicinc.com>
Change-Id: I4e434c486c25496889199269d722c195094edb74
diff --git a/drivers/platform/msm/ipa/test/ipa_test_ntn.c b/drivers/platform/msm/ipa/test/ipa_test_ntn.c
index 741bd3b..7777e96 100644
--- a/drivers/platform/msm/ipa/test/ipa_test_ntn.c
+++ b/drivers/platform/msm/ipa/test/ipa_test_ntn.c
@@ -105,11 +105,12 @@
 }__packed;
 
 static inline void ipa_test_ntn_set_client_params(enum ipa_client_type cons_type,
-	enum ipa_client_type prod_type, int inst_id)
+	enum ipa_client_type prod_type, int inst_id, enum ipa_eth_client_type eth_client_type)
 {
 	test_ntn_ctx->cons_client_type = cons_type;
 	test_ntn_ctx->prod_client_type = prod_type;
 	test_ntn_ctx->eth_client_inst_id = inst_id;
+	test_ntn_ctx->client.client_type = eth_client_type;
 }
 
 static void ipa_test_ntn_free_dma_buff(struct ipa_mem_buffer *mem)
@@ -408,7 +409,8 @@
 		return -ENOMEM;
 	}
 
-	ipa_test_ntn_set_client_params(IPA_CLIENT_ETHERNET_CONS, IPA_CLIENT_ETHERNET_PROD, 0);
+	ipa_test_ntn_set_client_params(IPA_CLIENT_ETHERNET_CONS, IPA_CLIENT_ETHERNET_PROD, 0,
+			IPA_ETH_CLIENT_NTN3);
 
 	init_completion(&test_ntn_ctx->init_completion_obj);
 
@@ -546,13 +548,20 @@
 	struct ipa_eth_client *client;
 	int ret, i;
 #if IPA_ETH_API_VER >= 2
-	struct net_device dummy_net_dev;
+	struct net_device *dummy_net_dev;
 	unsigned char dummy_dev_addr = 1;
 
-	memset(dummy_net_dev.name, 0, sizeof(dummy_net_dev.name));
-	dummy_net_dev.dev_addr = &dummy_dev_addr;
+	dummy_net_dev = kzalloc(sizeof(*dummy_net_dev), GFP_KERNEL);
+	if (dummy_net_dev == NULL){
+		IPA_UT_ERR("kzalloc failed\n");
+		return -ENOMEM;
+	}
 
-	test_ntn_ctx->client.client_type = IPA_ETH_CLIENT_NTN3;
+	memset(dummy_net_dev->name, 0, sizeof(dummy_net_dev->name));
+	dummy_net_dev->dev_addr = &dummy_dev_addr;
+
+
+	/* client_type is set in ipa_test_ntn_set_client_params */
 	test_ntn_ctx->client.inst_id = test_ntn_ctx->eth_client_inst_id;
 #else
 	test_ntn_ctx->client.client_type = IPA_ETH_CLIENT_NTN;
@@ -560,7 +569,7 @@
 #endif
 	test_ntn_ctx->client.traffic_type = IPA_ETH_PIPE_BEST_EFFORT;
 #if IPA_ETH_API_VER >= 2
-	test_ntn_ctx->client.net_dev = &dummy_net_dev;
+	test_ntn_ctx->client.net_dev = dummy_net_dev;
 #endif
 
 	/* RX pipe */
@@ -688,21 +697,22 @@
 	ret = ipa_eth_client_conn_pipes(client);
 	if(ret) {
 		IPA_UT_ERR("ipa_eth_client_conn_pipes failed ret %d\n", ret);
-		goto conn_failed;
+		ipa_ntn_test_del_client_list();
 	}
 
-	return 0;
+#if IPA_ETH_API_VER >= 2
+	kfree(dummy_net_dev);
+#endif
 
-conn_failed:
-	ipa_ntn_test_del_client_list();
 	return ret;
+
 }
 
 static int ipa_ntn_test_reg_intf(void)
 {
 	struct ipa_eth_intf_info intf;
 #if IPA_ETH_API_VER >= 2
-	struct net_device dummy_net_dev;
+	struct net_device *dummy_net_dev;
 	unsigned char dummy_dev_addr[ETH_ALEN] = { 0 };
 #else
 	char netdev_name[IPA_RESOURCE_NAME_MAX] = { 0 };
@@ -712,11 +722,17 @@
 
 	memset(&intf, 0, sizeof(intf));
 #if IPA_ETH_API_VER >= 2
-	memset(dummy_net_dev.name, 0, sizeof(dummy_net_dev.name));
+	dummy_net_dev = kzalloc(sizeof(*dummy_net_dev), GFP_KERNEL);
+	if (dummy_net_dev == NULL){
+		IPA_UT_ERR("kzalloc failed\n");
+		return -ENOMEM;
+	}
 
-	intf.net_dev = &dummy_net_dev;
+	memset(dummy_net_dev->name, 0, sizeof(dummy_net_dev->name));
+	intf.net_dev = dummy_net_dev;
 	intf.net_dev->dev_addr = (unsigned char *)dummy_dev_addr;
 	intf.is_conn_evt = true;
+	intf.client = &test_ntn_ctx->client;
 
 	snprintf(intf.net_dev->name, sizeof(intf.net_dev->name), "ntn_test");
 	IPA_UT_INFO("netdev name: %s strlen: %lu\n", intf.net_dev->name, strlen(intf.net_dev->name));
@@ -756,6 +772,7 @@
 	}
 
 #if IPA_ETH_API_VER >= 2
+	kfree(dummy_net_dev);
 #else
 	kfree(intf.pipe_hdl_list);
 #endif
@@ -766,17 +783,24 @@
 static int ipa_ntn_test_unreg_intf(void)
 {
 	struct ipa_eth_intf_info intf;
+	int ret = 0;
 #if IPA_ETH_API_VER >= 2
-	struct net_device dummy_net_dev;
+	struct net_device *dummy_net_dev;
 #else
 	char netdev_name[IPA_RESOURCE_NAME_MAX] = { 0 };
 #endif
 
 	memset(&intf, 0, sizeof(intf));
 #if IPA_ETH_API_VER >= 2
-	memset(dummy_net_dev.name, 0, sizeof(dummy_net_dev.name));
+	dummy_net_dev = kzalloc(sizeof(*dummy_net_dev), GFP_KERNEL);
+	if (dummy_net_dev == NULL){
+		IPA_UT_ERR("kzalloc failed\n");
+		return -ENOMEM;
+	}
 
-	intf.net_dev = &dummy_net_dev;
+	memset(dummy_net_dev->name, 0, sizeof(dummy_net_dev->name));
+	intf.net_dev = dummy_net_dev;
+	intf.client = &test_ntn_ctx->client;
 
 	snprintf(intf.net_dev->name, sizeof(intf.net_dev->name), "ntn_test");
 	IPA_UT_INFO("netdev name: %s strlen: %lu\n", intf.net_dev->name, strlen(intf.net_dev->name));
@@ -787,7 +811,14 @@
 		strlen(intf.netdev_name));
 #endif
 
-	return (ipa_eth_client_unreg_intf(&intf));
+	ret = ipa_eth_client_unreg_intf(&intf);
+
+#if IPA_ETH_API_VER >= 2
+	kfree(dummy_net_dev);
+#endif
+
+	return ret;
+
 }
 
 static void ipa_ntn_test_advance_db(u32 *db, int steps,
@@ -970,7 +1001,7 @@
 }
 static int ipa_ntn_test_prepare_test(void)
 {
-	struct ipa_ep_cfg ep_cfg = { { 0 } };
+	struct ipa_ep_cfg *ep_cfg;
 	int offset = 0;
 	int ret = 0;
 
@@ -1013,21 +1044,29 @@
 	}
 
 	/* configure NTN RX EP in DMA mode */
-	ep_cfg.mode.mode = IPA_DMA;
-	ep_cfg.mode.dst = test_ntn_ctx->cons_client_type;
+	ep_cfg = kzalloc(sizeof(*ep_cfg), GFP_KERNEL);
+	if (ep_cfg == NULL){
+		IPA_UT_ERR("kzalloc failed\n");
+		return -ENOMEM;
+	}
 
-	ep_cfg.seq.set_dynamic = true;
+	ep_cfg->mode.mode = IPA_DMA;
+	ep_cfg->mode.dst = test_ntn_ctx->cons_client_type;
+	ep_cfg->seq.set_dynamic = true;
 
-	if (ipa3_cfg_ep(ipa_get_ep_mapping(test_ntn_ctx->prod_client_type),
-		&ep_cfg)) {
+
+	if (ipa3_cfg_ep(ipa_get_ep_mapping(test_ntn_ctx->prod_client_type), ep_cfg)) {
 		IPA_UT_ERR("fail to configure DMA mode.\n");
 		ret = -EFAULT;
 		goto unreg;
 	}
 
+	kfree(ep_cfg);
+
 	return 0;
 
 unreg:
+	kfree(ep_cfg);
 	if (ipa_ntn_test_unreg_intf()) {
 		IPA_UT_ERR("fail to unregister interface.\n");
 		ret = -EFAULT;
@@ -1418,6 +1457,7 @@
 	}
 	IPA_UT_INFO("sent the last packet succesfully!\n");
 
+
 	ipa_ntn_test_print_stats();
 
 fail:
@@ -1431,16 +1471,20 @@
 	return ret;
 }
 
-static int ipa_ntn_test_clients2_multi_transfer_burst(void *priv)
+#if IPA_ETH_API_VER >= 2
+static int ipa_ntn_test_eth1_multi_transfer_burst(void *priv)
 {
 	int ret;
 
-	ipa_test_ntn_set_client_params(IPA_CLIENT_ETHERNET2_CONS, IPA_CLIENT_ETHERNET2_PROD, 1);
+	ipa_test_ntn_set_client_params(IPA_CLIENT_ETHERNET2_CONS, IPA_CLIENT_ETHERNET2_PROD, 1,
+		IPA_ETH_CLIENT_NTN3);
 	ret = ipa_ntn_test_multi_transfer_burst(priv);
-	ipa_test_ntn_set_client_params(IPA_CLIENT_ETHERNET_CONS, IPA_CLIENT_ETHERNET_PROD, 0);
+	ipa_test_ntn_set_client_params(IPA_CLIENT_ETHERNET_CONS, IPA_CLIENT_ETHERNET_PROD, 0,
+		IPA_ETH_CLIENT_NTN3);
 
 	return ret;
 }
+#endif
 
 /* Suite definition block */
 IPA_UT_DEFINE_SUITE_START(ntn, "NTN3 tests",
@@ -1471,10 +1515,12 @@
 			ipa_ntn_test_multi_transfer_burst,
 			true, IPA_HW_v5_0, IPA_HW_MAX),
 
-	IPA_UT_ADD_TEST(clients2_multi_transfer_burst,
-			"Clients pair 2 send entire ring in one shot",
-			ipa_ntn_test_clients2_multi_transfer_burst,
+#if IPA_ETH_API_VER >= 2
+	IPA_UT_ADD_TEST(eth1_multi_transfer_burst,
+			"eth1: send entire ring in one shot",
+			ipa_ntn_test_eth1_multi_transfer_burst,
 			true, IPA_HW_v5_0, IPA_HW_MAX),
+#endif
 } IPA_UT_DEFINE_SUITE_END(ntn);