From 0648c3b8f5c38bc2206758738278e074f6f5b11b Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Wed, 30 Oct 2013 19:29:58 +0100 Subject: [PATCH] hostapd: Add -T Linux tracing option 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 --- 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 c56d36876..87ff9b4fe 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 2dd6fc824..3f2924b91 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 23eef1a58..60417997b 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 /* CONFIG_DEBUG_LINUX_TRACING */ 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 /* CONFIG_DEBUG_LINUX_TRACING */ 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 /* CONFIG_DEBUG_LINUX_TRACING */ 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 e0348da06..224aec0d0 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 6ad9b5493..d2c806e67 100755 --- a/tests/hwsim/start.sh +++ b/tests/hwsim/start.sh @@ -64,7 +64,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