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