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