Home | History | Annotate | Download | only in wpa_supplicant

Lines Matching refs:wpa_s

21 wpas_get_tx_interface(struct wpa_supplicant *wpa_s, const u8 *src)
25 if (os_memcmp(src, wpa_s->own_addr, ETH_ALEN) == 0)
26 return wpa_s;
31 iface = wpa_s->global->ifaces;
33 if (os_memcmp(wpa_s->pending_action_src,
41 iface->ifname, wpa_s->ifname);
45 return wpa_s;
51 struct wpa_supplicant *wpa_s = eloop_ctx;
56 without_roc = wpa_s->pending_action_without_roc;
57 wpa_s->pending_action_without_roc = 0;
60 without_roc, wpa_s->pending_action_tx);
62 if (wpa_s->pending_action_tx == NULL)
74 iface = wpas_get_tx_interface(wpa_s, wpa_s->pending_action_src);
76 if (wpa_s->off_channel_freq != wpa_s->pending_action_freq &&
77 wpa_s->pending_action_freq != 0 &&
78 wpa_s->pending_action_freq != iface->assoc_freq) {
82 wpa_s->pending_action_freq,
83 wpa_s->off_channel_freq,
85 if (without_roc && wpa_s->off_channel_freq == 0) {
94 wpa_s, wpa_s->pending_action_freq, 200) <
99 "TX", wpa_s->pending_action_freq);
101 wpa_s->off_channel_freq = 0;
102 wpa_s->roc_waiting_drv_freq =
103 wpa_s->pending_action_freq;
111 MAC2STR(wpa_s->pending_action_dst), iface->ifname);
112 res = wpa_drv_send_action(iface, wpa_s->pending_action_freq, 0,
113 wpa_s->pending_action_dst,
114 wpa_s->pending_action_src,
115 wpa_s->pending_action_bssid,
116 wpabuf_head(wpa_s->pending_action_tx),
117 wpabuf_len(wpa_s->pending_action_tx),
118 wpa_s->pending_action_no_cck);
127 wpa_s, wpa_s->pending_action_dst,
128 wpabuf_head(wpa_s->pending_action_tx),
129 wpabuf_len(wpa_s->pending_action_tx),
137 * @wpa_s: Pointer to wpa_supplicant data
147 struct wpa_supplicant *wpa_s, const u8 *dst, const u8 *data,
150 if (wpa_s->pending_action_tx == NULL) {
156 if (os_memcmp(dst, wpa_s->pending_action_dst, ETH_ALEN) != 0) {
162 wpabuf_free(wpa_s->pending_action_tx);
163 wpa_s->pending_action_tx = NULL;
166 result, wpa_s->pending_action_tx_status_cb);
168 if (wpa_s->pending_action_tx_status_cb) {
169 wpa_s->pending_action_tx_status_cb(
170 wpa_s, wpa_s->pending_action_freq,
171 wpa_s->pending_action_dst, wpa_s->pending_action_src,
172 wpa_s->pending_action_bssid,
180 * @wpa_s: Pointer to wpa_supplicant data
199 int offchannel_send_action(struct wpa_supplicant *wpa_s, unsigned int freq,
202 void (*tx_cb)(struct wpa_supplicant *wpa_s,
215 wpa_s->pending_action_tx_status_cb = tx_cb;
217 if (wpa_s->pending_action_tx) {
220 MAC2STR(wpa_s->pending_action_dst));
221 wpabuf_free(wpa_s->pending_action_tx);
223 wpa_s->pending_action_tx = wpabuf_alloc(len);
224 if (wpa_s->pending_action_tx == NULL) {
230 wpabuf_put_data(wpa_s->pending_action_tx, buf, len);
231 os_memcpy(wpa_s->pending_action_src, src, ETH_ALEN);
232 os_memcpy(wpa_s->pending_action_dst, dst, ETH_ALEN);
233 os_memcpy(wpa_s->pending_action_bssid, bssid, ETH_ALEN);
234 wpa_s->pending_action_freq = freq;
235 wpa_s->pending_action_no_cck = no_cck;
237 if (freq != 0 && wpa_s->drv_flags & WPA_DRIVER_FLAGS_OFFCHANNEL_TX) {
240 iface = wpas_get_tx_interface(wpa_s,
241 wpa_s->pending_action_src);
242 wpa_s->action_tx_wait_time = wait_time;
245 iface, wpa_s->pending_action_freq,
246 wait_time, wpa_s->pending_action_dst,
247 wpa_s->pending_action_src, wpa_s->pending_action_bssid,
248 wpabuf_head(wpa_s->pending_action_tx),
249 wpabuf_len(wpa_s->pending_action_tx),
250 wpa_s->pending_action_no_cck);
255 tx_iface = wpas_get_tx_interface(wpa_s, src);
264 if (wpa_s->off_channel_freq == freq || freq == 0) {
269 wpa_s->pending_action_without_roc = 1;
270 eloop_cancel_timeout(wpas_send_action_cb, wpa_s, NULL);
271 eloop_register_timeout(0, 0, wpas_send_action_cb, wpa_s, NULL);
274 wpa_s->pending_action_without_roc = 0;
276 if (wpa_s->roc_waiting_drv_freq == freq) {
286 if (wait_time > wpa_s->max_remain_on_chan)
287 wait_time = wpa_s->max_remain_on_chan;
290 if (wpa_drv_remain_on_channel(wpa_s, freq, wait_time) < 0) {
296 wpa_s->off_channel_freq = 0;
297 wpa_s->roc_waiting_drv_freq = freq;
305 * @wpa_s: Pointer to wpa_supplicant data
310 void offchannel_send_action_done(struct wpa_supplicant *wpa_s)
314 wpabuf_free(wpa_s->pending_action_tx);
315 wpa_s->pending_action_tx = NULL;
316 if (wpa_s->drv_flags & WPA_DRIVER_FLAGS_OFFCHANNEL_TX &&
317 wpa_s->action_tx_wait_time)
318 wpa_drv_send_action_cancel_wait(wpa_s);
320 if (wpa_s->off_channel_freq || wpa_s->roc_waiting_drv_freq) {
321 wpa_drv_cancel_remain_on_channel(wpa_s);
322 wpa_s->off_channel_freq = 0;
323 wpa_s->roc_waiting_drv_freq = 0;
330 * @wpa_s: Pointer to wpa_supplicant data
337 void offchannel_remain_on_channel_cb(struct wpa_supplicant *wpa_s,
340 wpa_s->roc_waiting_drv_freq = 0;
341 wpa_s->off_channel_freq = freq;
342 wpas_send_action_cb(wpa_s, NULL);
348 * @wpa_s: Pointer to wpa_supplicant data
354 void offchannel_cancel_remain_on_channel_cb(struct wpa_supplicant *wpa_s,
357 wpa_s->off_channel_freq = 0;
363 * @wpa_s: Pointer to wpa_supplicant data
371 const void * offchannel_pending_action_tx(struct wpa_supplicant *wpa_s)
373 return wpa_s->pending_action_tx;
379 * @wpa_s: Pointer to wpa_supplicant data
381 void offchannel_clear_pending_action_tx(struct wpa_supplicant *wpa_s)
383 wpabuf_free(wpa_s->pending_action_tx);
384 wpa_s->pending_action_tx = NULL;
390 * @wpa_s: Pointer to wpa_supplicant data
395 void offchannel_deinit(struct wpa_supplicant *wpa_s)
397 offchannel_clear_pending_action_tx(wpa_s);
398 eloop_cancel_timeout(wpas_send_action_cb, wpa_s, NULL);