[PATCH v2] hostapd: add -T Linux tracing option

Johannes Berg johannes at sipsolutions.net
Wed Oct 30 14:37:39 EDT 2013


From: Johannes Berg <johannes.berg at intel.com>

Just like wpa_supplicant, give hostapd the -T option to
send all debug messages into the Linux tracing buffer.
Enable this option for hwsim test builds by default.

Signed-hostap: Johannes Berg <johannes.berg at intel.com>
---
 hostapd/Makefile                   |  4 ++++
 hostapd/defconfig                  |  6 ++++++
 hostapd/main.c                     | 24 +++++++++++++++++++++++-
 tests/hwsim/example-hostapd.config |  1 +
 tests/hwsim/start.sh               |  2 +-
 5 files changed, 35 insertions(+), 2 deletions(-)

diff --git a/hostapd/Makefile b/hostapd/Makefile
index c56d368..87ff9b4 100644
--- a/hostapd/Makefile
+++ b/hostapd/Makefile
@@ -828,6 +828,10 @@ ifdef CONFIG_NO_STDOUT_DEBUG
 CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
 endif
 
+ifdef CONFIG_DEBUG_LINUX_TRACING
+CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING
+endif
+
 ifdef CONFIG_DEBUG_FILE
 CFLAGS += -DCONFIG_DEBUG_FILE
 endif
diff --git a/hostapd/defconfig b/hostapd/defconfig
index 2dd6fc8..3f2924b 100644
--- a/hostapd/defconfig
+++ b/hostapd/defconfig
@@ -157,6 +157,12 @@ CONFIG_IPV6=y
 # Disabled by default.
 #CONFIG_DEBUG_FILE=y
 
+# Add support for sending all debug messages (regardless of debug verbosity)
+# to the Linux kernel tracing facility. This helps debug the entire stack by
+# making it easy to record everything happening from the driver up into the
+# same file, e.g., using trace-cmd.
+#CONFIG_DEBUG_LINUX_TRACING=y
+
 # Remove support for RADIUS accounting
 #CONFIG_NO_ACCOUNTING=y
 
diff --git a/hostapd/main.c b/hostapd/main.c
index 23eef1a..bb2fd4c 100644
--- a/hostapd/main.c
+++ b/hostapd/main.c
@@ -629,6 +629,10 @@ static void usage(void)
 #ifdef CONFIG_DEBUG_FILE
 		"   -f   log output to debug file instead of stdout\n"
 #endif /* CONFIG_DEBUG_FILE */
+#ifdef CONFIG_DEBUG_LINUX_TRACING
+		"  -T = record to Linux tracing in addition to logging\n"
+		"       (records all messages regardless of debug verbosity)\n"
+#endif /* CONFIG_DEBUG_LINUX_TRACING */
 		"   -t   include timestamps in some debug messages\n"
 		"   -v   show hostapd version\n");
 
@@ -697,6 +701,9 @@ int main(int argc, char *argv[])
 	const char *entropy_file = NULL;
 	char **bss_config = NULL, **tmp_bss;
 	size_t num_bss_configs = 0;
+#ifdef CONFIG_DEBUG_LINUX_TRACING
+	int enable_trace_dbg = 0;
+#endif
 
 	if (os_program_init())
 		return -1;
@@ -713,7 +720,7 @@ int main(int argc, char *argv[])
 	interfaces.global_ctrl_sock = -1;
 
 	for (;;) {
-		c = getopt(argc, argv, "b:Bde:f:hKP:tvg:G:");
+		c = getopt(argc, argv, "b:Bde:f:hKP:Ttvg:G:");
 		if (c < 0)
 			break;
 		switch (c) {
@@ -744,6 +751,11 @@ int main(int argc, char *argv[])
 		case 't':
 			wpa_debug_timestamp++;
 			break;
+#ifdef CONFIG_DEBUG_LINUX_TRACING
+		case 'T':
+			enable_trace_dbg = 1;
+			break;
+#endif
 		case 'v':
 			show_version();
 			exit(1);
@@ -779,6 +791,15 @@ int main(int argc, char *argv[])
 
 	if (log_file)
 		wpa_debug_open_file(log_file);
+#ifdef CONFIG_DEBUG_LINUX_TRACING
+	if (enable_trace_dbg) {
+		int tret = wpa_debug_open_linux_tracing();
+		if (tret) {
+			wpa_printf(MSG_ERROR, "Failed to enable trace logging");
+			return -1;
+		}
+	}
+#endif
 
 	interfaces.count = argc - optind;
 	if (interfaces.count || num_bss_configs) {
@@ -867,6 +888,7 @@ int main(int argc, char *argv[])
 
 	if (log_file)
 		wpa_debug_close_file();
+	wpa_debug_close_linux_tracing();
 
 	os_free(bss_config);
 
diff --git a/tests/hwsim/example-hostapd.config b/tests/hwsim/example-hostapd.config
index e0348da..224aec0 100644
--- a/tests/hwsim/example-hostapd.config
+++ b/tests/hwsim/example-hostapd.config
@@ -57,6 +57,7 @@ CONFIG_WPA_TRACE_BFD=y
 
 CONFIG_P2P_MANAGER=y
 CONFIG_DEBUG_FILE=y
+CONFIG_DEBUG_LINUX_TRACING=y
 CONFIG_WPA_CLI_EDIT=y
 CONFIG_ACS=y
 CONFIG_NO_RANDOM_POOL=y
diff --git a/tests/hwsim/start.sh b/tests/hwsim/start.sh
index 8185968..c82bf8a 100755
--- a/tests/hwsim/start.sh
+++ b/tests/hwsim/start.sh
@@ -65,7 +65,7 @@ for i in 0 1 2; do
     sudo $(printf -- "$VALGRIND_WPAS" $i) $WPAS -g /tmp/wpas-wlan$i -G$GROUP -Dnl80211 -iwlan$i -c $DIR/p2p$i.conf \
          $(printf -- "$CONCURRENT_ARGS" $i) -ddKt$TRACE > $LOGDIR/$DATE-log$i &
 done
-sudo $VALGRIND_HAPD $HAPD -ddKt -g /var/run/hostapd-global -G $GROUP -ddKt > $LOGDIR/$DATE-hostapd &
+sudo $VALGRIND_HAPD $HAPD -ddKt$TRACE -g /var/run/hostapd-global -G $GROUP -ddKt > $LOGDIR/$DATE-hostapd &
 
 sleep 1
 sudo chown $USER $LOGDIR/$DATE-hwsim0.dump
-- 
1.8.4.rc3



More information about the HostAP mailing list