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
16enum 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 */
34struct 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
47struct 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
58struct 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
70struct fst_ack_req {
71	u8 action;
72	u8 dialog_token;
73	u32 fsts_id;
74} STRUCT_PACKED;
75
76struct fst_ack_res {
77	u8 action;
78	u8 dialog_token;
79	u32 fsts_id;
80} STRUCT_PACKED;
81
82struct fst_tear_down {
83	u8 action;
84	u32 fsts_id;
85} STRUCT_PACKED;
86
87#endif /* IEEE_80211_FST_DEFS_H */
88