aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorVladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>2013-05-28 08:17:53 -0400
committerJohn W. Linville <linville@tuxdriver.com>2013-05-29 15:22:32 -0400
commitb338f74e33e33616e8fe498b5b09da8a84a7b218 (patch)
treec1308e7257d4ac17b4c5f3fb02c07f8e31f24fe7 /drivers
parentadc2d1225bed4bbf68473e6b5c4b91d2445609cb (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.c4
-rw-r--r--drivers/net/wireless/ath/wil6210/main.c18
-rw-r--r--drivers/net/wireless/ath/wil6210/wil6210.h1
-rw-r--r--drivers/net/wireless/ath/wil6210/wmi.c3
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
187enum { /* for wil6210_priv.status */ 187enum { /* 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 */