diff options
author | Arik Nemtsov <arik@wizery.com> | 2014-12-29 03:44:37 (GMT) |
---|---|---|
committer | Jouni Malinen <j@w1.fi> | 2015-01-04 16:59:31 (GMT) |
commit | 4daa572925cf380cbc0899cbcc26b09b860ea4ce (patch) | |
tree | eb82bea4fcc90ec26b14b4270b55c5223e502b22 /src/rsn_supp | |
parent | ca16586afece0de745122c46f1952b86114f2aad (diff) | |
download | hostap-4daa572925cf380cbc0899cbcc26b09b860ea4ce.zip hostap-4daa572925cf380cbc0899cbcc26b09b860ea4ce.tar.gz hostap-4daa572925cf380cbc0899cbcc26b09b860ea4ce.tar.bz2 |
TDLS: Add channel-switch capability flag
Propagate a driver TDLS channel-switch support bit from nl80211 to
TDLS code.
Signed-off-by: Arik Nemtsov <arikx.nemtsov@intel.com>
Diffstat (limited to 'src/rsn_supp')
-rw-r--r-- | src/rsn_supp/tdls.c | 5 | ||||
-rw-r--r-- | src/rsn_supp/wpa.h | 2 | ||||
-rw-r--r-- | src/rsn_supp/wpa_i.h | 8 |
3 files changed, 11 insertions, 4 deletions
diff --git a/src/rsn_supp/tdls.c b/src/rsn_supp/tdls.c index 8cb19a2..918440c 100644 --- a/src/rsn_supp/tdls.c +++ b/src/rsn_supp/tdls.c @@ -2742,7 +2742,8 @@ int wpa_tdls_init(struct wpa_sm *sm) * are assumed to perform everything internally */ if (wpa_sm_tdls_get_capa(sm, &sm->tdls_supported, - &sm->tdls_external_setup) < 0) { + &sm->tdls_external_setup, + &sm->tdls_chan_switch) < 0) { sm->tdls_supported = 1; sm->tdls_external_setup = 0; } @@ -2751,6 +2752,8 @@ int wpa_tdls_init(struct wpa_sm *sm) "driver", sm->tdls_supported ? "" : " not"); wpa_printf(MSG_DEBUG, "TDLS: Driver uses %s link setup", sm->tdls_external_setup ? "external" : "internal"); + wpa_printf(MSG_DEBUG, "TDLS: Driver %s TDLS channel switching", + sm->tdls_chan_switch ? "supports" : "does not support"); return 0; } diff --git a/src/rsn_supp/wpa.h b/src/rsn_supp/wpa.h index 355ed13..110677f 100644 --- a/src/rsn_supp/wpa.h +++ b/src/rsn_supp/wpa.h @@ -51,7 +51,7 @@ struct wpa_sm_ctx { int (*mark_authenticated)(void *ctx, const u8 *target_ap); #ifdef CONFIG_TDLS int (*tdls_get_capa)(void *ctx, int *tdls_supported, - int *tdls_ext_setup); + int *tdls_ext_setup, int *tdls_chan_switch); int (*send_tdls_mgmt)(void *ctx, const u8 *dst, u8 action_code, u8 dialog_token, u16 status_code, u32 peer_capab, diff --git a/src/rsn_supp/wpa_i.h b/src/rsn_supp/wpa_i.h index dd5ddfb..ad4ccae 100644 --- a/src/rsn_supp/wpa_i.h +++ b/src/rsn_supp/wpa_i.h @@ -102,6 +102,9 @@ struct wpa_sm { * to it via tdls_mgmt. */ int tdls_external_setup; + + /* The driver supports TDLS channel switching */ + int tdls_chan_switch; #endif /* CONFIG_TDLS */ #ifdef CONFIG_IEEE80211R @@ -257,11 +260,12 @@ static inline void wpa_sm_set_rekey_offload(struct wpa_sm *sm) #ifdef CONFIG_TDLS static inline int wpa_sm_tdls_get_capa(struct wpa_sm *sm, int *tdls_supported, - int *tdls_ext_setup) + int *tdls_ext_setup, + int *tdls_chan_switch) { if (sm->ctx->tdls_get_capa) return sm->ctx->tdls_get_capa(sm->ctx->ctx, tdls_supported, - tdls_ext_setup); + tdls_ext_setup, tdls_chan_switch); return -1; } |