2021-04-14 04:48:23

by Tedd Ho-Jeong An

[permalink] [raw]
Subject: [PATCH 1/2] monitor: Add control packet count to analyze command

From: Tedd Ho-Jeong An <[email protected]>

This patch adds control packets(open, close, command, event) count to
analyze command.
---
monitor/analyze.c | 68 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 68 insertions(+)

diff --git a/monitor/analyze.c b/monitor/analyze.c
index 784f9a0a4..022761c21 100644
--- a/monitor/analyze.c
+++ b/monitor/analyze.c
@@ -37,6 +37,10 @@ struct hci_dev {
unsigned long vendor_diag;
unsigned long system_note;
unsigned long user_log;
+ unsigned long ctrl_open;
+ unsigned long ctrl_close;
+ unsigned long ctrl_cmd;
+ unsigned long ctrl_evt;
unsigned long unknown;
uint16_t manufacturer;
};
@@ -76,6 +80,10 @@ static void dev_destroy(void *data)
printf(" %lu vendor diagnostics\n", dev->vendor_diag);
printf(" %lu system notes\n", dev->system_note);
printf(" %lu user logs\n", dev->user_log);
+ printf(" %lu control open\n", dev->ctrl_open);
+ printf(" %lu control close\n", dev->ctrl_close);
+ printf(" %lu control commands\n", dev->ctrl_cmd);
+ printf(" %lu control events\n", dev->ctrl_evt);
printf(" %lu unknown opcodes\n", dev->unknown);
printf("\n");

@@ -299,6 +307,54 @@ static void user_log(struct timeval *tv, uint16_t index,
dev->user_log++;
}

+static void ctrl_open(struct timeval *tv, uint16_t index,
+ const void *data, uint16_t size)
+{
+ struct hci_dev *dev;
+
+ dev = dev_lookup(index);
+ if (!dev)
+ return;
+
+ dev->ctrl_open++;
+}
+
+static void ctrl_close(struct timeval *tv, uint16_t index,
+ const void *data, uint16_t size)
+{
+ struct hci_dev *dev;
+
+ dev = dev_lookup(index);
+ if (!dev)
+ return;
+
+ dev->ctrl_close++;
+}
+
+static void ctrl_cmd(struct timeval *tv, uint16_t index,
+ const void *data, uint16_t size)
+{
+ struct hci_dev *dev;
+
+ dev = dev_lookup(index);
+ if (!dev)
+ return;
+
+ dev->ctrl_cmd++;
+}
+
+static void ctrl_evt(struct timeval *tv, uint16_t index,
+ const void *data, uint16_t size)
+{
+ struct hci_dev *dev;
+
+ dev = dev_lookup(index);
+ if (!dev)
+ return;
+
+ dev->ctrl_evt++;
+}
+
static void unknown_opcode(struct timeval *tv, uint16_t index,
const void *data, uint16_t size)
{
@@ -380,6 +436,18 @@ void analyze_trace(const char *path)
case BTSNOOP_OPCODE_USER_LOGGING:
user_log(&tv, index, buf, pktlen);
break;
+ case BTSNOOP_OPCODE_CTRL_OPEN:
+ ctrl_open(&tv, index, buf, pktlen);
+ break;
+ case BTSNOOP_OPCODE_CTRL_CLOSE:
+ ctrl_close(&tv, index, buf, pktlen);
+ break;
+ case BTSNOOP_OPCODE_CTRL_COMMAND:
+ ctrl_cmd(&tv, index, buf, pktlen);
+ break;
+ case BTSNOOP_OPCODE_CTRL_EVENT:
+ ctrl_evt(&tv, index, buf, pktlen);
+ break;
default:
fprintf(stderr, "Unknown opcode %u\n", opcode);
unknown_opcode(&tv, index, buf, pktlen);
--
2.25.1