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

Lines Matching defs:wdev

41 	struct wireless_dev *wdev;
53 list_for_each_entry(wdev, &rdev->netdev_list, list) {
54 wdev_lock(wdev);
55 if (wdev->sme_state != CFG80211_SME_IDLE)
57 wdev_unlock(wdev);
77 static int cfg80211_conn_scan(struct wireless_dev *wdev)
79 struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy);
85 ASSERT_WDEV_LOCK(wdev);
90 if (wdev->conn->params.channel) {
97 if (!wdev->wiphy->bands[band])
99 n_channels += wdev->wiphy->bands[band]->n_channels;
108 if (wdev->conn->params.channel)
109 request->channels[0] = wdev->conn->params.channel;
115 if (!wdev->wiphy->bands[band])
117 for (j = 0; j < wdev->wiphy->bands[band]->n_channels;
120 &wdev->wiphy->bands[band]->channels[j];
127 memcpy(request->ssids[0].ssid, wdev->conn->params.ssid,
128 wdev->conn->params.ssid_len);
129 request->ssids[0].ssid_len = wdev->conn->params.ssid_len;
131 request->dev = wdev->netdev;
136 err = rdev->ops->scan(wdev->wiphy, wdev->netdev, request);
138 wdev->conn->state = CFG80211_CONN_SCANNING;
139 nl80211_send_scan_start(rdev, wdev->netdev);
140 dev_hold(wdev->netdev);
148 static int cfg80211_conn_do_work(struct wireless_dev *wdev)
150 struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy);
155 ASSERT_WDEV_LOCK(wdev);
157 if (!wdev->conn)
160 params = &wdev->conn->params;
162 switch (wdev->conn->state) {
164 return cfg80211_conn_scan(wdev);
167 wdev->conn->state = CFG80211_CONN_AUTHENTICATING;
168 return __cfg80211_mlme_auth(rdev, wdev->netdev,
177 wdev->conn->state = CFG80211_CONN_ASSOCIATING;
178 if (wdev->conn->prev_bssid_valid)
179 prev_bssid = wdev->conn->prev_bssid;
180 err = __cfg80211_mlme_assoc(rdev, wdev->netdev,
187 __cfg80211_mlme_deauth(rdev, wdev->netdev, params->bssid,
193 __cfg80211_mlme_deauth(rdev, wdev->netdev, params->bssid,
207 struct wireless_dev *wdev;
214 list_for_each_entry(wdev, &rdev->netdev_list, list) {
215 wdev_lock(wdev);
216 if (!netif_running(wdev->netdev)) {
217 wdev_unlock(wdev);
220 if (wdev->sme_state != CFG80211_SME_CONNECTING) {
221 wdev_unlock(wdev);
224 if (wdev->conn->params.bssid) {
225 memcpy(bssid_buf, wdev->conn->params.bssid, ETH_ALEN);
228 if (cfg80211_conn_do_work(wdev))
230 wdev->netdev, bssid,
234 wdev_unlock(wdev);
242 static struct cfg80211_bss *cfg80211_get_conn_bss(struct wireless_dev *wdev)
244 struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy);
248 ASSERT_WDEV_LOCK(wdev);
250 if (wdev->conn->params.privacy)
253 bss = cfg80211_get_bss(wdev->wiphy, NULL, wdev->conn->params.bssid,
254 wdev->conn->params.ssid,
255 wdev->conn->params.ssid_len,
261 memcpy(wdev->conn->bssid, bss->bssid, ETH_ALEN);
262 wdev->conn->params.bssid = wdev->conn->bssid;
263 wdev->conn->params.channel = bss->channel;
264 wdev->conn->state = CFG80211_CONN_AUTHENTICATE_NEXT;
272 struct wireless_dev *wdev = dev->ieee80211_ptr;
273 struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy);
276 ASSERT_WDEV_LOCK(wdev);
278 if (wdev->sme_state != CFG80211_SME_CONNECTING)
281 if (!wdev->conn)
284 if (wdev->conn->state != CFG80211_CONN_SCANNING &&
285 wdev->conn->state != CFG80211_CONN_SCAN_AGAIN)
288 bss = cfg80211_get_conn_bss(wdev);
293 if (wdev->conn->state == CFG80211_CONN_SCAN_AGAIN)
297 wdev->netdev,
298 wdev->conn->params.bssid,
307 struct wireless_dev *wdev = dev->ieee80211_ptr;
309 mutex_lock(&wiphy_to_dev(wdev->wiphy)->devlist_mtx);
310 wdev_lock(wdev);
312 wdev_unlock(wdev);
313 mutex_unlock(&wiphy_to_dev(wdev->wiphy)->devlist_mtx);
319 struct wireless_dev *wdev = dev->ieee80211_ptr;
320 struct wiphy *wiphy = wdev->wiphy;
325 ASSERT_WDEV_LOCK(wdev);
328 if (wdev->sme_state != CFG80211_SME_CONNECTING)
331 if (WARN_ON(!wdev->conn))
335 wdev->conn->auto_auth &&
336 wdev->conn->params.auth_type != NL80211_AUTHTYPE_NETWORK_EAP) {
338 switch (wdev->conn->params.auth_type) {
340 if (wdev->connect_keys)
341 wdev->conn->params.auth_type =
344 wdev->conn->params.auth_type =
348 wdev->conn->params.auth_type =
353 wdev->conn->params.auth_type =
357 wdev->conn->state = CFG80211_CONN_AUTHENTICATE_NEXT;
362 } else if (wdev->sme_state == CFG80211_SME_CONNECTING &&
363 wdev->conn->state == CFG80211_CONN_AUTHENTICATING) {
364 wdev->conn->state = CFG80211_CONN_ASSOCIATE_NEXT;
369 bool cfg80211_sme_failed_reassoc(struct wireless_dev *wdev)
371 struct wiphy *wiphy = wdev->wiphy;
374 if (WARN_ON(!wdev->conn))
377 if (!wdev->conn->prev_bssid_valid)
384 wdev->conn->prev_bssid_valid = false;
385 wdev->conn->state = CFG80211_CONN_ASSOCIATE_NEXT;
391 void cfg80211_sme_failed_assoc(struct wireless_dev *wdev)
393 struct wiphy *wiphy = wdev->wiphy;
396 wdev->conn->state = CFG80211_CONN_DEAUTH_ASSOC_FAIL;
406 struct wireless_dev *wdev = dev->ieee80211_ptr;
412 ASSERT_WDEV_LOCK(wdev);
414 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_STATION))
417 if (wdev->sme_state != CFG80211_SME_CONNECTING)
420 nl80211_send_connect_result(wiphy_to_dev(wdev->wiphy), dev,
443 memcpy(wdev->wext.prev_bssid, bssid, ETH_ALEN);
444 wdev->wext.prev_bssid_valid = true;
450 if (wdev->current_bss) {
451 cfg80211_unhold_bss(wdev->current_bss);
452 cfg80211_put_bss(&wdev->current_bss->pub);
453 wdev->current_bss = NULL;
456 if (wdev->conn)
457 wdev->conn->state = CFG80211_CONN_IDLE;
460 wdev->sme_state = CFG80211_SME_IDLE;
461 if (wdev->conn)
462 kfree(wdev->conn->ie);
463 kfree(wdev->conn);
464 wdev->conn = NULL;
465 kfree(wdev->connect_keys);
466 wdev->connect_keys = NULL;
467 wdev->ssid_len = 0;
472 bss = cfg80211_get_bss(wdev->wiphy, NULL, bssid,
473 wdev->ssid, wdev->ssid_len,
481 wdev->current_bss = bss_from_pub(bss);
483 wdev->sme_state = CFG80211_SME_CONNECTED;
484 cfg80211_upload_connect_keys(wdev);
496 regulatory_hint_11d(wdev->wiphy,
507 struct wireless_dev *wdev = dev->ieee80211_ptr;
508 struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy);
512 CFG80211_DEV_WARN_ON(wdev->sme_state != CFG80211_SME_CONNECTING);
533 spin_lock_irqsave(&wdev->event_lock, flags);
534 list_add_tail(&ev->list, &wdev->event_list);
535 spin_unlock_irqrestore(&wdev->event_lock, flags);
540 void __cfg80211_roamed(struct wireless_dev *wdev, const u8 *bssid,
549 ASSERT_WDEV_LOCK(wdev);
551 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_STATION))
554 if (wdev->sme_state != CFG80211_SME_CONNECTED)
558 if (WARN_ON(!wdev->current_bss)) {
562 cfg80211_unhold_bss(wdev->current_bss);
563 cfg80211_put_bss(&wdev->current_bss->pub);
564 wdev->current_bss = NULL;
566 bss = cfg80211_get_bss(wdev->wiphy, NULL, bssid,
567 wdev->ssid, wdev->ssid_len,
574 wdev->current_bss = bss_from_pub(bss);
576 nl80211_send_roamed(wiphy_to_dev(wdev->wiphy), wdev->netdev, bssid,
584 wireless_send_event(wdev->netdev, IWEVASSOCREQIE,
591 wireless_send_event(wdev->netdev, IWEVASSOCRESPIE,
598 memcpy(wdev->wext.prev_bssid, bssid, ETH_ALEN);
599 wdev->wext.prev_bssid_valid = true;
600 wireless_send_event(wdev->netdev, SIOCGIWAP, &wrqu, NULL);
608 struct wireless_dev *wdev = dev->ieee80211_ptr;
609 struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy);
613 CFG80211_DEV_WARN_ON(wdev->sme_state != CFG80211_SME_CONNECTED);
628 spin_lock_irqsave(&wdev->event_lock, flags);
629 list_add_tail(&ev->list, &wdev->event_list);
630 spin_unlock_irqrestore(&wdev->event_lock, flags);
638 struct wireless_dev *wdev = dev->ieee80211_ptr;
639 struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy);
645 ASSERT_WDEV_LOCK(wdev);
647 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_STATION))
650 if (wdev->sme_state != CFG80211_SME_CONNECTED)
653 if (wdev->current_bss) {
654 cfg80211_unhold_bss(wdev->current_bss);
655 cfg80211_put_bss(&wdev->current_bss->pub);
658 wdev->current_bss = NULL;
659 wdev->sme_state = CFG80211_SME_IDLE;
660 wdev->ssid_len = 0;
662 if (wdev->conn) {
666 kfree(wdev->conn->ie);
667 wdev->conn->ie = NULL;
668 kfree(wdev->conn);
669 wdev->conn = NULL;
680 if (!wdev->auth_bsses[i])
682 bssid = wdev->auth_bsses[i]->pub.bssid;
698 rdev->ops->del_key(wdev->wiphy, dev, i, NULL);
704 wdev->wext.connect.ssid_len = 0;
713 struct wireless_dev *wdev = dev->ieee80211_ptr;
714 struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy);
718 CFG80211_DEV_WARN_ON(wdev->sme_state != CFG80211_SME_CONNECTED);
730 spin_lock_irqsave(&wdev->event_lock, flags);
731 list_add_tail(&ev->list, &wdev->event_list);
732 spin_unlock_irqrestore(&wdev->event_lock, flags);
743 struct wireless_dev *wdev = dev->ieee80211_ptr;
747 ASSERT_WDEV_LOCK(wdev);
749 if (wdev->sme_state != CFG80211_SME_IDLE)
752 if (WARN_ON(wdev->connect_keys)) {
753 kfree(wdev->connect_keys);
754 wdev->connect_keys = NULL;
788 if (WARN_ON(wdev->conn))
791 wdev->conn = kzalloc(sizeof(*wdev->conn), GFP_KERNEL);
792 if (!wdev->conn)
798 memcpy(&wdev->conn->params, connect, sizeof(*connect));
800 wdev->conn->params.bssid = wdev->conn->bssid;
801 memcpy(wdev->conn->bssid, connect->bssid, ETH_ALEN);
805 wdev->conn->ie = kmemdup(connect->ie, connect->ie_len,
807 wdev->conn->params.ie = wdev->conn->ie;
808 if (!wdev->conn->ie) {
809 kfree(wdev->conn);
810 wdev->conn = NULL;
816 wdev->conn->auto_auth = true;
818 wdev->conn->params.auth_type =
821 wdev->conn->auto_auth = false;
824 memcpy(wdev->ssid, connect->ssid, connect->ssid_len);
825 wdev->ssid_len = connect->ssid_len;
826 wdev->conn->params.ssid = wdev->ssid;
827 wdev->conn->params.ssid_len = connect->ssid_len;
830 bss = cfg80211_get_conn_bss(wdev);
832 wdev->sme_state = CFG80211_SME_CONNECTING;
833 wdev->connect_keys = connkeys;
836 memcpy(wdev->conn->prev_bssid, prev_bssid, ETH_ALEN);
837 wdev->conn->prev_bssid_valid = true;
842 wdev->conn->state = CFG80211_CONN_AUTHENTICATE_NEXT;
843 err = cfg80211_conn_do_work(wdev);
847 err = cfg80211_conn_scan(wdev);
855 wdev->conn->state = CFG80211_CONN_SCAN_AGAIN;
859 kfree(wdev->conn->ie);
860 kfree(wdev->conn);
861 wdev->conn = NULL;
862 wdev->sme_state = CFG80211_SME_IDLE;
863 wdev->connect_keys = NULL;
864 wdev->ssid_len = 0;
869 wdev->sme_state = CFG80211_SME_CONNECTING;
870 wdev->connect_keys = connkeys;
873 wdev->connect_keys = NULL;
874 wdev->sme_state = CFG80211_SME_IDLE;
878 memcpy(wdev->ssid, connect->ssid, connect->ssid_len);
879 wdev->ssid_len = connect->ssid_len;
904 struct wireless_dev *wdev = dev->ieee80211_ptr;
907 ASSERT_WDEV_LOCK(wdev);
909 if (wdev->sme_state == CFG80211_SME_IDLE)
912 kfree(wdev->connect_keys);
913 wdev->connect_keys = NULL;
920 if (!wdev->conn) {
925 if (wdev->sme_state == CFG80211_SME_CONNECTING &&
926 (wdev->conn->state == CFG80211_CONN_SCANNING ||
927 wdev->conn->state == CFG80211_CONN_SCAN_AGAIN)) {
928 wdev->sme_state = CFG80211_SME_IDLE;
929 kfree(wdev->conn->ie);
930 kfree(wdev->conn);
931 wdev->conn = NULL;
932 wdev->ssid_len = 0;
936 /* wdev->conn->params.bssid must be set if > SCANNING */
938 wdev->conn->params.bssid,
948 if (wdev->sme_state == CFG80211_SME_CONNECTED)
950 else if (wdev->sme_state == CFG80211_SME_CONNECTING)
973 struct wireless_dev *wdev = dev->ieee80211_ptr;
974 struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy);
977 ASSERT_WDEV_LOCK(wdev);
979 if (!wdev->conn)
982 if (wdev->conn->state == CFG80211_CONN_IDLE)
990 if (!wdev->auth_bsses[idx])
993 memcpy(bssid, wdev->auth_bsses[idx]->pub.bssid, ETH_ALEN);
998 cfg80211_unhold_bss(wdev->auth_bsses[idx]);
999 cfg80211_put_bss(&wdev->auth_bsses[idx]->pub);
1000 wdev->auth_bsses[idx] = NULL;