1*a1157835SDaniel Fojt /*
2*a1157835SDaniel Fojt  * FST module - auxiliary 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_INTERNAL_H
10*a1157835SDaniel Fojt #define FST_INTERNAL_H
11*a1157835SDaniel Fojt 
12*a1157835SDaniel Fojt #include "utils/includes.h"
13*a1157835SDaniel Fojt #include "utils/common.h"
14*a1157835SDaniel Fojt #include "common/defs.h"
15*a1157835SDaniel Fojt #include "common/ieee802_11_defs.h"
16*a1157835SDaniel Fojt #include "fst/fst_iface.h"
17*a1157835SDaniel Fojt #include "fst/fst_group.h"
18*a1157835SDaniel Fojt #include "fst/fst_session.h"
19*a1157835SDaniel Fojt 
20*a1157835SDaniel Fojt #define fst_printf(level, format, ...) \
21*a1157835SDaniel Fojt 	wpa_printf((level), "FST: " format, ##__VA_ARGS__)
22*a1157835SDaniel Fojt 
23*a1157835SDaniel Fojt #define fst_printf_group(group, level, format, ...) \
24*a1157835SDaniel Fojt 	wpa_printf((level), "FST: %s: " format, \
25*a1157835SDaniel Fojt 		   fst_group_get_id(group), ##__VA_ARGS__)
26*a1157835SDaniel Fojt 
27*a1157835SDaniel Fojt #define fst_printf_iface(iface, level, format, ...) \
28*a1157835SDaniel Fojt 	fst_printf_group(fst_iface_get_group(iface), (level), "%s: " format, \
29*a1157835SDaniel Fojt 			 fst_iface_get_name(iface), ##__VA_ARGS__)
30*a1157835SDaniel Fojt 
31*a1157835SDaniel Fojt enum mb_band_id fst_hw_mode_to_band(enum hostapd_hw_mode mode);
32*a1157835SDaniel Fojt 
33*a1157835SDaniel Fojt struct fst_ctrl_handle {
34*a1157835SDaniel Fojt 	struct fst_ctrl ctrl;
35*a1157835SDaniel Fojt 	struct dl_list global_ctrls_lentry;
36*a1157835SDaniel Fojt };
37*a1157835SDaniel Fojt 
38*a1157835SDaniel Fojt extern struct dl_list fst_global_ctrls_list;
39*a1157835SDaniel Fojt 
40*a1157835SDaniel Fojt #define foreach_fst_ctrl_call(clb, ...) \
41*a1157835SDaniel Fojt 	do { \
42*a1157835SDaniel Fojt 		struct fst_ctrl_handle *__fst_ctrl_h; \
43*a1157835SDaniel Fojt 		dl_list_for_each(__fst_ctrl_h, &fst_global_ctrls_list, \
44*a1157835SDaniel Fojt 			struct fst_ctrl_handle, global_ctrls_lentry) \
45*a1157835SDaniel Fojt 			if (__fst_ctrl_h->ctrl.clb) \
46*a1157835SDaniel Fojt 				__fst_ctrl_h->ctrl.clb(__VA_ARGS__);\
47*a1157835SDaniel Fojt 	} while (0)
48*a1157835SDaniel Fojt 
49*a1157835SDaniel Fojt #endif /* FST_INTERNAL_H */
50