1e5b75505Sopenharmony_ci/* 2e5b75505Sopenharmony_ci * FST module - FST Session related definitions 3e5b75505Sopenharmony_ci * Copyright (c) 2014, Qualcomm Atheros, Inc. 4e5b75505Sopenharmony_ci * 5e5b75505Sopenharmony_ci * This software may be distributed under the terms of the BSD license. 6e5b75505Sopenharmony_ci * See README for more details. 7e5b75505Sopenharmony_ci */ 8e5b75505Sopenharmony_ci 9e5b75505Sopenharmony_ci#ifndef FST_SESSION_H 10e5b75505Sopenharmony_ci#define FST_SESSION_H 11e5b75505Sopenharmony_ci 12e5b75505Sopenharmony_ci#define FST_DEFAULT_SESSION_TIMEOUT_TU 255 /* u8 */ 13e5b75505Sopenharmony_ci 14e5b75505Sopenharmony_cistruct fst_iface; 15e5b75505Sopenharmony_cistruct fst_group; 16e5b75505Sopenharmony_cistruct fst_session; 17e5b75505Sopenharmony_cienum fst_session_state; 18e5b75505Sopenharmony_ci 19e5b75505Sopenharmony_ciint fst_session_global_init(void); 20e5b75505Sopenharmony_civoid fst_session_global_deinit(void); 21e5b75505Sopenharmony_civoid fst_session_global_on_iface_detached(struct fst_iface *iface); 22e5b75505Sopenharmony_cistruct fst_session * 23e5b75505Sopenharmony_cifst_session_global_get_first_by_group(struct fst_group *g); 24e5b75505Sopenharmony_ci 25e5b75505Sopenharmony_cistruct fst_session * fst_session_create(struct fst_group *g); 26e5b75505Sopenharmony_civoid fst_session_set_iface(struct fst_session *s, struct fst_iface *iface, 27e5b75505Sopenharmony_ci Boolean is_old); 28e5b75505Sopenharmony_civoid fst_session_set_llt(struct fst_session *s, u32 llt); 29e5b75505Sopenharmony_civoid fst_session_set_peer_addr(struct fst_session *s, const u8 *addr, 30e5b75505Sopenharmony_ci Boolean is_old); 31e5b75505Sopenharmony_ciint fst_session_initiate_setup(struct fst_session *s); 32e5b75505Sopenharmony_ciint fst_session_respond(struct fst_session *s, u8 status_code); 33e5b75505Sopenharmony_ciint fst_session_initiate_switch(struct fst_session *s); 34e5b75505Sopenharmony_civoid fst_session_handle_action(struct fst_session *s, struct fst_iface *iface, 35e5b75505Sopenharmony_ci const struct ieee80211_mgmt *mgmt, 36e5b75505Sopenharmony_ci size_t frame_len); 37e5b75505Sopenharmony_ciint fst_session_tear_down_setup(struct fst_session *s); 38e5b75505Sopenharmony_civoid fst_session_reset(struct fst_session *s); 39e5b75505Sopenharmony_civoid fst_session_delete(struct fst_session *s); 40e5b75505Sopenharmony_ci 41e5b75505Sopenharmony_cistruct fst_group * fst_session_get_group(struct fst_session *s); 42e5b75505Sopenharmony_cistruct fst_iface * fst_session_get_iface(struct fst_session *s, Boolean is_old); 43e5b75505Sopenharmony_ciconst u8 * fst_session_get_peer_addr(struct fst_session *s, Boolean is_old); 44e5b75505Sopenharmony_ciu32 fst_session_get_id(struct fst_session *s); 45e5b75505Sopenharmony_ciu32 fst_session_get_llt(struct fst_session *s); 46e5b75505Sopenharmony_cienum fst_session_state fst_session_get_state(struct fst_session *s); 47e5b75505Sopenharmony_ci 48e5b75505Sopenharmony_cistruct fst_session *fst_session_get_by_id(u32 id); 49e5b75505Sopenharmony_ci 50e5b75505Sopenharmony_citypedef void (*fst_session_enum_clb)(struct fst_group *g, struct fst_session *s, 51e5b75505Sopenharmony_ci void *ctx); 52e5b75505Sopenharmony_ci 53e5b75505Sopenharmony_civoid fst_session_enum(struct fst_group *g, fst_session_enum_clb clb, void *ctx); 54e5b75505Sopenharmony_ci 55e5b75505Sopenharmony_civoid fst_session_on_action_rx(struct fst_iface *iface, 56e5b75505Sopenharmony_ci const struct ieee80211_mgmt *mgmt, size_t len); 57e5b75505Sopenharmony_ci 58e5b75505Sopenharmony_ci 59e5b75505Sopenharmony_ciint fst_session_set_str_ifname(struct fst_session *s, const char *ifname, 60e5b75505Sopenharmony_ci Boolean is_old); 61e5b75505Sopenharmony_ciint fst_session_set_str_peer_addr(struct fst_session *s, const char *mac, 62e5b75505Sopenharmony_ci Boolean is_old); 63e5b75505Sopenharmony_ciint fst_session_set_str_llt(struct fst_session *s, const char *llt_str); 64e5b75505Sopenharmony_ci 65e5b75505Sopenharmony_ci#ifdef CONFIG_FST_TEST 66e5b75505Sopenharmony_ci 67e5b75505Sopenharmony_ci#define FST_FSTS_ID_NOT_FOUND ((u32) -1) 68e5b75505Sopenharmony_ci 69e5b75505Sopenharmony_ciint fst_test_req_send_fst_request(const char *params); 70e5b75505Sopenharmony_ciint fst_test_req_send_fst_response(const char *params); 71e5b75505Sopenharmony_ciint fst_test_req_send_ack_request(const char *params); 72e5b75505Sopenharmony_ciint fst_test_req_send_ack_response(const char *params); 73e5b75505Sopenharmony_ciint fst_test_req_send_tear_down(const char *params); 74e5b75505Sopenharmony_ciu32 fst_test_req_get_fsts_id(const char *params); 75e5b75505Sopenharmony_ciint fst_test_req_get_local_mbies(const char *request, char *buf, 76e5b75505Sopenharmony_ci size_t buflen); 77e5b75505Sopenharmony_ci 78e5b75505Sopenharmony_ci#endif /* CONFIG_FST_TEST */ 79e5b75505Sopenharmony_ci 80e5b75505Sopenharmony_ci#endif /* FST_SESSION_H */ 81