1d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt/* 2d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt * FST module - miscellaneous 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 FST_CTRL_AUX_H 10d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt#define FST_CTRL_AUX_H 11d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt 12d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt#include "common/defs.h" 13d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt 14d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt/* FST module control interface API */ 15d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt#define FST_INVALID_SESSION_ID ((u32) -1) 16d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt#define FST_MAX_GROUP_ID_SIZE 32 17d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt#define FST_MAX_INTERFACE_SIZE 32 18d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt 19d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidtenum fst_session_state { 20d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt FST_SESSION_STATE_INITIAL, 21d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt FST_SESSION_STATE_SETUP_COMPLETION, 22d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt FST_SESSION_STATE_TRANSITION_DONE, 23d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt FST_SESSION_STATE_TRANSITION_CONFIRMED, 24d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt FST_SESSION_STATE_LAST 25d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt}; 26d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt 27d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidtenum fst_event_type { 28d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt EVENT_FST_IFACE_STATE_CHANGED, /* An interface has been either attached 29d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt * to or detached from an FST group */ 30d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt EVENT_FST_ESTABLISHED, /* FST Session has been established */ 31d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt EVENT_FST_SETUP, /* FST Session request received */ 32d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt EVENT_FST_SESSION_STATE_CHANGED,/* FST Session state has been changed */ 33d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt EVENT_PEER_STATE_CHANGED /* FST related generic event occurred, 34d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt * see struct fst_hostap_event_data for 35d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt * more info */ 36d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt}; 37d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt 38d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidtenum fst_initiator { 39d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt FST_INITIATOR_UNDEFINED, 40d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt FST_INITIATOR_LOCAL, 41d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt FST_INITIATOR_REMOTE, 42d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt}; 43d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt 44d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidtunion fst_event_extra { 45d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt struct fst_event_extra_iface_state { 46d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt Boolean attached; 47d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt char ifname[FST_MAX_INTERFACE_SIZE]; 48d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt char group_id[FST_MAX_GROUP_ID_SIZE]; 49d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt } iface_state; /* for EVENT_FST_IFACE_STATE_CHANGED */ 50d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt struct fst_event_extra_peer_state { 51d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt Boolean connected; 52d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt char ifname[FST_MAX_INTERFACE_SIZE]; 53d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt u8 addr[ETH_ALEN]; 54d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt } peer_state; /* for EVENT_PEER_STATE_CHANGED */ 55d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt struct fst_event_extra_session_state { 56d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt enum fst_session_state old_state; 57d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt enum fst_session_state new_state; 58d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt union fst_session_state_switch_extra { 59d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt struct { 60d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt enum fst_reason { 61d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt REASON_TEARDOWN, 62d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt REASON_SETUP, 63d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt REASON_SWITCH, 64d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt REASON_STT, 65d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt REASON_REJECT, 66d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt REASON_ERROR_PARAMS, 67d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt REASON_RESET, 68d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt REASON_DETACH_IFACE, 69d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt } reason; 70d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt u8 reject_code; /* REASON_REJECT */ 71d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt /* REASON_SWITCH, 72d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt * REASON_TEARDOWN, 73d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt * REASON_REJECT 74d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt */ 75d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt enum fst_initiator initiator; 76d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt } to_initial; 77d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt } extra; 78d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt } session_state; /* for EVENT_FST_SESSION_STATE_CHANGED */ 79d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt}; 80d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt 81d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt/* helpers - prints enum in string form */ 82d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt#define FST_NAME_UNKNOWN "UNKNOWN" 83d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt 84d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidtconst char * fst_get_str_name(unsigned index, const char *names[], 85d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt size_t names_size); 86d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt 87d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidtconst char * fst_session_event_type_name(enum fst_event_type); 88d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidtconst char * fst_reason_name(enum fst_reason reason); 89d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidtconst char * fst_session_state_name(enum fst_session_state state); 90d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt 91d80a401aed31d06f261efd19223cf55d1a2a8228Dmitry Shmidt#endif /* FST_CTRL_AUX_H */ 92