• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/net/mac80211/

Lines Matching defs:wk

71 	struct ieee80211_work *wk =
74 kfree(wk);
77 void free_work(struct ieee80211_work *wk)
79 call_rcu(&wk->rcu_head, work_free_rcu);
202 struct ieee80211_work *wk)
215 sband = local->hw.wiphy->bands[wk->chan->band];
217 if (wk->assoc.supp_rates_len) {
224 rates_len = ieee80211_compatible_rates(wk->assoc.supp_rates,
225 wk->assoc.supp_rates_len,
239 2 + wk->assoc.ssid_len + /* SSID */
244 wk->ie_len + /* extra IEs */
263 if (wk->assoc.capability & WLAN_CAPABILITY_PRIVACY)
266 if ((wk->assoc.capability & WLAN_CAPABILITY_SPECTRUM_MGMT) &&
272 memcpy(mgmt->da, wk->filter_ta, ETH_ALEN);
274 memcpy(mgmt->bssid, wk->filter_ta, ETH_ALEN);
276 if (!is_zero_ether_addr(wk->assoc.prev_bssid)) {
283 memcpy(mgmt->u.reassoc_req.current_ap, wk->assoc.prev_bssid,
295 ies = pos = skb_put(skb, 2 + wk->assoc.ssid_len);
297 *pos++ = wk->assoc.ssid_len;
298 memcpy(pos, wk->assoc.ssid, wk->assoc.ssid_len);
339 *pos++ = wk->chan->max_power; /* max tx power */
354 if (wk->ie_len && wk->ie) {
367 noffset = ieee80211_ie_split(wk->ie, wk->ie_len,
371 memcpy(pos, wk->ie + offset, noffset - offset);
375 if (wk->assoc.use_11n && wk->assoc.wmm_used &&
377 ieee80211_add_ht_ie(skb, wk->assoc.ht_information_ie,
378 sband, wk->chan, wk->assoc.smps);
381 if (wk->ie_len && wk->ie) {
382 noffset = ieee80211_ie_split_vendor(wk->ie, wk->ie_len,
385 memcpy(pos, wk->ie + offset, noffset - offset);
389 if (wk->assoc.wmm_used && local->hw.queues >= 4) {
390 if (wk->assoc.uapsd_used) {
411 if (wk->ie_len && wk->ie) {
412 noffset = wk->ie_len;
414 memcpy(pos, wk->ie + offset, noffset - offset);
422 struct ieee80211_work *wk)
427 if (wk->probe_auth.privacy)
430 cbss = cfg80211_get_bss(local->hw.wiphy, wk->chan, wk->filter_ta,
431 wk->probe_auth.ssid, wk->probe_auth.ssid_len,
442 ieee80211_direct_probe(struct ieee80211_work *wk)
444 struct ieee80211_sub_if_data *sdata = wk->sdata;
447 wk->probe_auth.tries++;
448 if (wk->probe_auth.tries > IEEE80211_AUTH_MAX_TRIES) {
450 sdata->name, wk->filter_ta);
456 ieee80211_remove_auth_bss(local, wk);
462 sdata->name, wk->filter_ta, wk->probe_auth.tries);
468 ieee80211_send_probe_req(sdata, NULL, wk->probe_auth.ssid,
469 wk->probe_auth.ssid_len, NULL, 0);
471 wk->timeout = jiffies + IEEE80211_AUTH_TIMEOUT;
472 run_again(local, wk->timeout);
479 ieee80211_authenticate(struct ieee80211_work *wk)
481 struct ieee80211_sub_if_data *sdata = wk->sdata;
484 wk->probe_auth.tries++;
485 if (wk->probe_auth.tries > IEEE80211_AUTH_MAX_TRIES) {
487 " timed out\n", sdata->name, wk->filter_ta);
493 ieee80211_remove_auth_bss(local, wk);
499 sdata->name, wk->filter_ta, wk->probe_auth.tries);
501 ieee80211_send_auth(sdata, 1, wk->probe_auth.algorithm, wk->ie,
502 wk->ie_len, wk->filter_ta, NULL, 0, 0);
503 wk->probe_auth.transaction = 2;
505 wk->timeout = jiffies + IEEE80211_AUTH_TIMEOUT;
506 run_again(local, wk->timeout);
512 ieee80211_associate(struct ieee80211_work *wk)
514 struct ieee80211_sub_if_data *sdata = wk->sdata;
517 wk->assoc.tries++;
518 if (wk->assoc.tries > IEEE80211_ASSOC_MAX_TRIES) {
521 sdata->name, wk->filter_ta);
527 if (wk->assoc.bss)
528 cfg80211_unlink_bss(local->hw.wiphy, wk->assoc.bss);
534 sdata->name, wk->filter_ta, wk->assoc.tries);
535 ieee80211_send_assoc(sdata, wk);
537 wk->timeout = jiffies + IEEE80211_ASSOC_TIMEOUT;
538 run_again(local, wk->timeout);
544 ieee80211_remain_on_channel_timeout(struct ieee80211_work *wk)
550 if (!wk->started) {
551 wk->timeout = jiffies + msecs_to_jiffies(wk->remain.duration);
553 cfg80211_ready_on_channel(wk->sdata->dev, (unsigned long) wk,
554 wk->chan, wk->chan_type,
555 wk->remain.duration, GFP_KERNEL);
564 ieee80211_assoc_beacon_wait(struct ieee80211_work *wk)
566 if (wk->started)
574 wk->sdata->name, wk->filter_ta);
575 wk->timeout = TU_TO_EXP_TIME(wk->assoc.bss->beacon_interval);
579 static void ieee80211_auth_challenge(struct ieee80211_work *wk,
583 struct ieee80211_sub_if_data *sdata = wk->sdata;
591 ieee80211_send_auth(sdata, 3, wk->probe_auth.algorithm,
593 wk->filter_ta, wk->probe_auth.key,
594 wk->probe_auth.key_len, wk->probe_auth.key_idx);
595 wk->probe_auth.transaction = 4;
599 ieee80211_rx_mgmt_auth(struct ieee80211_work *wk,
604 if (wk->type != IEEE80211_WORK_AUTH)
614 if (auth_alg != wk->probe_auth.algorithm ||
615 auth_transaction != wk->probe_auth.transaction)
620 wk->sdata->name, mgmt->sa, status_code);
624 switch (wk->probe_auth.algorithm) {
630 if (wk->probe_auth.transaction != 4) {
631 ieee80211_auth_challenge(wk, mgmt, len);
641 printk(KERN_DEBUG "%s: authenticated\n", wk->sdata->name);
646 ieee80211_rx_mgmt_assoc_resp(struct ieee80211_work *wk,
650 struct ieee80211_sub_if_data *sdata = wk->sdata;
656 if (wk->type != IEEE80211_WORK_ASSOC)
688 wk->timeout = jiffies + msecs_to_jiffies(ms);
690 run_again(local, wk->timeout);
704 ieee80211_rx_mgmt_probe_resp(struct ieee80211_work *wk,
708 struct ieee80211_sub_if_data *sdata = wk->sdata;
714 if (wk->type != IEEE80211_WORK_DIRECT_PROBE)
729 ieee80211_rx_mgmt_beacon(struct ieee80211_work *wk,
732 struct ieee80211_sub_if_data *sdata = wk->sdata;
737 if (wk->type != IEEE80211_WORK_ASSOC_BEACON_WAIT)
752 struct ieee80211_work *wk;
762 list_for_each_entry(wk, &local->work_list, list) {
765 switch (wk->type) {
770 bssid = wk->filter_ta;
785 rma = ieee80211_rx_mgmt_beacon(wk, mgmt, skb->len);
788 rma = ieee80211_rx_mgmt_probe_resp(wk, mgmt, skb->len,
792 rma = ieee80211_rx_mgmt_auth(wk, mgmt, skb->len);
795 rma = ieee80211_rx_mgmt_assoc_resp(wk, mgmt,
799 rma = ieee80211_rx_mgmt_assoc_resp(wk, mgmt,
830 list_del_rcu(&wk->list);
841 switch (wk->done(wk, skb)) {
843 free_work(wk);
847 wk->started = false; /* restart */
849 list_add_tail(&wk->list, &local->work_list);
872 struct ieee80211_work *wk, *tmp;
895 list_for_each_entry_safe(wk, tmp, &local->work_list, list) {
896 bool started = wk->started;
900 wk->chan == local->tmp_channel &&
901 wk->chan_type == local->tmp_channel_type) {
903 wk->timeout = jiffies;
916 local->tmp_channel = wk->chan;
917 local->tmp_channel_type = wk->chan_type;
920 wk->timeout = jiffies;
927 if (time_is_after_jiffies(wk->timeout)) {
933 run_again(local, wk->timeout);
937 switch (wk->type) {
947 rma = ieee80211_direct_probe(wk);
950 rma = ieee80211_authenticate(wk);
953 rma = ieee80211_associate(wk);
956 rma = ieee80211_remain_on_channel_timeout(wk);
959 rma = ieee80211_assoc_beacon_wait(wk);
963 wk->started = started;
968 run_again(local, wk->timeout);
971 list_del_rcu(&wk->list);
973 list_add(&wk->list, &free_work);
980 list_for_each_entry(wk, &local->work_list, list) {
981 if (!wk->started)
983 if (wk->chan != local->tmp_channel)
985 if (wk->chan_type != local->tmp_channel_type)
1012 list_for_each_entry_safe(wk, tmp, &free_work, list) {
1013 wk->done(wk, NULL);
1014 list_del(&wk->list);
1015 kfree(wk);
1019 void ieee80211_add_work(struct ieee80211_work *wk)
1023 if (WARN_ON(!wk->chan))
1026 if (WARN_ON(!wk->sdata))
1029 if (WARN_ON(!wk->done))
1032 if (WARN_ON(!ieee80211_sdata_running(wk->sdata)))
1035 wk->started = false;
1037 local = wk->sdata->local;
1039 list_add_tail(&wk->list, &local->work_list);
1058 struct ieee80211_work *wk;
1061 list_for_each_entry(wk, &local->work_list, list) {
1062 if (wk->sdata != sdata)
1064 wk->type = IEEE80211_WORK_ABORT;
1065 wk->started = true;
1066 wk->timeout = jiffies;
1074 list_for_each_entry(wk, &local->work_list, list) {
1075 if (wk->sdata != sdata)
1088 struct ieee80211_work *wk;
1097 list_for_each_entry_rcu(wk, &local->work_list, list) {
1098 if (sdata != wk->sdata)
1100 if (compare_ether_addr(wk->filter_ta, mgmt->sa))
1102 if (compare_ether_addr(wk->filter_ta, mgmt->bssid))
1120 static enum work_done_result ieee80211_remain_done(struct ieee80211_work *wk,
1126 cfg80211_remain_on_channel_expired(wk->sdata->dev, (unsigned long) wk,
1127 wk->chan, wk->chan_type,
1138 struct ieee80211_work *wk;
1140 wk = kzalloc(sizeof(*wk), GFP_KERNEL);
1141 if (!wk)
1144 wk->type = IEEE80211_WORK_REMAIN_ON_CHANNEL;
1145 wk->chan = chan;
1146 wk->chan_type = channel_type;
1147 wk->sdata = sdata;
1148 wk->done = ieee80211_remain_done;
1150 wk->remain.duration = duration;
1152 *cookie = (unsigned long) wk;
1154 ieee80211_add_work(wk);
1163 struct ieee80211_work *wk, *tmp;
1167 list_for_each_entry_safe(wk, tmp, &local->work_list, list) {
1168 if ((unsigned long) wk == cookie) {
1169 wk->timeout = jiffies;