1325151a3SRui Paulo /* 2325151a3SRui Paulo * FST module - FST related definitions 3325151a3SRui Paulo * Copyright (c) 2014, Qualcomm Atheros, Inc. 4325151a3SRui Paulo * 5325151a3SRui Paulo * This software may be distributed under the terms of the BSD license. 6325151a3SRui Paulo * See README for more details. 7325151a3SRui Paulo */ 8325151a3SRui Paulo 9325151a3SRui Paulo #ifndef IEEE_80211_FST_DEFS_H 10325151a3SRui Paulo #define IEEE_80211_FST_DEFS_H 11325151a3SRui Paulo 12325151a3SRui Paulo /* IEEE Std 802.11ad */ 13325151a3SRui Paulo 14325151a3SRui Paulo #define MB_STA_CHANNEL_ALL 0 15325151a3SRui Paulo 16325151a3SRui Paulo enum session_type { 17325151a3SRui Paulo SESSION_TYPE_BSS = 0, /* Infrastructure BSS */ 18325151a3SRui Paulo SESSION_TYPE_IBSS = 1, 19325151a3SRui Paulo SESSION_TYPE_DLS = 2, 20325151a3SRui Paulo SESSION_TYPE_TDLS = 3, 21325151a3SRui Paulo SESSION_TYPE_PBSS = 4 22325151a3SRui Paulo }; 23325151a3SRui Paulo 24325151a3SRui Paulo #define SESSION_CONTROL(session_type, switch_intent) \ 25325151a3SRui Paulo (((u8) ((session_type) & 0x7)) | ((switch_intent) ? 0x10 : 0x00)) 26325151a3SRui Paulo 27325151a3SRui Paulo #define GET_SESSION_CONTROL_TYPE(session_control) \ 28325151a3SRui Paulo ((u8) ((session_control) & 0x7)) 29325151a3SRui Paulo 30325151a3SRui Paulo #define GET_SESSION_CONTROL_SWITCH_INTENT(session_control) \ 31325151a3SRui Paulo (((session_control) & 0x10) >> 4) 32325151a3SRui Paulo 33325151a3SRui Paulo /* 8.4.2.147 Session Transition element */ 34325151a3SRui Paulo struct session_transition_ie { 35325151a3SRui Paulo u8 element_id; 36325151a3SRui Paulo u8 length; 37*780fb4a2SCy Schubert le32 fsts_id; 38325151a3SRui Paulo u8 session_control; 39325151a3SRui Paulo u8 new_band_id; 40325151a3SRui Paulo u8 new_band_setup; 41325151a3SRui Paulo u8 new_band_op; 42325151a3SRui Paulo u8 old_band_id; 43325151a3SRui Paulo u8 old_band_setup; 44325151a3SRui Paulo u8 old_band_op; 45325151a3SRui Paulo } STRUCT_PACKED; 46325151a3SRui Paulo 47325151a3SRui Paulo struct fst_setup_req { 48325151a3SRui Paulo u8 action; 49325151a3SRui Paulo u8 dialog_token; 50*780fb4a2SCy Schubert le32 llt; 51325151a3SRui Paulo struct session_transition_ie stie; 52325151a3SRui Paulo /* Multi-band (optional) */ 53325151a3SRui Paulo /* Wakeup Schedule (optional) */ 54325151a3SRui Paulo /* Awake Window (optional) */ 55325151a3SRui Paulo /* Switching Stream (optional) */ 56325151a3SRui Paulo } STRUCT_PACKED; 57325151a3SRui Paulo 58325151a3SRui Paulo struct fst_setup_res { 59325151a3SRui Paulo u8 action; 60325151a3SRui Paulo u8 dialog_token; 61325151a3SRui Paulo u8 status_code; 62325151a3SRui Paulo struct session_transition_ie stie; 63325151a3SRui Paulo /* Multi-band (optional) */ 64325151a3SRui Paulo /* Wakeup Schedule (optional) */ 65325151a3SRui Paulo /* Awake Window (optional) */ 66325151a3SRui Paulo /* Switching Stream (optional) */ 67325151a3SRui Paulo /* Timeout Interval (optional) */ 68325151a3SRui Paulo } STRUCT_PACKED; 69325151a3SRui Paulo 70325151a3SRui Paulo struct fst_ack_req { 71325151a3SRui Paulo u8 action; 72325151a3SRui Paulo u8 dialog_token; 73*780fb4a2SCy Schubert le32 fsts_id; 74325151a3SRui Paulo } STRUCT_PACKED; 75325151a3SRui Paulo 76325151a3SRui Paulo struct fst_ack_res { 77325151a3SRui Paulo u8 action; 78325151a3SRui Paulo u8 dialog_token; 79*780fb4a2SCy Schubert le32 fsts_id; 80325151a3SRui Paulo } STRUCT_PACKED; 81325151a3SRui Paulo 82325151a3SRui Paulo struct fst_tear_down { 83325151a3SRui Paulo u8 action; 84*780fb4a2SCy Schubert le32 fsts_id; 85325151a3SRui Paulo } STRUCT_PACKED; 86325151a3SRui Paulo 87325151a3SRui Paulo #endif /* IEEE_80211_FST_DEFS_H */ 88