Synchronized NAN DE doesn't require offchannel transmissions. Skip the radio work and offchannel transmission if freq and wait time are not provided. Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski@xxxxxxxxx> --- src/common/nan_de.c | 3 ++- wpa_supplicant/nan_supplicant.c | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/common/nan_de.c b/src/common/nan_de.c index 8917d2c5ed..ad0ec41210 100644 --- a/src/common/nan_de.c +++ b/src/common/nan_de.c @@ -351,7 +351,8 @@ static void nan_de_tx_sdf(struct nan_de *de, struct nan_de_service *srv, wpabuf_put_buf(buf, srv->elems); } - nan_de_tx(de, srv->freq, wait_time, dst, de->nmi, a3, buf); + nan_de_tx(de, srv->sync ? 0 : srv->freq, srv->sync ? 0 : wait_time, + dst, de->nmi, a3, buf); wpabuf_free(buf); } diff --git a/wpa_supplicant/nan_supplicant.c b/wpa_supplicant/nan_supplicant.c index 06ae41544a..8fca3e9fb9 100644 --- a/wpa_supplicant/nan_supplicant.c +++ b/wpa_supplicant/nan_supplicant.c @@ -267,6 +267,22 @@ static int wpas_nan_de_tx(void *ctx, unsigned int freq, unsigned int wait_time, struct wpa_supplicant *wpa_s = ctx; struct wpas_nan_tx_work *twork; + if (!freq && !wait_time) { + int ret; + + wpa_printf(MSG_DEBUG, "NAN: SYNC TX NAN SDF A1=" MACSTR " A2=" + MACSTR " A3=" MACSTR " len=%zu", + MAC2STR(dst), MAC2STR(src), MAC2STR(bssid), + wpabuf_len(buf)); + ret = wpa_drv_send_action(wpa_s, 0, 0, dst, src, bssid, + wpabuf_head(buf), wpabuf_len(buf), + 1); + if (ret) + wpa_printf(MSG_DEBUG, + "NAN: Failed to send sync action frame (%d)", + ret); + return ret; + } if (wpa_s->nan_tx_work || wpa_s->nan_usd_listen_work) { /* Reuse ongoing radio work */ return wpas_nan_de_tx_send(wpa_s, freq, wait_time, dst, src, -- 2.49.0 _______________________________________________ Hostap mailing list Hostap@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/hostap