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