• 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 refs:sdata

40 static void ieee80211_rx_mgmt_auth_ibss(struct ieee80211_sub_if_data *sdata,
46 lockdep_assert_held(&sdata->u.ibss.mtx);
62 ieee80211_send_auth(sdata, 2, WLAN_AUTH_OPEN, NULL, 0,
63 sdata->u.ibss.bssid, NULL, 0, 0);
66 static void __ieee80211_sta_join_ibss(struct ieee80211_sub_if_data *sdata,
72 struct ieee80211_if_ibss *ifibss = &sdata->u.ibss;
73 struct ieee80211_local *local = sdata->local;
94 skb_reserve(skb, sdata->local->hw.extra_tx_headroom);
97 sta_info_flush(sdata->local, sdata);
100 if (sdata->vif.bss_conf.ibss_joined) {
101 sdata->vif.bss_conf.ibss_joined = false;
102 ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_IBSS);
107 sdata->drop_unencrypted = capability & WLAN_CAPABILITY_PRIVACY ? 1 : 0;
110 WARN_ON(!ieee80211_set_channel_type(local, sdata, NL80211_CHAN_NO_HT));
131 memcpy(mgmt->sa, sdata->vif.addr, ETH_ALEN);
178 sdata->vif.bss_conf.beacon_int = beacon_int;
179 sdata->vif.bss_conf.basic_rates = basic_rates;
181 bss_change |= ieee80211_reset_erp_info(sdata);
187 sdata->vif.bss_conf.ibss_joined = true;
188 ieee80211_bss_info_change_notify(sdata, bss_change);
190 ieee80211_sta_def_wmm_params(sdata, sband->n_bitrates, supp_rates);
199 cfg80211_ibss_joined(sdata->dev, ifibss->bssid, GFP_KERNEL);
202 static void ieee80211_sta_join_ibss(struct ieee80211_sub_if_data *sdata,
212 lockdep_assert_held(&sdata->u.ibss.mtx);
217 sband = sdata->local->hw.wiphy->bands[cbss->channel->band];
234 __ieee80211_sta_join_ibss(sdata, cbss->bssid,
242 static void ieee80211_rx_bss_info(struct ieee80211_sub_if_data *sdata,
249 struct ieee80211_local *local = sdata->local;
269 if (sdata->vif.type == NL80211_IFTYPE_ADHOC && elems->supp_rates &&
270 memcmp(mgmt->bssid, sdata->u.ibss.bssid, ETH_ALEN) == 0) {
275 sta = sta_info_get(sdata, mgmt->sa);
289 sdata->name, sta->sta.addr,
297 ieee80211_ibss_add_sta(sdata, mgmt->bssid, mgmt->sa,
315 if (sdata->u.ibss.fixed_bssid)
327 if (elems->ssid_len != sdata->u.ibss.ssid_len ||
328 memcmp(elems->ssid, sdata->u.ibss.ssid,
329 sdata->u.ibss.ssid_len))
333 if (memcmp(cbss->bssid, sdata->u.ibss.bssid, ETH_ALEN) == 0)
386 sdata->name, mgmt->bssid);
388 ieee80211_sta_join_ibss(sdata, bss);
390 ieee80211_ibss_add_sta(sdata, mgmt->bssid, mgmt->sa,
403 struct sta_info *ieee80211_ibss_add_sta(struct ieee80211_sub_if_data *sdata,
407 struct ieee80211_if_ibss *ifibss = &sdata->u.ibss;
408 struct ieee80211_local *local = sdata->local;
415 sdata->name, addr);
422 if (compare_ether_addr(bssid, sdata->u.ibss.bssid))
427 wiphy_name(local->hw.wiphy), addr, sdata->name);
430 sta = sta_info_alloc(sdata, addr, gfp);
445 return sta_info_get(sdata, addr);
449 static int ieee80211_sta_active_ibss(struct ieee80211_sub_if_data *sdata)
451 struct ieee80211_local *local = sdata->local;
455 lockdep_assert_held(&sdata->u.ibss.mtx);
460 if (sta->sdata == sdata &&
477 static void ieee80211_sta_merge_ibss(struct ieee80211_sub_if_data *sdata)
479 struct ieee80211_if_ibss *ifibss = &sdata->u.ibss;
486 ieee80211_sta_expire(sdata, IEEE80211_IBSS_INACTIVITY_LIMIT);
492 if (ieee80211_sta_active_ibss(sdata))
499 "IBSS networks with same SSID (merge)\n", sdata->name);
501 ieee80211_request_internal_scan(sdata,
506 static void ieee80211_sta_create_ibss(struct ieee80211_sub_if_data *sdata)
508 struct ieee80211_if_ibss *ifibss = &sdata->u.ibss;
509 struct ieee80211_local *local = sdata->local;
525 bssid[i] ^= sdata->vif.addr[i];
531 sdata->name, bssid);
540 sdata->drop_unencrypted = 0;
542 __ieee80211_sta_join_ibss(sdata, bssid, sdata->vif.bss_conf.beacon_int,
551 static void ieee80211_sta_find_ibss(struct ieee80211_sub_if_data *sdata)
553 struct ieee80211_if_ibss *ifibss = &sdata->u.ibss;
554 struct ieee80211_local *local = sdata->local;
563 active_ibss = ieee80211_sta_active_ibss(sdata);
566 sdata->name, active_ibss);
597 sdata->name, cbss->bssid);
599 ieee80211_sta_join_ibss(sdata, bss);
612 "join\n", sdata->name);
614 ieee80211_request_internal_scan(sdata,
623 ieee80211_sta_create_ibss(sdata);
627 " %d MHz\n", sdata->name,
640 static void ieee80211_rx_mgmt_probe_req(struct ieee80211_sub_if_data *sdata,
644 struct ieee80211_if_ibss *ifibss = &sdata->u.ibss;
645 struct ieee80211_local *local = sdata->local;
662 sdata->name, mgmt->sa, mgmt->da,
680 sdata->name, mgmt->sa);
700 sdata->name, resp->da);
703 ieee80211_tx_skb(sdata, skb);
706 static void ieee80211_rx_mgmt_probe_resp(struct ieee80211_sub_if_data *sdata,
714 if (memcmp(mgmt->da, sdata->vif.addr, ETH_ALEN))
724 ieee80211_rx_bss_info(sdata, mgmt, len, rx_status, &elems, false);
727 static void ieee80211_rx_mgmt_beacon(struct ieee80211_sub_if_data *sdata,
742 ieee80211_rx_bss_info(sdata, mgmt, len, rx_status, &elems, true);
745 void ieee80211_ibss_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata,
756 mutex_lock(&sdata->u.ibss.mtx);
760 ieee80211_rx_mgmt_probe_req(sdata, mgmt, skb->len);
763 ieee80211_rx_mgmt_probe_resp(sdata, mgmt, skb->len,
767 ieee80211_rx_mgmt_beacon(sdata, mgmt, skb->len,
771 ieee80211_rx_mgmt_auth_ibss(sdata, mgmt, skb->len);
775 mutex_unlock(&sdata->u.ibss.mtx);
778 void ieee80211_ibss_work(struct ieee80211_sub_if_data *sdata)
780 struct ieee80211_if_ibss *ifibss = &sdata->u.ibss;
794 ieee80211_sta_find_ibss(sdata);
797 ieee80211_sta_merge_ibss(sdata);
810 struct ieee80211_sub_if_data *sdata =
812 struct ieee80211_if_ibss *ifibss = &sdata->u.ibss;
813 struct ieee80211_local *local = sdata->local;
820 ieee80211_queue_work(&local->hw, &sdata->work);
824 void ieee80211_ibss_quiesce(struct ieee80211_sub_if_data *sdata)
826 struct ieee80211_if_ibss *ifibss = &sdata->u.ibss;
832 void ieee80211_ibss_restart(struct ieee80211_sub_if_data *sdata)
834 struct ieee80211_if_ibss *ifibss = &sdata->u.ibss;
843 void ieee80211_ibss_setup_sdata(struct ieee80211_sub_if_data *sdata)
845 struct ieee80211_if_ibss *ifibss = &sdata->u.ibss;
848 (unsigned long) sdata);
855 struct ieee80211_sub_if_data *sdata;
858 list_for_each_entry(sdata, &local->interfaces, list) {
859 if (!ieee80211_sdata_running(sdata))
861 if (sdata->vif.type != NL80211_IFTYPE_ADHOC)
863 sdata->u.ibss.last_scan_completed = jiffies;
864 ieee80211_queue_work(&local->hw, &sdata->work);
869 int ieee80211_ibss_join(struct ieee80211_sub_if_data *sdata,
874 skb = dev_alloc_skb(sdata->local->hw.extra_tx_headroom +
883 mutex_lock(&sdata->u.ibss.mtx);
886 memcpy(sdata->u.ibss.bssid, params->bssid, ETH_ALEN);
887 sdata->u.ibss.fixed_bssid = true;
889 sdata->u.ibss.fixed_bssid = false;
891 sdata->u.ibss.privacy = params->privacy;
892 sdata->u.ibss.basic_rates = params->basic_rates;
894 sdata->vif.bss_conf.beacon_int = params->beacon_interval;
896 sdata->u.ibss.channel = params->channel;
897 sdata->u.ibss.fixed_channel = params->channel_fixed;
901 sdata->local->oper_channel = params->channel;
902 WARN_ON(!ieee80211_set_channel_type(sdata->local, sdata,
907 sdata->u.ibss.ie = kmemdup(params->ie, params->ie_len,
909 if (sdata->u.ibss.ie)
910 sdata->u.ibss.ie_len = params->ie_len;
913 sdata->u.ibss.skb = skb;
914 sdata->u.ibss.state = IEEE80211_IBSS_MLME_SEARCH;
915 sdata->u.ibss.ibss_join_req = jiffies;
917 memcpy(sdata->u.ibss.ssid, params->ssid, IEEE80211_MAX_SSID_LEN);
918 sdata->u.ibss.ssid_len = params->ssid_len;
920 ieee80211_recalc_idle(sdata->local);
922 ieee80211_queue_work(&sdata->local->hw, &sdata->work);
924 mutex_unlock(&sdata->u.ibss.mtx);
929 int ieee80211_ibss_leave(struct ieee80211_sub_if_data *sdata)
932 struct ieee80211_if_ibss *ifibss = &sdata->u.ibss;
933 struct ieee80211_local *local = sdata->local;
938 mutex_lock(&sdata->u.ibss.mtx);
940 active_ibss = ieee80211_sta_active_ibss(sdata);
960 sta_info_flush(sdata->local, sdata);
963 kfree(sdata->u.ibss.ie);
964 skb = sdata->u.ibss.presp;
965 rcu_assign_pointer(sdata->u.ibss.presp, NULL);
966 sdata->vif.bss_conf.ibss_joined = false;
967 ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BEACON_ENABLED |
972 skb_queue_purge(&sdata->skb_queue);
973 memset(sdata->u.ibss.bssid, 0, ETH_ALEN);
974 sdata->u.ibss.ssid_len = 0;
976 del_timer_sync(&sdata->u.ibss.timer);
978 mutex_unlock(&sdata->u.ibss.mtx);
980 ieee80211_recalc_idle(sdata->local);