1/* 2 * FST module - FST Session 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 FST_SESSION_H 10#define FST_SESSION_H 11 12#define FST_DEFAULT_SESSION_TIMEOUT_TU 255 /* u8 */ 13 14struct fst_iface; 15struct fst_group; 16struct fst_session; 17enum fst_session_state; 18 19int fst_session_global_init(void); 20void fst_session_global_deinit(void); 21void fst_session_global_on_iface_detached(struct fst_iface *iface); 22struct fst_session * 23fst_session_global_get_first_by_group(struct fst_group *g); 24 25struct fst_session * fst_session_create(struct fst_group *g); 26void fst_session_set_iface(struct fst_session *s, struct fst_iface *iface, 27 Boolean is_old); 28void fst_session_set_llt(struct fst_session *s, u32 llt); 29void fst_session_set_peer_addr(struct fst_session *s, const u8 *addr, 30 Boolean is_old); 31int fst_session_initiate_setup(struct fst_session *s); 32int fst_session_respond(struct fst_session *s, u8 status_code); 33int fst_session_initiate_switch(struct fst_session *s); 34void fst_session_handle_action(struct fst_session *s, struct fst_iface *iface, 35 const struct ieee80211_mgmt *mgmt, 36 size_t frame_len); 37int fst_session_tear_down_setup(struct fst_session *s); 38void fst_session_reset(struct fst_session *s); 39void fst_session_delete(struct fst_session *s); 40 41struct fst_group * fst_session_get_group(struct fst_session *s); 42struct fst_iface * fst_session_get_iface(struct fst_session *s, Boolean is_old); 43const u8 * fst_session_get_peer_addr(struct fst_session *s, Boolean is_old); 44u32 fst_session_get_id(struct fst_session *s); 45u32 fst_session_get_llt(struct fst_session *s); 46enum fst_session_state fst_session_get_state(struct fst_session *s); 47 48struct fst_session *fst_session_get_by_id(u32 id); 49 50typedef void (*fst_session_enum_clb)(struct fst_group *g, struct fst_session *s, 51 void *ctx); 52 53void fst_session_enum(struct fst_group *g, fst_session_enum_clb clb, void *ctx); 54 55void fst_session_on_action_rx(struct fst_iface *iface, 56 const struct ieee80211_mgmt *mgmt, size_t len); 57 58 59int fst_session_set_str_ifname(struct fst_session *s, const char *ifname, 60 Boolean is_old); 61int fst_session_set_str_peer_addr(struct fst_session *s, const char *mac, 62 Boolean is_old); 63int fst_session_set_str_llt(struct fst_session *s, const char *llt_str); 64 65#ifdef CONFIG_FST_TEST 66 67#define FST_FSTS_ID_NOT_FOUND ((u32) -1) 68 69int fst_test_req_send_fst_request(const char *params); 70int fst_test_req_send_fst_response(const char *params); 71int fst_test_req_send_ack_request(const char *params); 72int fst_test_req_send_ack_response(const char *params); 73int fst_test_req_send_tear_down(const char *params); 74u32 fst_test_req_get_fsts_id(const char *params); 75int fst_test_req_get_local_mbies(const char *request, char *buf, 76 size_t buflen); 77 78#endif /* CONFIG_FST_TEST */ 79 80#endif /* FST_SESSION_H */ 81