Updated through tag hostap_2_5 from git://w1.fi/hostap.git
[mech_eap.git] / libeap / src / fst / fst_defs.h
1 /*
2  * FST module - FST related definitions
3  * Copyright (c) 2014, Qualcomm Atheros, Inc.
4  *
5  * This software may be distributed under the terms of the BSD license.
6  * See README for more details.
7  */
8
9 #ifndef IEEE_80211_FST_DEFS_H
10 #define IEEE_80211_FST_DEFS_H
11
12 /* IEEE Std 802.11ad */
13
14 #define MB_STA_CHANNEL_ALL 0
15
16 enum session_type {
17         SESSION_TYPE_BSS = 0, /*  Infrastructure BSS */
18         SESSION_TYPE_IBSS = 1,
19         SESSION_TYPE_DLS = 2,
20         SESSION_TYPE_TDLS = 3,
21         SESSION_TYPE_PBSS = 4
22 };
23
24 #define SESSION_CONTROL(session_type, switch_intent) \
25         (((u8) ((session_type) & 0x7)) | ((switch_intent) ? 0x10 : 0x00))
26
27 #define GET_SESSION_CONTROL_TYPE(session_control) \
28         ((u8) ((session_control) & 0x7))
29
30 #define GET_SESSION_CONTROL_SWITCH_INTENT(session_control) \
31         (((session_control) & 0x10) >> 4)
32
33 /* 8.4.2.147  Session Transition element */
34 struct session_transition_ie {
35         u8 element_id;
36         u8 length;
37         u32 fsts_id;
38         u8 session_control;
39         u8 new_band_id;
40         u8 new_band_setup;
41         u8 new_band_op;
42         u8 old_band_id;
43         u8 old_band_setup;
44         u8 old_band_op;
45 } STRUCT_PACKED;
46
47 struct fst_setup_req {
48         u8 action;
49         u8 dialog_token;
50         u32 llt;
51         struct session_transition_ie stie;
52         /* Multi-band (optional) */
53         /* Wakeup Schedule (optional) */
54         /* Awake Window (optional) */
55         /* Switching Stream (optional) */
56 } STRUCT_PACKED;
57
58 struct fst_setup_res {
59         u8 action;
60         u8 dialog_token;
61         u8 status_code;
62         struct session_transition_ie stie;
63         /* Multi-band (optional) */
64         /* Wakeup Schedule (optional) */
65         /* Awake Window (optional) */
66         /* Switching Stream (optional) */
67         /* Timeout Interval (optional) */
68 } STRUCT_PACKED;
69
70 struct fst_ack_req {
71         u8 action;
72         u8 dialog_token;
73         u32 fsts_id;
74 } STRUCT_PACKED;
75
76 struct fst_ack_res {
77         u8 action;
78         u8 dialog_token;
79         u32 fsts_id;
80 } STRUCT_PACKED;
81
82 struct fst_tear_down {
83         u8 action;
84         u32 fsts_id;
85 } STRUCT_PACKED;
86
87 #endif /* IEEE_80211_FST_DEFS_H */