From 0229261874c82237b70fea1bd07beb3a2e155496 Mon Sep 17 00:00:00 2001 From: Hu Wang Date: Wed, 14 Aug 2019 17:31:19 +0800 Subject: [PATCH] DFS offload: Fix hostapd state and CAC info in STATUS output With DFS offloaded to the driver, hostapd state and CAC info was not updated in DFS-CAC-START event, so STATUS output showed wrong info. Fix this by updating the CAC related state when processing the driver event. Signed-off-by: Jouni Malinen --- src/ap/dfs.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/ap/dfs.c b/src/ap/dfs.c index ac23c2b1b..2de338d45 100644 --- a/src/ap/dfs.c +++ b/src/ap/dfs.c @@ -1093,11 +1093,18 @@ int hostapd_dfs_start_cac(struct hostapd_iface *iface, int freq, int ht_enabled, int chan_offset, int chan_width, int cf1, int cf2) { + /* This is called when the driver indicates that an offloaded DFS has + * started CAC. */ + hostapd_set_state(iface, HAPD_IFACE_DFS); + /* TODO: How to check CAC time for ETSI weather channels? */ + iface->dfs_cac_ms = 60000; wpa_msg(iface->bss[0]->msg_ctx, MSG_INFO, DFS_EVENT_CAC_START "freq=%d chan=%d chan_offset=%d width=%d seg0=%d " "seg1=%d cac_time=%ds", - freq, (freq - 5000) / 5, chan_offset, chan_width, cf1, cf2, 60); + freq, (freq - 5000) / 5, chan_offset, chan_width, cf1, cf2, + iface->dfs_cac_ms / 1000); iface->cac_started = 1; + os_get_reltime(&iface->dfs_cac_start); return 0; }