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

Commit 56afc880 authored by Skylar Chang's avatar Skylar Chang Committed by Gerrit - the friendly Code Review server
Browse files

msm: ipa3: rmnet_ipa: add IPC logging to common buffer



Add IPC logging to IPA WAN driver.
IPC logging will be stored in the same log buffer
as IPA IPC log.

CRs-Fixed: 1005492
Change-Id: I69f3536e297eae8453370b44f66ec0f520f16cd5
Acked-by: default avatarAdy Abraham <adya@qti.qualcomm.com>
Signed-off-by: default avatarSkylar Chang <chiaweic@codeaurora.org>
parent 2e678d6b
Loading
Loading
Loading
Loading
+12 −12
Original line number Original line Diff line number Diff line
@@ -356,7 +356,7 @@ static void ipa3_a5_svc_recv_msg(struct work_struct *work)
	int rc;
	int rc;


	do {
	do {
		IPAWANDBG("Notified about a Receive Event");
		IPAWANDBG_LOW("Notified about a Receive Event");
		rc = qmi_recv_msg(ipa3_svc_handle);
		rc = qmi_recv_msg(ipa3_svc_handle);
	} while (rc == 0);
	} while (rc == 0);
	if (rc != -ENOMSG)
	if (rc != -ENOMSG)
@@ -430,7 +430,7 @@ static int ipa3_check_qmi_response(int rc,
		req_id, result, error);
		req_id, result, error);
		return result;
		return result;
	}
	}
	IPAWANDBG("Received %s successfully\n", resp_type);
	IPAWANDBG_LOW("Received %s successfully\n", resp_type);
	return 0;
	return 0;
}
}


@@ -762,7 +762,7 @@ static void ipa3_q6_clnt_recv_msg(struct work_struct *work)
	int rc;
	int rc;


	do {
	do {
		IPAWANDBG("Notified about a Receive Event");
		IPAWANDBG_LOW("Notified about a Receive Event");
		rc = qmi_recv_msg(ipa_q6_clnt);
		rc = qmi_recv_msg(ipa_q6_clnt);
	} while (rc == 0);
	} while (rc == 0);
	if (rc != -ENOMSG)
	if (rc != -ENOMSG)
@@ -774,7 +774,7 @@ static void ipa3_q6_clnt_notify(struct qmi_handle *handle,
{
{
	switch (event) {
	switch (event) {
	case QMI_RECV_MSG:
	case QMI_RECV_MSG:
		IPAWANDBG("client qmi recv message called");
		IPAWANDBG_LOW("client qmi recv message called");
		if (!workqueues_stopped)
		if (!workqueues_stopped)
			queue_delayed_work(ipa_clnt_resp_workqueue,
			queue_delayed_work(ipa_clnt_resp_workqueue,
					   &ipa3_work_recv_msg_client, 0);
					   &ipa3_work_recv_msg_client, 0);
@@ -1154,7 +1154,7 @@ int ipa3_qmi_get_data_stats(struct ipa_get_data_stats_req_msg_v01 *req,
	resp_desc.msg_id = QMI_IPA_GET_DATA_STATS_RESP_V01;
	resp_desc.msg_id = QMI_IPA_GET_DATA_STATS_RESP_V01;
	resp_desc.ei_array = ipa3_get_data_stats_resp_msg_data_v01_ei;
	resp_desc.ei_array = ipa3_get_data_stats_resp_msg_data_v01_ei;


	IPAWANDBG("Sending QMI_IPA_GET_DATA_STATS_REQ_V01\n");
	IPAWANDBG_LOW("Sending QMI_IPA_GET_DATA_STATS_REQ_V01\n");


	rc = qmi_send_req_wait(ipa_q6_clnt, &req_desc, req,
	rc = qmi_send_req_wait(ipa_q6_clnt, &req_desc, req,
			sizeof(struct ipa_get_data_stats_req_msg_v01),
			sizeof(struct ipa_get_data_stats_req_msg_v01),
@@ -1162,7 +1162,7 @@ int ipa3_qmi_get_data_stats(struct ipa_get_data_stats_req_msg_v01 *req,
			sizeof(struct ipa_get_data_stats_resp_msg_v01),
			sizeof(struct ipa_get_data_stats_resp_msg_v01),
			QMI_SEND_STATS_REQ_TIMEOUT_MS);
			QMI_SEND_STATS_REQ_TIMEOUT_MS);


	IPAWANDBG("QMI_IPA_GET_DATA_STATS_RESP_V01 received\n");
	IPAWANDBG_LOW("QMI_IPA_GET_DATA_STATS_RESP_V01 received\n");


	return ipa3_check_qmi_response(rc,
	return ipa3_check_qmi_response(rc,
		QMI_IPA_GET_DATA_STATS_REQ_V01, resp->resp.result,
		QMI_IPA_GET_DATA_STATS_REQ_V01, resp->resp.result,
@@ -1183,7 +1183,7 @@ int ipa3_qmi_get_network_stats(struct ipa_get_apn_data_stats_req_msg_v01 *req,
	resp_desc.msg_id = QMI_IPA_GET_APN_DATA_STATS_RESP_V01;
	resp_desc.msg_id = QMI_IPA_GET_APN_DATA_STATS_RESP_V01;
	resp_desc.ei_array = ipa3_get_apn_data_stats_resp_msg_data_v01_ei;
	resp_desc.ei_array = ipa3_get_apn_data_stats_resp_msg_data_v01_ei;


	IPAWANDBG("Sending QMI_IPA_GET_APN_DATA_STATS_REQ_V01\n");
	IPAWANDBG_LOW("Sending QMI_IPA_GET_APN_DATA_STATS_REQ_V01\n");


	rc = qmi_send_req_wait(ipa_q6_clnt, &req_desc, req,
	rc = qmi_send_req_wait(ipa_q6_clnt, &req_desc, req,
			sizeof(struct ipa_get_apn_data_stats_req_msg_v01),
			sizeof(struct ipa_get_apn_data_stats_req_msg_v01),
@@ -1191,7 +1191,7 @@ int ipa3_qmi_get_network_stats(struct ipa_get_apn_data_stats_req_msg_v01 *req,
			sizeof(struct ipa_get_apn_data_stats_resp_msg_v01),
			sizeof(struct ipa_get_apn_data_stats_resp_msg_v01),
			QMI_SEND_STATS_REQ_TIMEOUT_MS);
			QMI_SEND_STATS_REQ_TIMEOUT_MS);


	IPAWANDBG("QMI_IPA_GET_APN_DATA_STATS_RESP_V01 received\n");
	IPAWANDBG_LOW("QMI_IPA_GET_APN_DATA_STATS_RESP_V01 received\n");


	return ipa3_check_qmi_response(rc,
	return ipa3_check_qmi_response(rc,
		QMI_IPA_GET_APN_DATA_STATS_REQ_V01, resp->resp.result,
		QMI_IPA_GET_APN_DATA_STATS_REQ_V01, resp->resp.result,
@@ -1215,14 +1215,14 @@ int ipa3_qmi_set_data_quota(struct ipa_set_data_usage_quota_req_msg_v01 *req)
	resp_desc.msg_id = QMI_IPA_SET_DATA_USAGE_QUOTA_RESP_V01;
	resp_desc.msg_id = QMI_IPA_SET_DATA_USAGE_QUOTA_RESP_V01;
	resp_desc.ei_array = ipa3_set_data_usage_quota_resp_msg_data_v01_ei;
	resp_desc.ei_array = ipa3_set_data_usage_quota_resp_msg_data_v01_ei;


	IPAWANDBG("Sending QMI_IPA_SET_DATA_USAGE_QUOTA_REQ_V01\n");
	IPAWANDBG_LOW("Sending QMI_IPA_SET_DATA_USAGE_QUOTA_REQ_V01\n");


	rc = qmi_send_req_wait(ipa_q6_clnt, &req_desc, req,
	rc = qmi_send_req_wait(ipa_q6_clnt, &req_desc, req,
			sizeof(struct ipa_set_data_usage_quota_req_msg_v01),
			sizeof(struct ipa_set_data_usage_quota_req_msg_v01),
			&resp_desc, &resp, sizeof(resp),
			&resp_desc, &resp, sizeof(resp),
			QMI_SEND_STATS_REQ_TIMEOUT_MS);
			QMI_SEND_STATS_REQ_TIMEOUT_MS);


	IPAWANDBG("QMI_IPA_SET_DATA_USAGE_QUOTA_RESP_V01 received\n");
	IPAWANDBG_LOW("QMI_IPA_SET_DATA_USAGE_QUOTA_RESP_V01 received\n");


	return ipa3_check_qmi_response(rc,
	return ipa3_check_qmi_response(rc,
		QMI_IPA_SET_DATA_USAGE_QUOTA_REQ_V01, resp.resp.result,
		QMI_IPA_SET_DATA_USAGE_QUOTA_REQ_V01, resp.resp.result,
@@ -1249,13 +1249,13 @@ int ipa3_qmi_stop_data_qouta(void)
	resp_desc.msg_id = QMI_IPA_STOP_DATA_USAGE_QUOTA_RESP_V01;
	resp_desc.msg_id = QMI_IPA_STOP_DATA_USAGE_QUOTA_RESP_V01;
	resp_desc.ei_array = ipa3_stop_data_usage_quota_resp_msg_data_v01_ei;
	resp_desc.ei_array = ipa3_stop_data_usage_quota_resp_msg_data_v01_ei;


	IPAWANDBG("Sending QMI_IPA_STOP_DATA_USAGE_QUOTA_REQ_V01\n");
	IPAWANDBG_LOW("Sending QMI_IPA_STOP_DATA_USAGE_QUOTA_REQ_V01\n");


	rc = qmi_send_req_wait(ipa_q6_clnt, &req_desc, &req, sizeof(req),
	rc = qmi_send_req_wait(ipa_q6_clnt, &req_desc, &req, sizeof(req),
		&resp_desc, &resp, sizeof(resp),
		&resp_desc, &resp, sizeof(resp),
		QMI_SEND_STATS_REQ_TIMEOUT_MS);
		QMI_SEND_STATS_REQ_TIMEOUT_MS);


	IPAWANDBG("QMI_IPA_STOP_DATA_USAGE_QUOTA_RESP_V01 received\n");
	IPAWANDBG_LOW("QMI_IPA_STOP_DATA_USAGE_QUOTA_RESP_V01 received\n");


	return ipa3_check_qmi_response(rc,
	return ipa3_check_qmi_response(rc,
		QMI_IPA_STOP_DATA_USAGE_QUOTA_REQ_V01, resp.resp.result,
		QMI_IPA_STOP_DATA_USAGE_QUOTA_REQ_V01, resp.resp.result,
+31 −3
Original line number Original line Diff line number Diff line
@@ -31,11 +31,39 @@
#define SUBSYS_MODEM "modem"
#define SUBSYS_MODEM "modem"


#define IPAWANDBG(fmt, args...) \
#define IPAWANDBG(fmt, args...) \
	pr_debug(DEV_NAME " %s:%d " fmt, __func__, __LINE__, ## args)
	do { \
		pr_debug(DEV_NAME " %s:%d " fmt, __func__, __LINE__, ## args); \
		IPA_IPC_LOGGING(ipa_get_ipc_logbuf(), \
			DEV_NAME " %s:%d " fmt, ## args); \
		IPA_IPC_LOGGING(ipa_get_ipc_logbuf_low(), \
			DEV_NAME " %s:%d " fmt, ## args); \
	} while (0)


#define IPAWANDBG_LOW(fmt, args...) \
	do { \
		pr_debug(DEV_NAME " %s:%d " fmt, __func__, __LINE__, ## args); \
		IPA_IPC_LOGGING(ipa_get_ipc_logbuf_low(), \
			DEV_NAME " %s:%d " fmt, ## args); \
	} while (0)

#define IPAWANERR(fmt, args...) \
#define IPAWANERR(fmt, args...) \
	pr_err(DEV_NAME " %s:%d " fmt, __func__, __LINE__, ## args)
	do { \
		pr_err(DEV_NAME " %s:%d " fmt, __func__, __LINE__, ## args); \
		IPA_IPC_LOGGING(ipa_get_ipc_logbuf(), \
			DEV_NAME " %s:%d " fmt, ## args); \
		IPA_IPC_LOGGING(ipa_get_ipc_logbuf_low(), \
			DEV_NAME " %s:%d " fmt, ## args); \
	} while (0)

#define IPAWANINFO(fmt, args...) \
#define IPAWANINFO(fmt, args...) \
	pr_info(DEV_NAME " %s:%d " fmt, __func__, __LINE__, ## args)
	do { \
		pr_info(DEV_NAME " %s:%d " fmt, __func__, __LINE__, ## args); \
		IPA_IPC_LOGGING(ipa_get_ipc_logbuf(), \
			DEV_NAME " %s:%d " fmt, ## args); \
		IPA_IPC_LOGGING(ipa_get_ipc_logbuf_low(), \
			DEV_NAME " %s:%d " fmt, ## args); \
	} while (0)


extern struct ipa3_qmi_context *ipa3_qmi_ctx;
extern struct ipa3_qmi_context *ipa3_qmi_ctx;


+25 −23
Original line number Original line Diff line number Diff line
@@ -1051,7 +1051,7 @@ static int ipa3_wwan_xmit(struct sk_buff *skb, struct net_device *dev)
	struct ipa_tx_meta meta;
	struct ipa_tx_meta meta;


	if (skb->protocol != htons(ETH_P_MAP)) {
	if (skb->protocol != htons(ETH_P_MAP)) {
		IPAWANDBG
		IPAWANDBG_LOW
		("SW filtering out none QMAP packet received from %s",
		("SW filtering out none QMAP packet received from %s",
		current->comm);
		current->comm);
		return NETDEV_TX_OK;
		return NETDEV_TX_OK;
@@ -1074,11 +1074,11 @@ static int ipa3_wwan_xmit(struct sk_buff *skb, struct net_device *dev)
	if (atomic_read(&wwan_ptr->outstanding_pkts) >=
	if (atomic_read(&wwan_ptr->outstanding_pkts) >=
					wwan_ptr->outstanding_high) {
					wwan_ptr->outstanding_high) {
		if (!qmap_check) {
		if (!qmap_check) {
			IPAWANDBG("pending(%d)/(%d)- stop(%d), qmap_chk(%d)\n",
			IPAWANDBG_LOW("pending(%d)/(%d)- stop(%d)\n",
				atomic_read(&wwan_ptr->outstanding_pkts),
				atomic_read(&wwan_ptr->outstanding_pkts),
				wwan_ptr->outstanding_high,
				wwan_ptr->outstanding_high,
				netif_queue_stopped(dev),
				netif_queue_stopped(dev));
				qmap_check);
			IPAWANDBG_LOW("qmap_chk(%d)\n", qmap_check);
			netif_stop_queue(dev);
			netif_stop_queue(dev);
			return NETDEV_TX_BUSY;
			return NETDEV_TX_BUSY;
		}
		}
@@ -1165,7 +1165,7 @@ static void apps_ipa_tx_complete_notify(void *priv,
		netif_queue_stopped(wwan_ptr->net) &&
		netif_queue_stopped(wwan_ptr->net) &&
		atomic_read(&wwan_ptr->outstanding_pkts) <
		atomic_read(&wwan_ptr->outstanding_pkts) <
					(wwan_ptr->outstanding_low)) {
					(wwan_ptr->outstanding_low)) {
		IPAWANDBG("Outstanding low (%d) - waking up queue\n",
		IPAWANDBG_LOW("Outstanding low (%d) - waking up queue\n",
				wwan_ptr->outstanding_low);
				wwan_ptr->outstanding_low);
		netif_wake_queue(wwan_ptr->net);
		netif_wake_queue(wwan_ptr->net);
	}
	}
@@ -1193,7 +1193,7 @@ static void apps_ipa_packet_receive_notify(void *priv,
	int result;
	int result;
	unsigned int packet_len = skb->len;
	unsigned int packet_len = skb->len;


	IPAWANDBG("Rx packet was received");
	IPAWANDBG_LOW("Rx packet was received");
	if (evt != IPA_RECEIVE) {
	if (evt != IPA_RECEIVE) {
		IPAWANERR("A none IPA_RECEIVE event in wan_ipa_receive\n");
		IPAWANERR("A none IPA_RECEIVE event in wan_ipa_receive\n");
		return;
		return;
@@ -1733,10 +1733,10 @@ static void ipa3_q6_rm_notify_cb(void *user_data,
{
{
	switch (event) {
	switch (event) {
	case IPA_RM_RESOURCE_GRANTED:
	case IPA_RM_RESOURCE_GRANTED:
		IPAWANDBG("%s: Q6_PROD GRANTED CB\n", __func__);
		IPAWANDBG_LOW("%s: Q6_PROD GRANTED CB\n", __func__);
		break;
		break;
	case IPA_RM_RESOURCE_RELEASED:
	case IPA_RM_RESOURCE_RELEASED:
		IPAWANDBG("%s: Q6_PROD RELEASED CB\n", __func__);
		IPAWANDBG_LOW("%s: Q6_PROD RELEASED CB\n", __func__);
		break;
		break;
	default:
	default:
		return;
		return;
@@ -1843,7 +1843,7 @@ static void ipa3_wake_tx_queue(struct work_struct *work)
 */
 */
static void ipa3_rm_resource_granted(void *dev)
static void ipa3_rm_resource_granted(void *dev)
{
{
	IPAWANDBG("Resource Granted - starting queue\n");
	IPAWANDBG_LOW("Resource Granted - starting queue\n");
	schedule_work(&ipa3_tx_wakequeue_work);
	schedule_work(&ipa3_tx_wakequeue_work);
}
}


@@ -2209,7 +2209,7 @@ static int rmnet_ipa_ap_suspend(struct device *dev)
	struct net_device *netdev = IPA_NETDEV();
	struct net_device *netdev = IPA_NETDEV();
	struct ipa3_wwan_private *wwan_ptr;
	struct ipa3_wwan_private *wwan_ptr;


	IPAWANDBG("Enter...\n");
	IPAWANDBG_LOW("Enter...\n");
	if (netdev == NULL) {
	if (netdev == NULL) {
		IPAWANERR("netdev is NULL.\n");
		IPAWANERR("netdev is NULL.\n");
		return 0;
		return 0;
@@ -2231,7 +2231,7 @@ static int rmnet_ipa_ap_suspend(struct device *dev)
	netif_tx_lock_bh(netdev);
	netif_tx_lock_bh(netdev);
	ipa_rm_release_resource(IPA_RM_RESOURCE_WWAN_0_PROD);
	ipa_rm_release_resource(IPA_RM_RESOURCE_WWAN_0_PROD);
	netif_tx_unlock_bh(netdev);
	netif_tx_unlock_bh(netdev);
	IPAWANDBG("Exit\n");
	IPAWANDBG_LOW("Exit\n");


	return 0;
	return 0;
}
}
@@ -2250,10 +2250,10 @@ static int rmnet_ipa_ap_resume(struct device *dev)
{
{
	struct net_device *netdev = IPA_NETDEV();
	struct net_device *netdev = IPA_NETDEV();


	IPAWANDBG("Enter...\n");
	IPAWANDBG_LOW("Enter...\n");
	if (netdev)
	if (netdev)
		netif_wake_queue(netdev);
		netif_wake_queue(netdev);
	IPAWANDBG("Exit\n");
	IPAWANDBG_LOW("Exit\n");


	return 0;
	return 0;
}
}
@@ -2337,7 +2337,7 @@ static int ipa3_ssr_notifier_cb(struct notifier_block *this,
		break;
		break;
	}
	}


	IPAWANDBG("Exit\n");
	IPAWANDBG_LOW("Exit\n");
	return NOTIFY_DONE;
	return NOTIFY_DONE;
}
}


@@ -2614,7 +2614,7 @@ int rmnet_ipa3_query_tethering_stats(struct wan_ioctl_query_tether_stats *data,
		IPAWANERR("reset the pipe stats\n");
		IPAWANERR("reset the pipe stats\n");
	} else {
	} else {
		/* print tethered-client enum */
		/* print tethered-client enum */
		IPAWANDBG("Tethered-client enum(%d)\n", data->ipa_client);
		IPAWANDBG_LOW("Tethered-client enum(%d)\n", data->ipa_client);
	}
	}


	rc = ipa3_qmi_get_data_stats(req, resp);
	rc = ipa3_qmi_get_data_stats(req, resp);
@@ -2632,16 +2632,17 @@ int rmnet_ipa3_query_tethering_stats(struct wan_ioctl_query_tether_stats *data,
	if (resp->dl_dst_pipe_stats_list_valid) {
	if (resp->dl_dst_pipe_stats_list_valid) {
		for (pipe_len = 0; pipe_len < resp->dl_dst_pipe_stats_list_len;
		for (pipe_len = 0; pipe_len < resp->dl_dst_pipe_stats_list_len;
			pipe_len++) {
			pipe_len++) {
			IPAWANDBG("Check entry(%d) dl_dst_pipe(%d)\n",
			IPAWANDBG_LOW("Check entry(%d) dl_dst_pipe(%d)\n",
				pipe_len, resp->dl_dst_pipe_stats_list
				pipe_len, resp->dl_dst_pipe_stats_list
					[pipe_len].pipe_index);
					[pipe_len].pipe_index);
			IPAWANDBG("dl_p_v4(%lu)v6(%lu) dl_b_v4(%lu)v6(%lu)\n",
			IPAWANDBG_LOW("dl_p_v4(%lu)v6(%lu)\n",
				(unsigned long int) resp->
				(unsigned long int) resp->
				dl_dst_pipe_stats_list[pipe_len].
				dl_dst_pipe_stats_list[pipe_len].
				num_ipv4_packets,
				num_ipv4_packets,
				(unsigned long int) resp->
				(unsigned long int) resp->
				dl_dst_pipe_stats_list[pipe_len].
				dl_dst_pipe_stats_list[pipe_len].
				num_ipv6_packets,
				num_ipv6_packets);
			IPAWANDBG_LOW("dl_b_v4(%lu)v6(%lu)\n",
				(unsigned long int) resp->
				(unsigned long int) resp->
				dl_dst_pipe_stats_list[pipe_len].
				dl_dst_pipe_stats_list[pipe_len].
				num_ipv4_bytes,
				num_ipv4_bytes,
@@ -2671,7 +2672,7 @@ int rmnet_ipa3_query_tethering_stats(struct wan_ioctl_query_tether_stats *data,
			}
			}
		}
		}
	}
	}
	IPAWANDBG("v4_rx_p(%lu) v6_rx_p(%lu) v4_rx_b(%lu) v6_rx_b(%lu)\n",
	IPAWANDBG_LOW("v4_rx_p(%lu) v6_rx_p(%lu) v4_rx_b(%lu) v6_rx_b(%lu)\n",
		(unsigned long int) data->ipv4_rx_packets,
		(unsigned long int) data->ipv4_rx_packets,
		(unsigned long int) data->ipv6_rx_packets,
		(unsigned long int) data->ipv6_rx_packets,
		(unsigned long int) data->ipv4_rx_bytes,
		(unsigned long int) data->ipv4_rx_bytes,
@@ -2680,17 +2681,18 @@ int rmnet_ipa3_query_tethering_stats(struct wan_ioctl_query_tether_stats *data,
	if (resp->ul_src_pipe_stats_list_valid) {
	if (resp->ul_src_pipe_stats_list_valid) {
		for (pipe_len = 0; pipe_len < resp->ul_src_pipe_stats_list_len;
		for (pipe_len = 0; pipe_len < resp->ul_src_pipe_stats_list_len;
			pipe_len++) {
			pipe_len++) {
			IPAWANDBG("Check entry(%d) ul_dst_pipe(%d)\n",
			IPAWANDBG_LOW("Check entry(%d) ul_dst_pipe(%d)\n",
				pipe_len,
				pipe_len,
				resp->ul_src_pipe_stats_list[pipe_len].
				resp->ul_src_pipe_stats_list[pipe_len].
				pipe_index);
				pipe_index);
			IPAWANDBG("ul_p_v4(%lu)v6(%lu)ul_b_v4(%lu)v6(%lu)\n",
			IPAWANDBG_LOW("ul_p_v4(%lu)v6(%lu)\n",
				(unsigned long int) resp->
				(unsigned long int) resp->
				ul_src_pipe_stats_list[pipe_len].
				ul_src_pipe_stats_list[pipe_len].
				num_ipv4_packets,
				num_ipv4_packets,
				(unsigned long int) resp->
				(unsigned long int) resp->
				ul_src_pipe_stats_list[pipe_len].
				ul_src_pipe_stats_list[pipe_len].
				num_ipv6_packets,
				num_ipv6_packets);
			IPAWANDBG_LOW("ul_b_v4(%lu)v6(%lu)\n",
				(unsigned long int) resp->
				(unsigned long int) resp->
				ul_src_pipe_stats_list[pipe_len].
				ul_src_pipe_stats_list[pipe_len].
				num_ipv4_bytes,
				num_ipv4_bytes,
@@ -2720,7 +2722,7 @@ int rmnet_ipa3_query_tethering_stats(struct wan_ioctl_query_tether_stats *data,
			}
			}
		}
		}
	}
	}
	IPAWANDBG("tx_p_v4(%lu)v6(%lu)tx_b_v4(%lu) v6(%lu)\n",
	IPAWANDBG_LOW("tx_p_v4(%lu)v6(%lu)tx_b_v4(%lu) v6(%lu)\n",
		(unsigned long int) data->ipv4_tx_packets,
		(unsigned long int) data->ipv4_tx_packets,
		(unsigned long  int) data->ipv6_tx_packets,
		(unsigned long  int) data->ipv6_tx_packets,
		(unsigned long int) data->ipv4_tx_bytes,
		(unsigned long int) data->ipv4_tx_bytes,
+6 −10
Original line number Original line Diff line number Diff line
/* Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
/* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved.
 *
 *
 * This program is free software; you can redistribute it and/or modify
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
 * it under the terms of the GNU General Public License version 2 and
@@ -147,8 +147,7 @@ static long ipa3_wan_ioctl(struct file *filp,
		break;
		break;


	case WAN_IOC_POLL_TETHERING_STATS:
	case WAN_IOC_POLL_TETHERING_STATS:
		IPAWANDBG("device %s got WAN_IOCTL_POLL_TETHERING_STATS :>>>\n",
		IPAWANDBG_LOW("got WAN_IOCTL_POLL_TETHERING_STATS :>>>\n");
			  DRIVER_NAME);
		pyld_sz = sizeof(struct wan_ioctl_poll_tethering_stats);
		pyld_sz = sizeof(struct wan_ioctl_poll_tethering_stats);
		param = kzalloc(pyld_sz, GFP_KERNEL);
		param = kzalloc(pyld_sz, GFP_KERNEL);
		if (!param) {
		if (!param) {
@@ -172,8 +171,7 @@ static long ipa3_wan_ioctl(struct file *filp,
		break;
		break;


	case WAN_IOC_SET_DATA_QUOTA:
	case WAN_IOC_SET_DATA_QUOTA:
		IPAWANDBG("device %s got WAN_IOCTL_SET_DATA_QUOTA :>>>\n",
		IPAWANDBG_LOW("got WAN_IOCTL_SET_DATA_QUOTA :>>>\n");
			  DRIVER_NAME);
		pyld_sz = sizeof(struct wan_ioctl_set_data_quota);
		pyld_sz = sizeof(struct wan_ioctl_set_data_quota);
		param = kzalloc(pyld_sz, GFP_KERNEL);
		param = kzalloc(pyld_sz, GFP_KERNEL);
		if (!param) {
		if (!param) {
@@ -197,8 +195,7 @@ static long ipa3_wan_ioctl(struct file *filp,
		break;
		break;


	case WAN_IOC_SET_TETHER_CLIENT_PIPE:
	case WAN_IOC_SET_TETHER_CLIENT_PIPE:
		IPAWANDBG("device %s got WAN_IOC_SET_TETHER_CLIENT_PIPE :>>>\n",
		IPAWANDBG_LOW("got WAN_IOC_SET_TETHER_CLIENT_PIPE :>>>\n");
				DRIVER_NAME);
		pyld_sz = sizeof(struct wan_ioctl_set_tether_client_pipe);
		pyld_sz = sizeof(struct wan_ioctl_set_tether_client_pipe);
		param = kzalloc(pyld_sz, GFP_KERNEL);
		param = kzalloc(pyld_sz, GFP_KERNEL);
		if (!param) {
		if (!param) {
@@ -218,8 +215,7 @@ static long ipa3_wan_ioctl(struct file *filp,
		break;
		break;


	case WAN_IOC_QUERY_TETHER_STATS:
	case WAN_IOC_QUERY_TETHER_STATS:
		IPAWANDBG("device %s got WAN_IOC_QUERY_TETHER_STATS :>>>\n",
		IPAWANDBG_LOW("got WAN_IOC_QUERY_TETHER_STATS :>>>\n");
				DRIVER_NAME);
		pyld_sz = sizeof(struct wan_ioctl_query_tether_stats);
		pyld_sz = sizeof(struct wan_ioctl_query_tether_stats);
		param = kzalloc(pyld_sz, GFP_KERNEL);
		param = kzalloc(pyld_sz, GFP_KERNEL);
		if (!param) {
		if (!param) {
@@ -245,7 +241,7 @@ static long ipa3_wan_ioctl(struct file *filp,
		break;
		break;


	case WAN_IOC_RESET_TETHER_STATS:
	case WAN_IOC_RESET_TETHER_STATS:
		IPAWANDBG("device %s got WAN_IOC_RESET_TETHER_STATS :>>>\n",
		IPAWANDBG_LOW("device %s got WAN_IOC_RESET_TETHER_STATS :>>>\n",
				DRIVER_NAME);
				DRIVER_NAME);
		pyld_sz = sizeof(struct wan_ioctl_reset_tether_stats);
		pyld_sz = sizeof(struct wan_ioctl_reset_tether_stats);
		param = kzalloc(pyld_sz, GFP_KERNEL);
		param = kzalloc(pyld_sz, GFP_KERNEL);