xref: /aosp_15_r20/external/wpa_supplicant_8/src/fst/fst.h (revision 03f9172ca588f91df233974f4258bab95191f931)
1*03f9172cSAndroid Build Coastguard Worker /*
2*03f9172cSAndroid Build Coastguard Worker  * FST module - interface definitions
3*03f9172cSAndroid Build Coastguard Worker  * Copyright (c) 2014, Qualcomm Atheros, Inc.
4*03f9172cSAndroid Build Coastguard Worker  *
5*03f9172cSAndroid Build Coastguard Worker  * This software may be distributed under the terms of the BSD license.
6*03f9172cSAndroid Build Coastguard Worker  * See README for more details.
7*03f9172cSAndroid Build Coastguard Worker  */
8*03f9172cSAndroid Build Coastguard Worker 
9*03f9172cSAndroid Build Coastguard Worker #ifndef FST_H
10*03f9172cSAndroid Build Coastguard Worker #define FST_H
11*03f9172cSAndroid Build Coastguard Worker 
12*03f9172cSAndroid Build Coastguard Worker #ifdef CONFIG_FST
13*03f9172cSAndroid Build Coastguard Worker 
14*03f9172cSAndroid Build Coastguard Worker #include "common/defs.h"
15*03f9172cSAndroid Build Coastguard Worker #include "fst/fst_ctrl_iface.h"
16*03f9172cSAndroid Build Coastguard Worker 
17*03f9172cSAndroid Build Coastguard Worker /* FST module hostap integration API */
18*03f9172cSAndroid Build Coastguard Worker 
19*03f9172cSAndroid Build Coastguard Worker #define US_IN_MS           1000
20*03f9172cSAndroid Build Coastguard Worker #define LLT_UNIT_US        32 /* See 10.32.2.2  Transitioning between states */
21*03f9172cSAndroid Build Coastguard Worker 
22*03f9172cSAndroid Build Coastguard Worker /*
23*03f9172cSAndroid Build Coastguard Worker  * These were originally
24*03f9172cSAndroid Build Coastguard Worker  * #define FST_LLT_MS_TO_VAL(m) (((u32) (m)) * US_IN_MS / LLT_UNIT_US)
25*03f9172cSAndroid Build Coastguard Worker  * #define FST_LLT_VAL_TO_MS(v) (((u32) (v)) * LLT_UNIT_US / US_IN_MS)
26*03f9172cSAndroid Build Coastguard Worker  * #define FST_MAX_LLT_MS FST_LLT_VAL_TO_MS(-1)
27*03f9172cSAndroid Build Coastguard Worker  * but those can overflow 32-bit unsigned integer, so use alternative defines
28*03f9172cSAndroid Build Coastguard Worker  * to avoid undefined behavior with such overflow.
29*03f9172cSAndroid Build Coastguard Worker  * LLT_UNIT_US/US_IN_MS = 32/1000 = 4/125
30*03f9172cSAndroid Build Coastguard Worker  */
31*03f9172cSAndroid Build Coastguard Worker #define FST_LLT_MS_TO_VAL(m) (((u32) (m)) * 125 / 4)
32*03f9172cSAndroid Build Coastguard Worker #define FST_LLT_VAL_TO_MS(v) (((u32) (v)) * 4 / 125)
33*03f9172cSAndroid Build Coastguard Worker #define FST_MAX_LLT_MS       (((u32) -1) / 4)
34*03f9172cSAndroid Build Coastguard Worker #define FST_MAX_PRIO_VALUE   ((u8) -1)
35*03f9172cSAndroid Build Coastguard Worker #define FST_MAX_GROUP_ID_LEN IFNAMSIZ
36*03f9172cSAndroid Build Coastguard Worker 
37*03f9172cSAndroid Build Coastguard Worker #define FST_DEFAULT_LLT_CFG_VALUE 50
38*03f9172cSAndroid Build Coastguard Worker 
39*03f9172cSAndroid Build Coastguard Worker struct hostapd_hw_modes;
40*03f9172cSAndroid Build Coastguard Worker struct ieee80211_mgmt;
41*03f9172cSAndroid Build Coastguard Worker struct fst_iface;
42*03f9172cSAndroid Build Coastguard Worker struct fst_group;
43*03f9172cSAndroid Build Coastguard Worker struct fst_session;
44*03f9172cSAndroid Build Coastguard Worker struct fst_get_peer_ctx;
45*03f9172cSAndroid Build Coastguard Worker struct fst_ctrl_handle;
46*03f9172cSAndroid Build Coastguard Worker 
47*03f9172cSAndroid Build Coastguard Worker struct fst_wpa_obj {
48*03f9172cSAndroid Build Coastguard Worker 	void *ctx;
49*03f9172cSAndroid Build Coastguard Worker 
50*03f9172cSAndroid Build Coastguard Worker 	/**
51*03f9172cSAndroid Build Coastguard Worker 	 * get_bssid - Get BSSID of the interface
52*03f9172cSAndroid Build Coastguard Worker 	 * @ctx: User context %ctx
53*03f9172cSAndroid Build Coastguard Worker 	 * Returns: BSSID for success, %NULL for failure.
54*03f9172cSAndroid Build Coastguard Worker 	 *
55*03f9172cSAndroid Build Coastguard Worker 	 * NOTE: For AP it returns the own BSSID, while for STA - the BSSID of
56*03f9172cSAndroid Build Coastguard Worker 	 * the associated AP.
57*03f9172cSAndroid Build Coastguard Worker 	 */
58*03f9172cSAndroid Build Coastguard Worker 	const u8 * (*get_bssid)(void *ctx);
59*03f9172cSAndroid Build Coastguard Worker 
60*03f9172cSAndroid Build Coastguard Worker 	/**
61*03f9172cSAndroid Build Coastguard Worker 	 * get_channel_info - Get current channel info
62*03f9172cSAndroid Build Coastguard Worker 	 * @ctx: User context %ctx
63*03f9172cSAndroid Build Coastguard Worker 	 * @hw_mode: OUT, current HW mode
64*03f9172cSAndroid Build Coastguard Worker 	 * @channel: OUT, current channel
65*03f9172cSAndroid Build Coastguard Worker 	 */
66*03f9172cSAndroid Build Coastguard Worker 	void (*get_channel_info)(void *ctx, enum hostapd_hw_mode *hw_mode,
67*03f9172cSAndroid Build Coastguard Worker 				 u8 *channel);
68*03f9172cSAndroid Build Coastguard Worker 
69*03f9172cSAndroid Build Coastguard Worker 	/**
70*03f9172cSAndroid Build Coastguard Worker 	 * get_hw_modes - Get hardware modes
71*03f9172cSAndroid Build Coastguard Worker 	 * @ctx: User context %ctx
72*03f9172cSAndroid Build Coastguard Worker 	 * @modes: OUT, pointer on array of hw modes
73*03f9172cSAndroid Build Coastguard Worker 	 *
74*03f9172cSAndroid Build Coastguard Worker 	 * Returns: Number of hw modes available.
75*03f9172cSAndroid Build Coastguard Worker 	 */
76*03f9172cSAndroid Build Coastguard Worker 	int (*get_hw_modes)(void *ctx, struct hostapd_hw_modes **modes);
77*03f9172cSAndroid Build Coastguard Worker 
78*03f9172cSAndroid Build Coastguard Worker 	/**
79*03f9172cSAndroid Build Coastguard Worker 	 * set_ies - Set interface's MB IE
80*03f9172cSAndroid Build Coastguard Worker 	 * @ctx: User context %ctx
81*03f9172cSAndroid Build Coastguard Worker 	 * @fst_ies: MB IE buffer (owned by FST module)
82*03f9172cSAndroid Build Coastguard Worker 	 */
83*03f9172cSAndroid Build Coastguard Worker 	void (*set_ies)(void *ctx, const struct wpabuf *fst_ies);
84*03f9172cSAndroid Build Coastguard Worker 
85*03f9172cSAndroid Build Coastguard Worker 	/**
86*03f9172cSAndroid Build Coastguard Worker 	 * send_action - Send FST Action frame via the interface
87*03f9172cSAndroid Build Coastguard Worker 	 * @ctx: User context %ctx
88*03f9172cSAndroid Build Coastguard Worker 	 * @addr: Address of the destination STA
89*03f9172cSAndroid Build Coastguard Worker 	 * @data: Action frame buffer
90*03f9172cSAndroid Build Coastguard Worker 	 * Returns: 0 for success, negative error code for failure.
91*03f9172cSAndroid Build Coastguard Worker 	 */
92*03f9172cSAndroid Build Coastguard Worker 	int (*send_action)(void *ctx, const u8 *addr, struct wpabuf *data);
93*03f9172cSAndroid Build Coastguard Worker 
94*03f9172cSAndroid Build Coastguard Worker 	/**
95*03f9172cSAndroid Build Coastguard Worker 	 * get_mb_ie - Get last MB IE received from STA
96*03f9172cSAndroid Build Coastguard Worker 	 * @ctx: User context %ctx
97*03f9172cSAndroid Build Coastguard Worker 	 * @addr: Address of the STA
98*03f9172cSAndroid Build Coastguard Worker 	 * Returns: MB IE buffer, %NULL if no MB IE received from the STA
99*03f9172cSAndroid Build Coastguard Worker 	 */
100*03f9172cSAndroid Build Coastguard Worker 	const struct wpabuf * (*get_mb_ie)(void *ctx, const u8 *addr);
101*03f9172cSAndroid Build Coastguard Worker 
102*03f9172cSAndroid Build Coastguard Worker 	/**
103*03f9172cSAndroid Build Coastguard Worker 	 * update_mb_ie - Update last MB IE received from STA
104*03f9172cSAndroid Build Coastguard Worker 	 * @ctx: User context %ctx
105*03f9172cSAndroid Build Coastguard Worker 	 * @addr: Address of the STA
106*03f9172cSAndroid Build Coastguard Worker 	 * @buf: Buffer that contains the MB IEs data
107*03f9172cSAndroid Build Coastguard Worker 	 * @size: Size of data in %buf
108*03f9172cSAndroid Build Coastguard Worker 	 */
109*03f9172cSAndroid Build Coastguard Worker 	void (*update_mb_ie)(void *ctx, const u8 *addr,
110*03f9172cSAndroid Build Coastguard Worker 			     const u8 *buf, size_t size);
111*03f9172cSAndroid Build Coastguard Worker 
112*03f9172cSAndroid Build Coastguard Worker 	/**
113*03f9172cSAndroid Build Coastguard Worker 	 * get_peer_first - Get MAC address of the 1st connected STA
114*03f9172cSAndroid Build Coastguard Worker 	 * @ctx: User context %ctx
115*03f9172cSAndroid Build Coastguard Worker 	 * @get_ctx: Context to be used for %get_peer_next call
116*03f9172cSAndroid Build Coastguard Worker 	 * @mb_only: %true if only multi-band capable peer should be reported
117*03f9172cSAndroid Build Coastguard Worker 	 * Returns: Address of the 1st connected STA, %NULL if no STAs connected
118*03f9172cSAndroid Build Coastguard Worker 	 */
119*03f9172cSAndroid Build Coastguard Worker 	const u8 * (*get_peer_first)(void *ctx,
120*03f9172cSAndroid Build Coastguard Worker 				     struct fst_get_peer_ctx **get_ctx,
121*03f9172cSAndroid Build Coastguard Worker 				     bool mb_only);
122*03f9172cSAndroid Build Coastguard Worker 	/**
123*03f9172cSAndroid Build Coastguard Worker 	 * get_peer_next - Get MAC address of the next connected STA
124*03f9172cSAndroid Build Coastguard Worker 	 * @ctx: User context %ctx
125*03f9172cSAndroid Build Coastguard Worker 	 * @get_ctx: Context received from %get_peer_first or previous
126*03f9172cSAndroid Build Coastguard Worker 	 *           %get_peer_next call
127*03f9172cSAndroid Build Coastguard Worker 	 * @mb_only: %true if only multi-band capable peer should be reported
128*03f9172cSAndroid Build Coastguard Worker 	 * Returns: Address of the next connected STA, %NULL if no more STAs
129*03f9172cSAndroid Build Coastguard Worker 	 *          connected
130*03f9172cSAndroid Build Coastguard Worker 	 */
131*03f9172cSAndroid Build Coastguard Worker 	const u8 * (*get_peer_next)(void *ctx,
132*03f9172cSAndroid Build Coastguard Worker 				    struct fst_get_peer_ctx **get_ctx,
133*03f9172cSAndroid Build Coastguard Worker 				    bool mb_only);
134*03f9172cSAndroid Build Coastguard Worker };
135*03f9172cSAndroid Build Coastguard Worker 
136*03f9172cSAndroid Build Coastguard Worker /**
137*03f9172cSAndroid Build Coastguard Worker  * fst_global_init - Global FST module initiator
138*03f9172cSAndroid Build Coastguard Worker  * Returns: 0 for success, negative error code for failure.
139*03f9172cSAndroid Build Coastguard Worker  * Note: The purpose of this function is to allocate and initiate global
140*03f9172cSAndroid Build Coastguard Worker  *       FST module data structures (linked lists, static data etc.)
141*03f9172cSAndroid Build Coastguard Worker  *       This function should be called prior to the 1st %fst_attach call.
142*03f9172cSAndroid Build Coastguard Worker  */
143*03f9172cSAndroid Build Coastguard Worker int fst_global_init(void);
144*03f9172cSAndroid Build Coastguard Worker 
145*03f9172cSAndroid Build Coastguard Worker /**
146*03f9172cSAndroid Build Coastguard Worker  * fst_global_deinit - Global FST module de-initiator
147*03f9172cSAndroid Build Coastguard Worker  * Note: The purpose of this function is to deallocate and de-initiate global
148*03f9172cSAndroid Build Coastguard Worker  *       FST module data structures (linked lists, static data etc.)
149*03f9172cSAndroid Build Coastguard Worker  */
150*03f9172cSAndroid Build Coastguard Worker void fst_global_deinit(void);
151*03f9172cSAndroid Build Coastguard Worker 
152*03f9172cSAndroid Build Coastguard Worker /**
153*03f9172cSAndroid Build Coastguard Worker  * struct fst_ctrl - Notification interface for FST module
154*03f9172cSAndroid Build Coastguard Worker  */
155*03f9172cSAndroid Build Coastguard Worker struct fst_ctrl {
156*03f9172cSAndroid Build Coastguard Worker 	/**
157*03f9172cSAndroid Build Coastguard Worker 	 * init - Initialize the notification interface
158*03f9172cSAndroid Build Coastguard Worker 	 * Returns: 0 for success, negative error code for failure.
159*03f9172cSAndroid Build Coastguard Worker 	 */
160*03f9172cSAndroid Build Coastguard Worker 	int (*init)(void);
161*03f9172cSAndroid Build Coastguard Worker 
162*03f9172cSAndroid Build Coastguard Worker 	/**
163*03f9172cSAndroid Build Coastguard Worker 	 * deinit - Deinitialize the notification interface
164*03f9172cSAndroid Build Coastguard Worker 	 */
165*03f9172cSAndroid Build Coastguard Worker 	void (*deinit)(void);
166*03f9172cSAndroid Build Coastguard Worker 
167*03f9172cSAndroid Build Coastguard Worker 	/**
168*03f9172cSAndroid Build Coastguard Worker 	 * on_group_created - Notify about FST group creation
169*03f9172cSAndroid Build Coastguard Worker 	 * Returns: 0 for success, negative error code for failure.
170*03f9172cSAndroid Build Coastguard Worker 	 */
171*03f9172cSAndroid Build Coastguard Worker 	int (*on_group_created)(struct fst_group *g);
172*03f9172cSAndroid Build Coastguard Worker 
173*03f9172cSAndroid Build Coastguard Worker 	/**
174*03f9172cSAndroid Build Coastguard Worker 	 * on_group_deleted - Notify about FST group deletion
175*03f9172cSAndroid Build Coastguard Worker 	 */
176*03f9172cSAndroid Build Coastguard Worker 	void (*on_group_deleted)(struct fst_group *g);
177*03f9172cSAndroid Build Coastguard Worker 
178*03f9172cSAndroid Build Coastguard Worker 	/**
179*03f9172cSAndroid Build Coastguard Worker 	 * on_iface_added - Notify about interface addition
180*03f9172cSAndroid Build Coastguard Worker 	 * Returns: 0 for success, negative error code for failure.
181*03f9172cSAndroid Build Coastguard Worker 	 */
182*03f9172cSAndroid Build Coastguard Worker 	int (*on_iface_added)(struct fst_iface *i);
183*03f9172cSAndroid Build Coastguard Worker 
184*03f9172cSAndroid Build Coastguard Worker 	/**
185*03f9172cSAndroid Build Coastguard Worker 	 * on_iface_removed - Notify about interface removal
186*03f9172cSAndroid Build Coastguard Worker 	 */
187*03f9172cSAndroid Build Coastguard Worker 	void (*on_iface_removed)(struct fst_iface *i);
188*03f9172cSAndroid Build Coastguard Worker 
189*03f9172cSAndroid Build Coastguard Worker 	/**
190*03f9172cSAndroid Build Coastguard Worker 	 * on_session_added - Notify about FST session addition
191*03f9172cSAndroid Build Coastguard Worker 	 * Returns: 0 for success, negative error code for failure.
192*03f9172cSAndroid Build Coastguard Worker 	 */
193*03f9172cSAndroid Build Coastguard Worker 	int (*on_session_added)(struct fst_session *s);
194*03f9172cSAndroid Build Coastguard Worker 
195*03f9172cSAndroid Build Coastguard Worker 	/**
196*03f9172cSAndroid Build Coastguard Worker 	 * on_session_removed - Notify about FST session removal
197*03f9172cSAndroid Build Coastguard Worker 	 */
198*03f9172cSAndroid Build Coastguard Worker 	void (*on_session_removed)(struct fst_session *s);
199*03f9172cSAndroid Build Coastguard Worker 
200*03f9172cSAndroid Build Coastguard Worker 	/**
201*03f9172cSAndroid Build Coastguard Worker 	 * on_event - Notify about FST event
202*03f9172cSAndroid Build Coastguard Worker 	 * @event_type: Event type
203*03f9172cSAndroid Build Coastguard Worker 	 * @i: Interface object that relates to the event or NULL
204*03f9172cSAndroid Build Coastguard Worker 	 * @g: Group object that relates to the event or NULL
205*03f9172cSAndroid Build Coastguard Worker 	 * @extra - Event specific data (see fst_ctrl_iface.h for more info)
206*03f9172cSAndroid Build Coastguard Worker 	 */
207*03f9172cSAndroid Build Coastguard Worker 	void (*on_event)(enum fst_event_type event_type, struct fst_iface *i,
208*03f9172cSAndroid Build Coastguard Worker 			 struct fst_session *s,
209*03f9172cSAndroid Build Coastguard Worker 			 const union fst_event_extra *extra);
210*03f9172cSAndroid Build Coastguard Worker };
211*03f9172cSAndroid Build Coastguard Worker 
212*03f9172cSAndroid Build Coastguard Worker struct fst_ctrl_handle * fst_global_add_ctrl(const struct fst_ctrl *ctrl);
213*03f9172cSAndroid Build Coastguard Worker void fst_global_del_ctrl(struct fst_ctrl_handle *h);
214*03f9172cSAndroid Build Coastguard Worker 
215*03f9172cSAndroid Build Coastguard Worker /**
216*03f9172cSAndroid Build Coastguard Worker  * NOTE: These values have to be read from configuration file
217*03f9172cSAndroid Build Coastguard Worker  */
218*03f9172cSAndroid Build Coastguard Worker struct fst_iface_cfg {
219*03f9172cSAndroid Build Coastguard Worker 	char group_id[FST_MAX_GROUP_ID_LEN + 1];
220*03f9172cSAndroid Build Coastguard Worker 	u8 priority;
221*03f9172cSAndroid Build Coastguard Worker 	u32 llt;
222*03f9172cSAndroid Build Coastguard Worker };
223*03f9172cSAndroid Build Coastguard Worker 
224*03f9172cSAndroid Build Coastguard Worker /**
225*03f9172cSAndroid Build Coastguard Worker  * fst_attach - Attach interface to an FST group according to configuration read
226*03f9172cSAndroid Build Coastguard Worker  * @ifname: Interface name
227*03f9172cSAndroid Build Coastguard Worker  * @own_addr: Own interface MAC address
228*03f9172cSAndroid Build Coastguard Worker  * @iface_obj: Callbacks to be used by FST module to communicate with
229*03f9172cSAndroid Build Coastguard Worker  *             hostapd/wpa_supplicant
230*03f9172cSAndroid Build Coastguard Worker  * @cfg: FST-related interface configuration read from the configuration file
231*03f9172cSAndroid Build Coastguard Worker  * Returns: FST interface object for success, %NULL for failure.
232*03f9172cSAndroid Build Coastguard Worker  */
233*03f9172cSAndroid Build Coastguard Worker struct fst_iface * fst_attach(const char *ifname,
234*03f9172cSAndroid Build Coastguard Worker 			      const u8 *own_addr,
235*03f9172cSAndroid Build Coastguard Worker 			      const struct fst_wpa_obj *iface_obj,
236*03f9172cSAndroid Build Coastguard Worker 			      const struct fst_iface_cfg *cfg);
237*03f9172cSAndroid Build Coastguard Worker 
238*03f9172cSAndroid Build Coastguard Worker /**
239*03f9172cSAndroid Build Coastguard Worker  * fst_detach - Detach an interface
240*03f9172cSAndroid Build Coastguard Worker  * @iface: FST interface object
241*03f9172cSAndroid Build Coastguard Worker  */
242*03f9172cSAndroid Build Coastguard Worker void fst_detach(struct fst_iface *iface);
243*03f9172cSAndroid Build Coastguard Worker 
244*03f9172cSAndroid Build Coastguard Worker /* FST module inputs */
245*03f9172cSAndroid Build Coastguard Worker /**
246*03f9172cSAndroid Build Coastguard Worker  * fst_rx_action - FST Action frames handler
247*03f9172cSAndroid Build Coastguard Worker  * @iface: FST interface object
248*03f9172cSAndroid Build Coastguard Worker  * @mgmt: Action frame arrived
249*03f9172cSAndroid Build Coastguard Worker  * @len: Action frame length
250*03f9172cSAndroid Build Coastguard Worker  */
251*03f9172cSAndroid Build Coastguard Worker void fst_rx_action(struct fst_iface *iface, const struct ieee80211_mgmt *mgmt,
252*03f9172cSAndroid Build Coastguard Worker 		   size_t len);
253*03f9172cSAndroid Build Coastguard Worker 
254*03f9172cSAndroid Build Coastguard Worker /**
255*03f9172cSAndroid Build Coastguard Worker  * fst_notify_peer_connected - FST STA connect handler
256*03f9172cSAndroid Build Coastguard Worker  * @iface: FST interface object
257*03f9172cSAndroid Build Coastguard Worker  * @addr: Address of the connected STA
258*03f9172cSAndroid Build Coastguard Worker  */
259*03f9172cSAndroid Build Coastguard Worker void fst_notify_peer_connected(struct fst_iface *iface, const u8 *addr);
260*03f9172cSAndroid Build Coastguard Worker 
261*03f9172cSAndroid Build Coastguard Worker /**
262*03f9172cSAndroid Build Coastguard Worker  * fst_notify_peer_disconnected - FST STA disconnect handler
263*03f9172cSAndroid Build Coastguard Worker  * @iface: FST interface object
264*03f9172cSAndroid Build Coastguard Worker  * @addr: Address of the disconnected STA
265*03f9172cSAndroid Build Coastguard Worker  */
266*03f9172cSAndroid Build Coastguard Worker void fst_notify_peer_disconnected(struct fst_iface *iface, const u8 *addr);
267*03f9172cSAndroid Build Coastguard Worker 
268*03f9172cSAndroid Build Coastguard Worker /* FST module auxiliary routines */
269*03f9172cSAndroid Build Coastguard Worker 
270*03f9172cSAndroid Build Coastguard Worker /**
271*03f9172cSAndroid Build Coastguard Worker  * fst_are_ifaces_aggregated - Determines whether 2 interfaces belong to the
272*03f9172cSAndroid Build Coastguard Worker  *                             same FST group
273*03f9172cSAndroid Build Coastguard Worker  * @iface1: 1st FST interface object
274*03f9172cSAndroid Build Coastguard Worker  * @iface1: 2nd FST interface object
275*03f9172cSAndroid Build Coastguard Worker  *
276*03f9172cSAndroid Build Coastguard Worker  * Returns: %true if the interfaces belong to the same FST group,
277*03f9172cSAndroid Build Coastguard Worker  *          %false otherwise
278*03f9172cSAndroid Build Coastguard Worker  */
279*03f9172cSAndroid Build Coastguard Worker bool fst_are_ifaces_aggregated(struct fst_iface *iface1,
280*03f9172cSAndroid Build Coastguard Worker 			       struct fst_iface *iface2);
281*03f9172cSAndroid Build Coastguard Worker 
282*03f9172cSAndroid Build Coastguard Worker /**
283*03f9172cSAndroid Build Coastguard Worker  * fst_update_mac_addr - Notify FST about MAC address change
284*03f9172cSAndroid Build Coastguard Worker  * @iface: FST interface object
285*03f9172cSAndroid Build Coastguard Worker  * @addr: New MAC address
286*03f9172cSAndroid Build Coastguard Worker  */
287*03f9172cSAndroid Build Coastguard Worker void fst_update_mac_addr(struct fst_iface *iface, const u8 *addr);
288*03f9172cSAndroid Build Coastguard Worker 
289*03f9172cSAndroid Build Coastguard Worker #else /* CONFIG_FST */
290*03f9172cSAndroid Build Coastguard Worker 
fst_global_init(void)291*03f9172cSAndroid Build Coastguard Worker static inline int fst_global_init(void)
292*03f9172cSAndroid Build Coastguard Worker {
293*03f9172cSAndroid Build Coastguard Worker 	return 0;
294*03f9172cSAndroid Build Coastguard Worker }
295*03f9172cSAndroid Build Coastguard Worker 
fst_global_start(void)296*03f9172cSAndroid Build Coastguard Worker static inline int fst_global_start(void)
297*03f9172cSAndroid Build Coastguard Worker {
298*03f9172cSAndroid Build Coastguard Worker 	return 0;
299*03f9172cSAndroid Build Coastguard Worker }
300*03f9172cSAndroid Build Coastguard Worker 
fst_global_stop(void)301*03f9172cSAndroid Build Coastguard Worker static inline void fst_global_stop(void)
302*03f9172cSAndroid Build Coastguard Worker {
303*03f9172cSAndroid Build Coastguard Worker }
304*03f9172cSAndroid Build Coastguard Worker 
fst_global_deinit(void)305*03f9172cSAndroid Build Coastguard Worker static inline void fst_global_deinit(void)
306*03f9172cSAndroid Build Coastguard Worker {
307*03f9172cSAndroid Build Coastguard Worker }
308*03f9172cSAndroid Build Coastguard Worker 
309*03f9172cSAndroid Build Coastguard Worker #endif /* CONFIG_FST */
310*03f9172cSAndroid Build Coastguard Worker 
311*03f9172cSAndroid Build Coastguard Worker #endif /* FST_H */
312