diff options
author | Eyal Shapira <eyal@wizery.com> | 2012-01-31 04:57:20 -0500 |
---|---|---|
committer | Luciano Coelho <coelho@ti.com> | 2012-02-15 01:38:31 -0500 |
commit | d6bf9ada92c113e56151b6a993b9b9d5d03f1365 (patch) | |
tree | ed3fb37b10d1ab38cb6ec522031e659b92a45e4c /drivers/net | |
parent | 8332f0f6dc017aef9aa4a95a6a2bd6eba4c82d0a (diff) |
wl12xx: remove PS management code
Removal of PS management code from the driver as PS
is handled by the FW (dynamic PS)
Signed-off-by: Eyal Shapira <eyal@wizery.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/wireless/wl12xx/boot.c | 1 | ||||
-rw-r--r-- | drivers/net/wireless/wl12xx/conf.h | 7 | ||||
-rw-r--r-- | drivers/net/wireless/wl12xx/debugfs.c | 1 | ||||
-rw-r--r-- | drivers/net/wireless/wl12xx/event.c | 143 | ||||
-rw-r--r-- | drivers/net/wireless/wl12xx/event.h | 5 | ||||
-rw-r--r-- | drivers/net/wireless/wl12xx/main.c | 81 | ||||
-rw-r--r-- | drivers/net/wireless/wl12xx/wl12xx.h | 6 |
7 files changed, 5 insertions, 239 deletions
diff --git a/drivers/net/wireless/wl12xx/boot.c b/drivers/net/wireless/wl12xx/boot.c index eea2dda6e6e7..954101d03f06 100644 --- a/drivers/net/wireless/wl12xx/boot.c +++ b/drivers/net/wireless/wl12xx/boot.c | |||
@@ -448,7 +448,6 @@ static int wl1271_boot_run_firmware(struct wl1271 *wl) | |||
448 | /* unmask required mbox events */ | 448 | /* unmask required mbox events */ |
449 | wl->event_mask = BSS_LOSE_EVENT_ID | | 449 | wl->event_mask = BSS_LOSE_EVENT_ID | |
450 | SCAN_COMPLETE_EVENT_ID | | 450 | SCAN_COMPLETE_EVENT_ID | |
451 | PS_REPORT_EVENT_ID | | ||
452 | ROLE_STOP_COMPLETE_EVENT_ID | | 451 | ROLE_STOP_COMPLETE_EVENT_ID | |
453 | RSSI_SNR_TRIGGER_0_EVENT_ID | | 452 | RSSI_SNR_TRIGGER_0_EVENT_ID | |
454 | PSPOLL_DELIVERY_FAILURE_EVENT_ID | | 453 | PSPOLL_DELIVERY_FAILURE_EVENT_ID | |
diff --git a/drivers/net/wireless/wl12xx/conf.h b/drivers/net/wireless/wl12xx/conf.h index 1bcfb017058d..47cf80f0b036 100644 --- a/drivers/net/wireless/wl12xx/conf.h +++ b/drivers/net/wireless/wl12xx/conf.h | |||
@@ -868,13 +868,6 @@ struct conf_conn_settings { | |||
868 | u8 ps_poll_threshold; | 868 | u8 ps_poll_threshold; |
869 | 869 | ||
870 | /* | 870 | /* |
871 | * PS Poll failure recovery ACTIVE period length | ||
872 | * | ||
873 | * Range: u32 (ms) | ||
874 | */ | ||
875 | u32 ps_poll_recovery_period; | ||
876 | |||
877 | /* | ||
878 | * Configuration of signal average weights. | 871 | * Configuration of signal average weights. |
879 | */ | 872 | */ |
880 | struct conf_sig_weights sig_weights; | 873 | struct conf_sig_weights sig_weights; |
diff --git a/drivers/net/wireless/wl12xx/debugfs.c b/drivers/net/wireless/wl12xx/debugfs.c index 15eb3a9c30ca..5e96e059f2b5 100644 --- a/drivers/net/wireless/wl12xx/debugfs.c +++ b/drivers/net/wireless/wl12xx/debugfs.c | |||
@@ -471,7 +471,6 @@ static ssize_t vifs_state_read(struct file *file, char __user *user_buf, | |||
471 | VIF_STATE_PRINT_INT(default_key); | 471 | VIF_STATE_PRINT_INT(default_key); |
472 | VIF_STATE_PRINT_INT(aid); | 472 | VIF_STATE_PRINT_INT(aid); |
473 | VIF_STATE_PRINT_INT(session_counter); | 473 | VIF_STATE_PRINT_INT(session_counter); |
474 | VIF_STATE_PRINT_INT(ps_poll_failures); | ||
475 | VIF_STATE_PRINT_INT(psm_entry_retry); | 474 | VIF_STATE_PRINT_INT(psm_entry_retry); |
476 | VIF_STATE_PRINT_INT(power_level); | 475 | VIF_STATE_PRINT_INT(power_level); |
477 | VIF_STATE_PRINT_INT(rssi_thold); | 476 | VIF_STATE_PRINT_INT(rssi_thold); |
diff --git a/drivers/net/wireless/wl12xx/event.c b/drivers/net/wireless/wl12xx/event.c index cfc38ea21e4a..05cd2ce927c6 100644 --- a/drivers/net/wireless/wl12xx/event.c +++ b/drivers/net/wireless/wl12xx/event.c | |||
@@ -30,133 +30,6 @@ | |||
30 | #include "scan.h" | 30 | #include "scan.h" |
31 | #include "wl12xx_80211.h" | 31 | #include "wl12xx_80211.h" |
32 | 32 | ||
33 | void wl1271_pspoll_work(struct work_struct *work) | ||
34 | { | ||
35 | struct ieee80211_vif *vif; | ||
36 | struct wl12xx_vif *wlvif; | ||
37 | struct delayed_work *dwork; | ||
38 | struct wl1271 *wl; | ||
39 | int ret; | ||
40 | |||
41 | dwork = container_of(work, struct delayed_work, work); | ||
42 | wlvif = container_of(dwork, struct wl12xx_vif, pspoll_work); | ||
43 | vif = container_of((void *)wlvif, struct ieee80211_vif, drv_priv); | ||
44 | wl = wlvif->wl; | ||
45 | |||
46 | wl1271_debug(DEBUG_EVENT, "pspoll work"); | ||
47 | |||
48 | mutex_lock(&wl->mutex); | ||
49 | |||
50 | if (unlikely(wl->state == WL1271_STATE_OFF)) | ||
51 | goto out; | ||
52 | |||
53 | if (!test_and_clear_bit(WLVIF_FLAG_PSPOLL_FAILURE, &wlvif->flags)) | ||
54 | goto out; | ||
55 | |||
56 | if (!test_bit(WLVIF_FLAG_STA_ASSOCIATED, &wlvif->flags)) | ||
57 | goto out; | ||
58 | |||
59 | /* | ||
60 | * if we end up here, then we were in powersave when the pspoll | ||
61 | * delivery failure occurred, and no-one changed state since, so | ||
62 | * we should go back to powersave. | ||
63 | */ | ||
64 | ret = wl1271_ps_elp_wakeup(wl); | ||
65 | if (ret < 0) | ||
66 | goto out; | ||
67 | |||
68 | wl1271_ps_set_mode(wl, wlvif, STATION_POWER_SAVE_MODE, | ||
69 | wlvif->basic_rate, true); | ||
70 | |||
71 | wl1271_ps_elp_sleep(wl); | ||
72 | out: | ||
73 | mutex_unlock(&wl->mutex); | ||
74 | }; | ||
75 | |||
76 | static void wl1271_event_pspoll_delivery_fail(struct wl1271 *wl, | ||
77 | struct wl12xx_vif *wlvif) | ||
78 | { | ||
79 | int delay = wl->conf.conn.ps_poll_recovery_period; | ||
80 | int ret; | ||
81 | |||
82 | wlvif->ps_poll_failures++; | ||
83 | if (wlvif->ps_poll_failures == 1) | ||
84 | wl1271_info("AP with dysfunctional ps-poll, " | ||
85 | "trying to work around it."); | ||
86 | |||
87 | /* force active mode receive data from the AP */ | ||
88 | if (test_bit(WLVIF_FLAG_PSM, &wlvif->flags)) { | ||
89 | ret = wl1271_ps_set_mode(wl, wlvif, STATION_ACTIVE_MODE, | ||
90 | wlvif->basic_rate, true); | ||
91 | if (ret < 0) | ||
92 | return; | ||
93 | set_bit(WLVIF_FLAG_PSPOLL_FAILURE, &wlvif->flags); | ||
94 | ieee80211_queue_delayed_work(wl->hw, &wlvif->pspoll_work, | ||
95 | msecs_to_jiffies(delay)); | ||
96 | } | ||
97 | |||
98 | /* | ||
99 | * If already in active mode, lets we should be getting data from | ||
100 | * the AP right away. If we enter PSM too fast after this, and data | ||
101 | * remains on the AP, we will get another event like this, and we'll | ||
102 | * go into active once more. | ||
103 | */ | ||
104 | } | ||
105 | |||
106 | static int wl1271_event_ps_report(struct wl1271 *wl, | ||
107 | struct wl12xx_vif *wlvif, | ||
108 | struct event_mailbox *mbox, | ||
109 | bool *beacon_loss) | ||
110 | { | ||
111 | int ret = 0; | ||
112 | u32 total_retries = wl->conf.conn.psm_entry_retries; | ||
113 | |||
114 | wl1271_debug(DEBUG_EVENT, "ps_status: 0x%x", mbox->ps_status); | ||
115 | |||
116 | switch (mbox->ps_status) { | ||
117 | case EVENT_ENTER_POWER_SAVE_FAIL: | ||
118 | wl1271_debug(DEBUG_PSM, "PSM entry failed"); | ||
119 | |||
120 | if (!test_bit(WLVIF_FLAG_PSM, &wlvif->flags)) { | ||
121 | /* remain in active mode */ | ||
122 | wlvif->psm_entry_retry = 0; | ||
123 | break; | ||
124 | } | ||
125 | |||
126 | if (wlvif->psm_entry_retry < total_retries) { | ||
127 | wlvif->psm_entry_retry++; | ||
128 | ret = wl1271_ps_set_mode(wl, wlvif, | ||
129 | STATION_POWER_SAVE_MODE, | ||
130 | wlvif->basic_rate, true); | ||
131 | } else { | ||
132 | wl1271_info("No ack to nullfunc from AP."); | ||
133 | wlvif->psm_entry_retry = 0; | ||
134 | *beacon_loss = true; | ||
135 | } | ||
136 | break; | ||
137 | case EVENT_ENTER_POWER_SAVE_SUCCESS: | ||
138 | wlvif->psm_entry_retry = 0; | ||
139 | |||
140 | /* | ||
141 | * BET has only a minor effect in 5GHz and masks | ||
142 | * channel switch IEs, so we only enable BET on 2.4GHz | ||
143 | */ | ||
144 | if (wlvif->band == IEEE80211_BAND_2GHZ) | ||
145 | /* enable beacon early termination */ | ||
146 | ret = wl1271_acx_bet_enable(wl, wlvif, true); | ||
147 | |||
148 | if (wlvif->ps_compl) { | ||
149 | complete(wlvif->ps_compl); | ||
150 | wlvif->ps_compl = NULL; | ||
151 | } | ||
152 | break; | ||
153 | default: | ||
154 | break; | ||
155 | } | ||
156 | |||
157 | return ret; | ||
158 | } | ||
159 | |||
160 | static void wl1271_event_rssi_trigger(struct wl1271 *wl, | 33 | static void wl1271_event_rssi_trigger(struct wl1271 *wl, |
161 | struct wl12xx_vif *wlvif, | 34 | struct wl12xx_vif *wlvif, |
162 | struct event_mailbox *mbox) | 35 | struct event_mailbox *mbox) |
@@ -237,7 +110,6 @@ static int wl1271_event_process(struct wl1271 *wl, struct event_mailbox *mbox) | |||
237 | { | 110 | { |
238 | struct ieee80211_vif *vif; | 111 | struct ieee80211_vif *vif; |
239 | struct wl12xx_vif *wlvif; | 112 | struct wl12xx_vif *wlvif; |
240 | int ret; | ||
241 | u32 vector; | 113 | u32 vector; |
242 | bool beacon_loss = false; | 114 | bool beacon_loss = false; |
243 | bool disconnect_sta = false; | 115 | bool disconnect_sta = false; |
@@ -293,21 +165,6 @@ static int wl1271_event_process(struct wl1271 *wl, struct event_mailbox *mbox) | |||
293 | beacon_loss = true; | 165 | beacon_loss = true; |
294 | } | 166 | } |
295 | 167 | ||
296 | if (vector & PS_REPORT_EVENT_ID) { | ||
297 | wl1271_debug(DEBUG_EVENT, "PS_REPORT_EVENT"); | ||
298 | wl12xx_for_each_wlvif_sta(wl, wlvif) { | ||
299 | ret = wl1271_event_ps_report(wl, wlvif, | ||
300 | mbox, &beacon_loss); | ||
301 | if (ret < 0) | ||
302 | return ret; | ||
303 | } | ||
304 | } | ||
305 | |||
306 | if (vector & PSPOLL_DELIVERY_FAILURE_EVENT_ID) | ||
307 | wl12xx_for_each_wlvif_sta(wl, wlvif) { | ||
308 | wl1271_event_pspoll_delivery_fail(wl, wlvif); | ||
309 | } | ||
310 | |||
311 | if (vector & RSSI_SNR_TRIGGER_0_EVENT_ID) { | 168 | if (vector & RSSI_SNR_TRIGGER_0_EVENT_ID) { |
312 | /* TODO: check actual multi-role support */ | 169 | /* TODO: check actual multi-role support */ |
313 | wl1271_debug(DEBUG_EVENT, "RSSI_SNR_TRIGGER_0_EVENT"); | 170 | wl1271_debug(DEBUG_EVENT, "RSSI_SNR_TRIGGER_0_EVENT"); |
diff --git a/drivers/net/wireless/wl12xx/event.h b/drivers/net/wireless/wl12xx/event.h index b41f730f11dd..057d193d3525 100644 --- a/drivers/net/wireless/wl12xx/event.h +++ b/drivers/net/wireless/wl12xx/event.h | |||
@@ -51,7 +51,7 @@ enum { | |||
51 | SCAN_COMPLETE_EVENT_ID = BIT(10), | 51 | SCAN_COMPLETE_EVENT_ID = BIT(10), |
52 | WFD_DISCOVERY_COMPLETE_EVENT_ID = BIT(11), | 52 | WFD_DISCOVERY_COMPLETE_EVENT_ID = BIT(11), |
53 | AP_DISCOVERY_COMPLETE_EVENT_ID = BIT(12), | 53 | AP_DISCOVERY_COMPLETE_EVENT_ID = BIT(12), |
54 | PS_REPORT_EVENT_ID = BIT(13), | 54 | RESERVED1 = BIT(13), |
55 | PSPOLL_DELIVERY_FAILURE_EVENT_ID = BIT(14), | 55 | PSPOLL_DELIVERY_FAILURE_EVENT_ID = BIT(14), |
56 | ROLE_STOP_COMPLETE_EVENT_ID = BIT(15), | 56 | ROLE_STOP_COMPLETE_EVENT_ID = BIT(15), |
57 | RADAR_DETECTED_EVENT_ID = BIT(16), | 57 | RADAR_DETECTED_EVENT_ID = BIT(16), |
@@ -96,7 +96,7 @@ struct event_mailbox { | |||
96 | s8 rssi_snr_trigger_metric[NUM_OF_RSSI_SNR_TRIGGERS]; | 96 | s8 rssi_snr_trigger_metric[NUM_OF_RSSI_SNR_TRIGGERS]; |
97 | u8 change_auto_mode_timeout; | 97 | u8 change_auto_mode_timeout; |
98 | u8 scheduled_scan_status; | 98 | u8 scheduled_scan_status; |
99 | u8 ps_status; | 99 | u8 reserved4; |
100 | /* tuned channel (roc) */ | 100 | /* tuned channel (roc) */ |
101 | u8 roc_channel; | 101 | u8 roc_channel; |
102 | 102 | ||
@@ -135,6 +135,5 @@ struct event_mailbox { | |||
135 | int wl1271_event_unmask(struct wl1271 *wl); | 135 | int wl1271_event_unmask(struct wl1271 *wl); |
136 | void wl1271_event_mbox_config(struct wl1271 *wl); | 136 | void wl1271_event_mbox_config(struct wl1271 *wl); |
137 | int wl1271_event_handle(struct wl1271 *wl, u8 mbox); | 137 | int wl1271_event_handle(struct wl1271 *wl, u8 mbox); |
138 | void wl1271_pspoll_work(struct work_struct *work); | ||
139 | 138 | ||
140 | #endif | 139 | #endif |
diff --git a/drivers/net/wireless/wl12xx/main.c b/drivers/net/wireless/wl12xx/main.c index a339a85ecfb0..74d4abb25ab1 100644 --- a/drivers/net/wireless/wl12xx/main.c +++ b/drivers/net/wireless/wl12xx/main.c | |||
@@ -235,7 +235,6 @@ static struct conf_drv_settings default_conf = { | |||
235 | .broadcast_timeout = 20000, | 235 | .broadcast_timeout = 20000, |
236 | .rx_broadcast_in_ps = 1, | 236 | .rx_broadcast_in_ps = 1, |
237 | .ps_poll_threshold = 10, | 237 | .ps_poll_threshold = 10, |
238 | .ps_poll_recovery_period = 700, | ||
239 | .bet_enable = CONF_BET_MODE_ENABLE, | 238 | .bet_enable = CONF_BET_MODE_ENABLE, |
240 | .bet_max_consecutive = 50, | 239 | .bet_max_consecutive = 50, |
241 | .psm_entry_retries = 8, | 240 | .psm_entry_retries = 8, |
@@ -1570,57 +1569,6 @@ static struct notifier_block wl1271_dev_notifier = { | |||
1570 | }; | 1569 | }; |
1571 | 1570 | ||
1572 | #ifdef CONFIG_PM | 1571 | #ifdef CONFIG_PM |
1573 | static int wl1271_configure_suspend_sta(struct wl1271 *wl, | ||
1574 | struct wl12xx_vif *wlvif) | ||
1575 | { | ||
1576 | int ret = 0; | ||
1577 | |||
1578 | mutex_lock(&wl->mutex); | ||
1579 | |||
1580 | if (!test_bit(WLVIF_FLAG_STA_ASSOCIATED, &wlvif->flags)) | ||
1581 | goto out_unlock; | ||
1582 | |||
1583 | ret = wl1271_ps_elp_wakeup(wl); | ||
1584 | if (ret < 0) | ||
1585 | goto out_unlock; | ||
1586 | |||
1587 | /* enter psm if needed*/ | ||
1588 | if (!test_bit(WLVIF_FLAG_PSM, &wlvif->flags)) { | ||
1589 | DECLARE_COMPLETION_ONSTACK(compl); | ||
1590 | |||
1591 | wlvif->ps_compl = &compl; | ||
1592 | ret = wl1271_ps_set_mode(wl, wlvif, STATION_POWER_SAVE_MODE, | ||
1593 | wlvif->basic_rate, true); | ||
1594 | if (ret < 0) | ||
1595 | goto out_sleep; | ||
1596 | |||
1597 | /* we must unlock here so we will be able to get events */ | ||
1598 | wl1271_ps_elp_sleep(wl); | ||
1599 | mutex_unlock(&wl->mutex); | ||
1600 | |||
1601 | ret = wait_for_completion_timeout( | ||
1602 | &compl, msecs_to_jiffies(WL1271_PS_COMPLETE_TIMEOUT)); | ||
1603 | |||
1604 | mutex_lock(&wl->mutex); | ||
1605 | if (ret <= 0) { | ||
1606 | wl1271_warning("couldn't enter ps mode!"); | ||
1607 | ret = -EBUSY; | ||
1608 | goto out_cleanup; | ||
1609 | } | ||
1610 | |||
1611 | ret = wl1271_ps_elp_wakeup(wl); | ||
1612 | if (ret < 0) | ||
1613 | goto out_cleanup; | ||
1614 | } | ||
1615 | out_sleep: | ||
1616 | wl1271_ps_elp_sleep(wl); | ||
1617 | out_cleanup: | ||
1618 | wlvif->ps_compl = NULL; | ||
1619 | out_unlock: | ||
1620 | mutex_unlock(&wl->mutex); | ||
1621 | return ret; | ||
1622 | |||
1623 | } | ||
1624 | 1572 | ||
1625 | static int wl1271_configure_suspend_ap(struct wl1271 *wl, | 1573 | static int wl1271_configure_suspend_ap(struct wl1271 *wl, |
1626 | struct wl12xx_vif *wlvif) | 1574 | struct wl12xx_vif *wlvif) |
@@ -1648,8 +1596,6 @@ out_unlock: | |||
1648 | static int wl1271_configure_suspend(struct wl1271 *wl, | 1596 | static int wl1271_configure_suspend(struct wl1271 *wl, |
1649 | struct wl12xx_vif *wlvif) | 1597 | struct wl12xx_vif *wlvif) |
1650 | { | 1598 | { |
1651 | if (wlvif->bss_type == BSS_TYPE_STA_BSS) | ||
1652 | return wl1271_configure_suspend_sta(wl, wlvif); | ||
1653 | if (wlvif->bss_type == BSS_TYPE_AP_BSS) | 1599 | if (wlvif->bss_type == BSS_TYPE_AP_BSS) |
1654 | return wl1271_configure_suspend_ap(wl, wlvif); | 1600 | return wl1271_configure_suspend_ap(wl, wlvif); |
1655 | return 0; | 1601 | return 0; |
@@ -1659,10 +1605,9 @@ static void wl1271_configure_resume(struct wl1271 *wl, | |||
1659 | struct wl12xx_vif *wlvif) | 1605 | struct wl12xx_vif *wlvif) |
1660 | { | 1606 | { |
1661 | int ret; | 1607 | int ret; |
1662 | bool is_sta = wlvif->bss_type == BSS_TYPE_STA_BSS; | ||
1663 | bool is_ap = wlvif->bss_type == BSS_TYPE_AP_BSS; | 1608 | bool is_ap = wlvif->bss_type == BSS_TYPE_AP_BSS; |
1664 | 1609 | ||
1665 | if (!is_sta && !is_ap) | 1610 | if (!is_ap) |
1666 | return; | 1611 | return; |
1667 | 1612 | ||
1668 | mutex_lock(&wl->mutex); | 1613 | mutex_lock(&wl->mutex); |
@@ -1670,14 +1615,7 @@ static void wl1271_configure_resume(struct wl1271 *wl, | |||
1670 | if (ret < 0) | 1615 | if (ret < 0) |
1671 | goto out; | 1616 | goto out; |
1672 | 1617 | ||
1673 | if (is_sta) { | 1618 | wl1271_acx_beacon_filter_opt(wl, wlvif, false); |
1674 | /* exit psm if it wasn't configured */ | ||
1675 | if (!test_bit(WLVIF_FLAG_PSM_REQUESTED, &wlvif->flags)) | ||
1676 | wl1271_ps_set_mode(wl, wlvif, STATION_ACTIVE_MODE, | ||
1677 | wlvif->basic_rate, true); | ||
1678 | } else if (is_ap) { | ||
1679 | wl1271_acx_beacon_filter_opt(wl, wlvif, false); | ||
1680 | } | ||
1681 | 1619 | ||
1682 | wl1271_ps_elp_sleep(wl); | 1620 | wl1271_ps_elp_sleep(wl); |
1683 | out: | 1621 | out: |
@@ -1719,9 +1657,6 @@ static int wl1271_op_suspend(struct ieee80211_hw *hw, | |||
1719 | 1657 | ||
1720 | wl1271_enable_interrupts(wl); | 1658 | wl1271_enable_interrupts(wl); |
1721 | flush_work(&wl->tx_work); | 1659 | flush_work(&wl->tx_work); |
1722 | wl12xx_for_each_wlvif(wl, wlvif) { | ||
1723 | flush_delayed_work(&wlvif->pspoll_work); | ||
1724 | } | ||
1725 | flush_delayed_work(&wl->elp_work); | 1660 | flush_delayed_work(&wl->elp_work); |
1726 | 1661 | ||
1727 | return 0; | 1662 | return 0; |
@@ -1994,7 +1929,6 @@ static int wl12xx_init_vif_data(struct wl1271 *wl, struct ieee80211_vif *vif) | |||
1994 | wl1271_rx_streaming_enable_work); | 1929 | wl1271_rx_streaming_enable_work); |
1995 | INIT_WORK(&wlvif->rx_streaming_disable_work, | 1930 | INIT_WORK(&wlvif->rx_streaming_disable_work, |
1996 | wl1271_rx_streaming_disable_work); | 1931 | wl1271_rx_streaming_disable_work); |
1997 | INIT_DELAYED_WORK(&wlvif->pspoll_work, wl1271_pspoll_work); | ||
1998 | INIT_LIST_HEAD(&wlvif->list); | 1932 | INIT_LIST_HEAD(&wlvif->list); |
1999 | 1933 | ||
2000 | setup_timer(&wlvif->rx_streaming_timer, wl1271_rx_streaming_timer, | 1934 | setup_timer(&wlvif->rx_streaming_timer, wl1271_rx_streaming_timer, |
@@ -2278,10 +2212,10 @@ deinit: | |||
2278 | wl->sta_count--; | 2212 | wl->sta_count--; |
2279 | 2213 | ||
2280 | mutex_unlock(&wl->mutex); | 2214 | mutex_unlock(&wl->mutex); |
2215 | |||
2281 | del_timer_sync(&wlvif->rx_streaming_timer); | 2216 | del_timer_sync(&wlvif->rx_streaming_timer); |
2282 | cancel_work_sync(&wlvif->rx_streaming_enable_work); | 2217 | cancel_work_sync(&wlvif->rx_streaming_enable_work); |
2283 | cancel_work_sync(&wlvif->rx_streaming_disable_work); | 2218 | cancel_work_sync(&wlvif->rx_streaming_disable_work); |
2284 | cancel_delayed_work_sync(&wlvif->pspoll_work); | ||
2285 | 2219 | ||
2286 | mutex_lock(&wl->mutex); | 2220 | mutex_lock(&wl->mutex); |
2287 | } | 2221 | } |
@@ -2528,13 +2462,6 @@ static int wl12xx_config_vif(struct wl1271 *wl, struct wl12xx_vif *wlvif, | |||
2528 | } | 2462 | } |
2529 | } | 2463 | } |
2530 | 2464 | ||
2531 | /* | ||
2532 | * if mac80211 changes the PSM mode, make sure the mode is not | ||
2533 | * incorrectly changed after the pspoll failure active window. | ||
2534 | */ | ||
2535 | if (changed & IEEE80211_CONF_CHANGE_PS) | ||
2536 | clear_bit(WLVIF_FLAG_PSPOLL_FAILURE, &wlvif->flags); | ||
2537 | |||
2538 | if (conf->flags & IEEE80211_CONF_PS && | 2465 | if (conf->flags & IEEE80211_CONF_PS && |
2539 | !test_bit(WLVIF_FLAG_PSM_REQUESTED, &wlvif->flags)) { | 2466 | !test_bit(WLVIF_FLAG_PSM_REQUESTED, &wlvif->flags)) { |
2540 | set_bit(WLVIF_FLAG_PSM_REQUESTED, &wlvif->flags); | 2467 | set_bit(WLVIF_FLAG_PSM_REQUESTED, &wlvif->flags); |
@@ -3708,8 +3635,6 @@ sta_not_found: | |||
3708 | wlvif->aid = bss_conf->aid; | 3635 | wlvif->aid = bss_conf->aid; |
3709 | set_assoc = true; | 3636 | set_assoc = true; |
3710 | 3637 | ||
3711 | wlvif->ps_poll_failures = 0; | ||
3712 | |||
3713 | /* | 3638 | /* |
3714 | * use basic rates from AP, and determine lowest rate | 3639 | * use basic rates from AP, and determine lowest rate |
3715 | * to use with control frames. | 3640 | * to use with control frames. |
diff --git a/drivers/net/wireless/wl12xx/wl12xx.h b/drivers/net/wireless/wl12xx/wl12xx.h index b9bfbfffc5c0..e18e6160fdab 100644 --- a/drivers/net/wireless/wl12xx/wl12xx.h +++ b/drivers/net/wireless/wl12xx/wl12xx.h | |||
@@ -565,12 +565,6 @@ struct wl12xx_vif { | |||
565 | /* Session counter for the chipset */ | 565 | /* Session counter for the chipset */ |
566 | int session_counter; | 566 | int session_counter; |
567 | 567 | ||
568 | struct completion *ps_compl; | ||
569 | struct delayed_work pspoll_work; | ||
570 | |||
571 | /* counter for ps-poll delivery failures */ | ||
572 | int ps_poll_failures; | ||
573 | |||
574 | /* retry counter for PSM entries */ | 568 | /* retry counter for PSM entries */ |
575 | u8 psm_entry_retry; | 569 | u8 psm_entry_retry; |
576 | 570 | ||