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

Commit 65b0fd0c authored by Jay Jayanna's avatar Jay Jayanna
Browse files

net: qrtr: ns: Add ipc logging to ns



Log packets processed by ns using ipc logging framework.

Change-Id: I08e9b8551efb4a58cf899835cfac25c1952bd4b8
Signed-off-by: default avatarJay Jayanna <jayanna@codeaurora.org>
parent 3ddd3c6e
Loading
Loading
Loading
Loading
+40 −0
Original line number Original line Diff line number Diff line
@@ -7,6 +7,7 @@


#define pr_fmt(fmt) "qrtr: %s(): " fmt, __func__
#define pr_fmt(fmt) "qrtr: %s(): " fmt, __func__


#include <linux/ipc_logging.h>
#include <linux/module.h>
#include <linux/module.h>
#include <linux/qrtr.h>
#include <linux/qrtr.h>
#include <linux/workqueue.h>
#include <linux/workqueue.h>
@@ -17,6 +18,10 @@
#define CREATE_TRACE_POINTS
#define CREATE_TRACE_POINTS
#include <trace/events/qrtr.h>
#include <trace/events/qrtr.h>


#define NS_LOG_PAGE_CNT 4
static void *ns_ilc;
#define NS_INFO(x, ...) ipc_log_string(ns_ilc, x, ##__VA_ARGS__)

static RADIX_TREE(nodes, GFP_KERNEL);
static RADIX_TREE(nodes, GFP_KERNEL);


static struct {
static struct {
@@ -113,6 +118,8 @@ static int service_announce_new(struct sockaddr_qrtr *dest,
	trace_qrtr_ns_service_announce_new(srv->service, srv->instance,
	trace_qrtr_ns_service_announce_new(srv->service, srv->instance,
					   srv->node, srv->port);
					   srv->node, srv->port);


	NS_INFO("%s: [0x%x:0x%x]@[0x%x:0x%x]\n", __func__, srv->service,
		srv->instance, srv->node, srv->port);
	iv.iov_base = &pkt;
	iv.iov_base = &pkt;
	iv.iov_len = sizeof(pkt);
	iv.iov_len = sizeof(pkt);


@@ -140,6 +147,9 @@ static int service_announce_del(struct sockaddr_qrtr *dest,
	trace_qrtr_ns_service_announce_del(srv->service, srv->instance,
	trace_qrtr_ns_service_announce_del(srv->service, srv->instance,
					   srv->node, srv->port);
					   srv->node, srv->port);


	NS_INFO("%s: [0x%x:0x%x]@[0x%x:0x%x]\n", __func__, srv->service,
		srv->instance, srv->node, srv->port);

	iv.iov_base = &pkt;
	iv.iov_base = &pkt;
	iv.iov_len = sizeof(pkt);
	iv.iov_len = sizeof(pkt);


@@ -255,6 +265,9 @@ static struct qrtr_server *server_add(unsigned int service,
	trace_qrtr_ns_server_add(srv->service, srv->instance,
	trace_qrtr_ns_server_add(srv->service, srv->instance,
				 srv->node, srv->port);
				 srv->node, srv->port);


	NS_INFO("%s: [0x%x:0x%x]@[0x%x:0x%x]\n", __func__, srv->service,
		srv->instance, srv->node, srv->port);

	return srv;
	return srv;


err:
err:
@@ -603,6 +616,29 @@ static void ctrl_cmd_del_lookup(struct sockaddr_qrtr *from,
	}
	}
}
}


static void ns_log_msg(const struct qrtr_ctrl_pkt *pkt,
		       struct sockaddr_qrtr *sq)
{
	unsigned int cmd = le32_to_cpu(pkt->cmd);

	if (cmd == QRTR_TYPE_HELLO || cmd == QRTR_TYPE_BYE)
		NS_INFO("cmd:0x%x addr[0x%x]\n", cmd, sq->sq_node, sq->sq_port);
	else if (cmd == QRTR_TYPE_DEL_CLIENT)
		NS_INFO("cmd:0x%x addr[0x%x]\n", cmd,
			le32_to_cpu(pkt->client.node),
			le32_to_cpu(pkt->client.port));
	else if (cmd == QRTR_TYPE_NEW_SERVER || cmd == QRTR_TYPE_DEL_SERVER)
		NS_INFO("cmd:0x%x SVC[0x%x:0x%x] addr[0x%x:0x%x]\n", cmd,
			le32_to_cpu(pkt->server.service),
			le32_to_cpu(pkt->server.instance),
			le32_to_cpu(pkt->server.node),
			le32_to_cpu(pkt->server.port));
	else if (cmd == QRTR_TYPE_NEW_LOOKUP || cmd == QRTR_TYPE_DEL_LOOKUP)
		NS_INFO("cmd:0x%x SVC[0x%x:0x%x]\n", cmd,
			le32_to_cpu(pkt->server.service),
			le32_to_cpu(pkt->server.instance));
}

static void qrtr_ns_worker(struct work_struct *work)
static void qrtr_ns_worker(struct work_struct *work)
{
{
	const struct qrtr_ctrl_pkt *pkt;
	const struct qrtr_ctrl_pkt *pkt;
@@ -644,6 +680,8 @@ static void qrtr_ns_worker(struct work_struct *work)
			trace_qrtr_ns_message(qrtr_ctrl_pkt_strings[cmd],
			trace_qrtr_ns_message(qrtr_ctrl_pkt_strings[cmd],
					      sq.sq_node, sq.sq_port);
					      sq.sq_node, sq.sq_port);


		ns_log_msg(pkt, &sq);

		ret = 0;
		ret = 0;
		switch (cmd) {
		switch (cmd) {
		case QRTR_TYPE_HELLO:
		case QRTR_TYPE_HELLO:
@@ -708,6 +746,8 @@ void qrtr_ns_init(void)
	INIT_LIST_HEAD(&qrtr_ns.lookups);
	INIT_LIST_HEAD(&qrtr_ns.lookups);
	INIT_WORK(&qrtr_ns.work, qrtr_ns_worker);
	INIT_WORK(&qrtr_ns.work, qrtr_ns_worker);


	ns_ilc = ipc_log_context_create(NS_LOG_PAGE_CNT, "ns", 0);

	ret = sock_create_kern(&init_net, AF_QIPCRTR, SOCK_DGRAM,
	ret = sock_create_kern(&init_net, AF_QIPCRTR, SOCK_DGRAM,
			       PF_QIPCRTR, &qrtr_ns.sock);
			       PF_QIPCRTR, &qrtr_ns.sock);
	if (ret < 0)
	if (ret < 0)