diff options
author | Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> | 2013-05-28 08:17:53 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2013-05-29 15:22:32 -0400 |
commit | b338f74e33e33616e8fe498b5b09da8a84a7b218 (patch) | |
tree | c1308e7257d4ac17b4c5f3fb02c07f8e31f24fe7 /drivers | |
parent | adc2d1225bed4bbf68473e6b5c4b91d2445609cb (diff) |
wil6210: Don't use wdev->sme_state
sme_state is private wdev's variable.
Track connection state internally
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/ath/wil6210/cfg80211.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/ath/wil6210/main.c | 18 | ||||
-rw-r--r-- | drivers/net/wireless/ath/wil6210/wil6210.h | 1 | ||||
-rw-r--r-- | drivers/net/wireless/ath/wil6210/wmi.c | 3 |
4 files changed, 13 insertions, 13 deletions
diff --git a/drivers/net/wireless/ath/wil6210/cfg80211.c b/drivers/net/wireless/ath/wil6210/cfg80211.c index c5d4a87abaaf..4eb05d0818c3 100644 --- a/drivers/net/wireless/ath/wil6210/cfg80211.c +++ b/drivers/net/wireless/ath/wil6210/cfg80211.c | |||
@@ -322,12 +322,16 @@ static int wil_cfg80211_connect(struct wiphy *wiphy, | |||
322 | * FW don't support scan after connection attempt | 322 | * FW don't support scan after connection attempt |
323 | */ | 323 | */ |
324 | set_bit(wil_status_dontscan, &wil->status); | 324 | set_bit(wil_status_dontscan, &wil->status); |
325 | set_bit(wil_status_fwconnecting, &wil->status); | ||
325 | 326 | ||
326 | rc = wmi_send(wil, WMI_CONNECT_CMDID, &conn, sizeof(conn)); | 327 | rc = wmi_send(wil, WMI_CONNECT_CMDID, &conn, sizeof(conn)); |
327 | if (rc == 0) { | 328 | if (rc == 0) { |
328 | /* Connect can take lots of time */ | 329 | /* Connect can take lots of time */ |
329 | mod_timer(&wil->connect_timer, | 330 | mod_timer(&wil->connect_timer, |
330 | jiffies + msecs_to_jiffies(2000)); | 331 | jiffies + msecs_to_jiffies(2000)); |
332 | } else { | ||
333 | clear_bit(wil_status_dontscan, &wil->status); | ||
334 | clear_bit(wil_status_fwconnecting, &wil->status); | ||
331 | } | 335 | } |
332 | 336 | ||
333 | out: | 337 | out: |
diff --git a/drivers/net/wireless/ath/wil6210/main.c b/drivers/net/wireless/ath/wil6210/main.c index ea49c8a18e15..c97b864667c5 100644 --- a/drivers/net/wireless/ath/wil6210/main.c +++ b/drivers/net/wireless/ath/wil6210/main.c | |||
@@ -56,27 +56,21 @@ static void _wil6210_disconnect(struct wil6210_priv *wil, void *bssid) | |||
56 | { | 56 | { |
57 | uint i; | 57 | uint i; |
58 | struct net_device *ndev = wil_to_ndev(wil); | 58 | struct net_device *ndev = wil_to_ndev(wil); |
59 | struct wireless_dev *wdev = wil->wdev; | ||
60 | 59 | ||
61 | wil_dbg_misc(wil, "%s()\n", __func__); | 60 | wil_dbg_misc(wil, "%s()\n", __func__); |
62 | 61 | ||
63 | wil_link_off(wil); | 62 | wil_link_off(wil); |
64 | clear_bit(wil_status_fwconnected, &wil->status); | 63 | if (test_bit(wil_status_fwconnected, &wil->status)) { |
65 | 64 | clear_bit(wil_status_fwconnected, &wil->status); | |
66 | switch (wdev->sme_state) { | 65 | cfg80211_disconnected(ndev, |
67 | case CFG80211_SME_CONNECTED: | 66 | WLAN_STATUS_UNSPECIFIED_FAILURE, |
68 | cfg80211_disconnected(ndev, WLAN_STATUS_UNSPECIFIED_FAILURE, | ||
69 | NULL, 0, GFP_KERNEL); | 67 | NULL, 0, GFP_KERNEL); |
70 | break; | 68 | } else if (test_bit(wil_status_fwconnecting, &wil->status)) { |
71 | case CFG80211_SME_CONNECTING: | ||
72 | cfg80211_connect_result(ndev, bssid, NULL, 0, NULL, 0, | 69 | cfg80211_connect_result(ndev, bssid, NULL, 0, NULL, 0, |
73 | WLAN_STATUS_UNSPECIFIED_FAILURE, | 70 | WLAN_STATUS_UNSPECIFIED_FAILURE, |
74 | GFP_KERNEL); | 71 | GFP_KERNEL); |
75 | break; | ||
76 | default: | ||
77 | break; | ||
78 | } | 72 | } |
79 | 73 | clear_bit(wil_status_fwconnecting, &wil->status); | |
80 | for (i = 0; i < ARRAY_SIZE(wil->vring_tx); i++) | 74 | for (i = 0; i < ARRAY_SIZE(wil->vring_tx); i++) |
81 | wil_vring_fini_tx(wil, i); | 75 | wil_vring_fini_tx(wil, i); |
82 | 76 | ||
diff --git a/drivers/net/wireless/ath/wil6210/wil6210.h b/drivers/net/wireless/ath/wil6210/wil6210.h index 2e3c26e1c975..373cf656f5b0 100644 --- a/drivers/net/wireless/ath/wil6210/wil6210.h +++ b/drivers/net/wireless/ath/wil6210/wil6210.h | |||
@@ -186,6 +186,7 @@ struct vring { | |||
186 | 186 | ||
187 | enum { /* for wil6210_priv.status */ | 187 | enum { /* for wil6210_priv.status */ |
188 | wil_status_fwready = 0, | 188 | wil_status_fwready = 0, |
189 | wil_status_fwconnecting, | ||
189 | wil_status_fwconnected, | 190 | wil_status_fwconnected, |
190 | wil_status_dontscan, | 191 | wil_status_dontscan, |
191 | wil_status_reset_done, | 192 | wil_status_reset_done, |
diff --git a/drivers/net/wireless/ath/wil6210/wmi.c b/drivers/net/wireless/ath/wil6210/wmi.c index a091eb11e392..527ffb543821 100644 --- a/drivers/net/wireless/ath/wil6210/wmi.c +++ b/drivers/net/wireless/ath/wil6210/wmi.c | |||
@@ -409,7 +409,7 @@ static void wmi_evt_connect(struct wil6210_priv *wil, int id, void *d, int len) | |||
409 | 409 | ||
410 | if ((wdev->iftype == NL80211_IFTYPE_STATION) || | 410 | if ((wdev->iftype == NL80211_IFTYPE_STATION) || |
411 | (wdev->iftype == NL80211_IFTYPE_P2P_CLIENT)) { | 411 | (wdev->iftype == NL80211_IFTYPE_P2P_CLIENT)) { |
412 | if (wdev->sme_state != CFG80211_SME_CONNECTING) { | 412 | if (!test_bit(wil_status_fwconnecting, &wil->status)) { |
413 | wil_err(wil, "Not in connecting state\n"); | 413 | wil_err(wil, "Not in connecting state\n"); |
414 | return; | 414 | return; |
415 | } | 415 | } |
@@ -433,6 +433,7 @@ static void wmi_evt_connect(struct wil6210_priv *wil, int id, void *d, int len) | |||
433 | 433 | ||
434 | cfg80211_new_sta(ndev, evt->bssid, &sinfo, GFP_KERNEL); | 434 | cfg80211_new_sta(ndev, evt->bssid, &sinfo, GFP_KERNEL); |
435 | } | 435 | } |
436 | clear_bit(wil_status_fwconnecting, &wil->status); | ||
436 | set_bit(wil_status_fwconnected, &wil->status); | 437 | set_bit(wil_status_fwconnected, &wil->status); |
437 | 438 | ||
438 | /* FIXME FW can transmit only ucast frames to peer */ | 439 | /* FIXME FW can transmit only ucast frames to peer */ |