xref: /freebsd/contrib/wpa/src/fst/fst_defs.h (revision 780fb4a2fa9a9aee5ac48a60b790f567c0dc13e9)
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