diff options
Diffstat (limited to 'drivers/net/wireless/iwlegacy/iwl-scan.c')
-rw-r--r-- | drivers/net/wireless/iwlegacy/iwl-scan.c | 272 |
1 files changed, 136 insertions, 136 deletions
diff --git a/drivers/net/wireless/iwlegacy/iwl-scan.c b/drivers/net/wireless/iwlegacy/iwl-scan.c index 93e939cc9bc..0184d5bf04e 100644 --- a/drivers/net/wireless/iwlegacy/iwl-scan.c +++ b/drivers/net/wireless/iwlegacy/iwl-scan.c | |||
@@ -54,7 +54,7 @@ | |||
54 | #define IL_PASSIVE_DWELL_BASE (100) | 54 | #define IL_PASSIVE_DWELL_BASE (100) |
55 | #define IL_CHANNEL_TUNE_TIME 5 | 55 | #define IL_CHANNEL_TUNE_TIME 5 |
56 | 56 | ||
57 | static int il_send_scan_abort(struct il_priv *priv) | 57 | static int il_send_scan_abort(struct il_priv *il) |
58 | { | 58 | { |
59 | int ret; | 59 | int ret; |
60 | struct il_rx_packet *pkt; | 60 | struct il_rx_packet *pkt; |
@@ -66,14 +66,14 @@ static int il_send_scan_abort(struct il_priv *priv) | |||
66 | /* Exit instantly with error when device is not ready | 66 | /* Exit instantly with error when device is not ready |
67 | * to receive scan abort command or it does not perform | 67 | * to receive scan abort command or it does not perform |
68 | * hardware scan currently */ | 68 | * hardware scan currently */ |
69 | if (!test_bit(STATUS_READY, &priv->status) || | 69 | if (!test_bit(STATUS_READY, &il->status) || |
70 | !test_bit(STATUS_GEO_CONFIGURED, &priv->status) || | 70 | !test_bit(STATUS_GEO_CONFIGURED, &il->status) || |
71 | !test_bit(STATUS_SCAN_HW, &priv->status) || | 71 | !test_bit(STATUS_SCAN_HW, &il->status) || |
72 | test_bit(STATUS_FW_ERROR, &priv->status) || | 72 | test_bit(STATUS_FW_ERROR, &il->status) || |
73 | test_bit(STATUS_EXIT_PENDING, &priv->status)) | 73 | test_bit(STATUS_EXIT_PENDING, &il->status)) |
74 | return -EIO; | 74 | return -EIO; |
75 | 75 | ||
76 | ret = il_send_cmd_sync(priv, &cmd); | 76 | ret = il_send_cmd_sync(il, &cmd); |
77 | if (ret) | 77 | if (ret) |
78 | return ret; | 78 | return ret; |
79 | 79 | ||
@@ -85,73 +85,73 @@ static int il_send_scan_abort(struct il_priv *priv) | |||
85 | * can occur if we send the scan abort before we | 85 | * can occur if we send the scan abort before we |
86 | * the microcode has notified us that a scan is | 86 | * the microcode has notified us that a scan is |
87 | * completed. */ | 87 | * completed. */ |
88 | IL_DEBUG_SCAN(priv, "SCAN_ABORT ret %d.\n", pkt->u.status); | 88 | IL_DEBUG_SCAN(il, "SCAN_ABORT ret %d.\n", pkt->u.status); |
89 | ret = -EIO; | 89 | ret = -EIO; |
90 | } | 90 | } |
91 | 91 | ||
92 | il_free_pages(priv, cmd.reply_page); | 92 | il_free_pages(il, cmd.reply_page); |
93 | return ret; | 93 | return ret; |
94 | } | 94 | } |
95 | 95 | ||
96 | static void il_complete_scan(struct il_priv *priv, bool aborted) | 96 | static void il_complete_scan(struct il_priv *il, bool aborted) |
97 | { | 97 | { |
98 | /* check if scan was requested from mac80211 */ | 98 | /* check if scan was requested from mac80211 */ |
99 | if (priv->scan_request) { | 99 | if (il->scan_request) { |
100 | IL_DEBUG_SCAN(priv, "Complete scan in mac80211\n"); | 100 | IL_DEBUG_SCAN(il, "Complete scan in mac80211\n"); |
101 | ieee80211_scan_completed(priv->hw, aborted); | 101 | ieee80211_scan_completed(il->hw, aborted); |
102 | } | 102 | } |
103 | 103 | ||
104 | priv->scan_vif = NULL; | 104 | il->scan_vif = NULL; |
105 | priv->scan_request = NULL; | 105 | il->scan_request = NULL; |
106 | } | 106 | } |
107 | 107 | ||
108 | void il_force_scan_end(struct il_priv *priv) | 108 | void il_force_scan_end(struct il_priv *il) |
109 | { | 109 | { |
110 | lockdep_assert_held(&priv->mutex); | 110 | lockdep_assert_held(&il->mutex); |
111 | 111 | ||
112 | if (!test_bit(STATUS_SCANNING, &priv->status)) { | 112 | if (!test_bit(STATUS_SCANNING, &il->status)) { |
113 | IL_DEBUG_SCAN(priv, "Forcing scan end while not scanning\n"); | 113 | IL_DEBUG_SCAN(il, "Forcing scan end while not scanning\n"); |
114 | return; | 114 | return; |
115 | } | 115 | } |
116 | 116 | ||
117 | IL_DEBUG_SCAN(priv, "Forcing scan end\n"); | 117 | IL_DEBUG_SCAN(il, "Forcing scan end\n"); |
118 | clear_bit(STATUS_SCANNING, &priv->status); | 118 | clear_bit(STATUS_SCANNING, &il->status); |
119 | clear_bit(STATUS_SCAN_HW, &priv->status); | 119 | clear_bit(STATUS_SCAN_HW, &il->status); |
120 | clear_bit(STATUS_SCAN_ABORTING, &priv->status); | 120 | clear_bit(STATUS_SCAN_ABORTING, &il->status); |
121 | il_complete_scan(priv, true); | 121 | il_complete_scan(il, true); |
122 | } | 122 | } |
123 | 123 | ||
124 | static void il_do_scan_abort(struct il_priv *priv) | 124 | static void il_do_scan_abort(struct il_priv *il) |
125 | { | 125 | { |
126 | int ret; | 126 | int ret; |
127 | 127 | ||
128 | lockdep_assert_held(&priv->mutex); | 128 | lockdep_assert_held(&il->mutex); |
129 | 129 | ||
130 | if (!test_bit(STATUS_SCANNING, &priv->status)) { | 130 | if (!test_bit(STATUS_SCANNING, &il->status)) { |
131 | IL_DEBUG_SCAN(priv, "Not performing scan to abort\n"); | 131 | IL_DEBUG_SCAN(il, "Not performing scan to abort\n"); |
132 | return; | 132 | return; |
133 | } | 133 | } |
134 | 134 | ||
135 | if (test_and_set_bit(STATUS_SCAN_ABORTING, &priv->status)) { | 135 | if (test_and_set_bit(STATUS_SCAN_ABORTING, &il->status)) { |
136 | IL_DEBUG_SCAN(priv, "Scan abort in progress\n"); | 136 | IL_DEBUG_SCAN(il, "Scan abort in progress\n"); |
137 | return; | 137 | return; |
138 | } | 138 | } |
139 | 139 | ||
140 | ret = il_send_scan_abort(priv); | 140 | ret = il_send_scan_abort(il); |
141 | if (ret) { | 141 | if (ret) { |
142 | IL_DEBUG_SCAN(priv, "Send scan abort failed %d\n", ret); | 142 | IL_DEBUG_SCAN(il, "Send scan abort failed %d\n", ret); |
143 | il_force_scan_end(priv); | 143 | il_force_scan_end(il); |
144 | } else | 144 | } else |
145 | IL_DEBUG_SCAN(priv, "Successfully send scan abort\n"); | 145 | IL_DEBUG_SCAN(il, "Successfully send scan abort\n"); |
146 | } | 146 | } |
147 | 147 | ||
148 | /** | 148 | /** |
149 | * il_scan_cancel - Cancel any currently executing HW scan | 149 | * il_scan_cancel - Cancel any currently executing HW scan |
150 | */ | 150 | */ |
151 | int il_scan_cancel(struct il_priv *priv) | 151 | int il_scan_cancel(struct il_priv *il) |
152 | { | 152 | { |
153 | IL_DEBUG_SCAN(priv, "Queuing abort scan\n"); | 153 | IL_DEBUG_SCAN(il, "Queuing abort scan\n"); |
154 | queue_work(priv->workqueue, &priv->abort_scan); | 154 | queue_work(il->workqueue, &il->abort_scan); |
155 | return 0; | 155 | return 0; |
156 | } | 156 | } |
157 | EXPORT_SYMBOL(il_scan_cancel); | 157 | EXPORT_SYMBOL(il_scan_cancel); |
@@ -161,28 +161,28 @@ EXPORT_SYMBOL(il_scan_cancel); | |||
161 | * @ms: amount of time to wait (in milliseconds) for scan to abort | 161 | * @ms: amount of time to wait (in milliseconds) for scan to abort |
162 | * | 162 | * |
163 | */ | 163 | */ |
164 | int il_scan_cancel_timeout(struct il_priv *priv, unsigned long ms) | 164 | int il_scan_cancel_timeout(struct il_priv *il, unsigned long ms) |
165 | { | 165 | { |
166 | unsigned long timeout = jiffies + msecs_to_jiffies(ms); | 166 | unsigned long timeout = jiffies + msecs_to_jiffies(ms); |
167 | 167 | ||
168 | lockdep_assert_held(&priv->mutex); | 168 | lockdep_assert_held(&il->mutex); |
169 | 169 | ||
170 | IL_DEBUG_SCAN(priv, "Scan cancel timeout\n"); | 170 | IL_DEBUG_SCAN(il, "Scan cancel timeout\n"); |
171 | 171 | ||
172 | il_do_scan_abort(priv); | 172 | il_do_scan_abort(il); |
173 | 173 | ||
174 | while (time_before_eq(jiffies, timeout)) { | 174 | while (time_before_eq(jiffies, timeout)) { |
175 | if (!test_bit(STATUS_SCAN_HW, &priv->status)) | 175 | if (!test_bit(STATUS_SCAN_HW, &il->status)) |
176 | break; | 176 | break; |
177 | msleep(20); | 177 | msleep(20); |
178 | } | 178 | } |
179 | 179 | ||
180 | return test_bit(STATUS_SCAN_HW, &priv->status); | 180 | return test_bit(STATUS_SCAN_HW, &il->status); |
181 | } | 181 | } |
182 | EXPORT_SYMBOL(il_scan_cancel_timeout); | 182 | EXPORT_SYMBOL(il_scan_cancel_timeout); |
183 | 183 | ||
184 | /* Service response to REPLY_SCAN_CMD (0x80) */ | 184 | /* Service response to REPLY_SCAN_CMD (0x80) */ |
185 | static void il_rx_reply_scan(struct il_priv *priv, | 185 | static void il_rx_reply_scan(struct il_priv *il, |
186 | struct il_rx_mem_buffer *rxb) | 186 | struct il_rx_mem_buffer *rxb) |
187 | { | 187 | { |
188 | #ifdef CONFIG_IWLWIFI_LEGACY_DEBUG | 188 | #ifdef CONFIG_IWLWIFI_LEGACY_DEBUG |
@@ -190,19 +190,19 @@ static void il_rx_reply_scan(struct il_priv *priv, | |||
190 | struct il_scanreq_notification *notif = | 190 | struct il_scanreq_notification *notif = |
191 | (struct il_scanreq_notification *)pkt->u.raw; | 191 | (struct il_scanreq_notification *)pkt->u.raw; |
192 | 192 | ||
193 | IL_DEBUG_SCAN(priv, "Scan request status = 0x%x\n", notif->status); | 193 | IL_DEBUG_SCAN(il, "Scan request status = 0x%x\n", notif->status); |
194 | #endif | 194 | #endif |
195 | } | 195 | } |
196 | 196 | ||
197 | /* Service SCAN_START_NOTIFICATION (0x82) */ | 197 | /* Service SCAN_START_NOTIFICATION (0x82) */ |
198 | static void il_rx_scan_start_notif(struct il_priv *priv, | 198 | static void il_rx_scan_start_notif(struct il_priv *il, |
199 | struct il_rx_mem_buffer *rxb) | 199 | struct il_rx_mem_buffer *rxb) |
200 | { | 200 | { |
201 | struct il_rx_packet *pkt = rxb_addr(rxb); | 201 | struct il_rx_packet *pkt = rxb_addr(rxb); |
202 | struct il_scanstart_notification *notif = | 202 | struct il_scanstart_notification *notif = |
203 | (struct il_scanstart_notification *)pkt->u.raw; | 203 | (struct il_scanstart_notification *)pkt->u.raw; |
204 | priv->scan_start_tsf = le32_to_cpu(notif->tsf_low); | 204 | il->scan_start_tsf = le32_to_cpu(notif->tsf_low); |
205 | IL_DEBUG_SCAN(priv, "Scan start: " | 205 | IL_DEBUG_SCAN(il, "Scan start: " |
206 | "%d [802.11%s] " | 206 | "%d [802.11%s] " |
207 | "(TSF: 0x%08X:%08X) - %d (beacon timer %u)\n", | 207 | "(TSF: 0x%08X:%08X) - %d (beacon timer %u)\n", |
208 | notif->channel, | 208 | notif->channel, |
@@ -213,7 +213,7 @@ static void il_rx_scan_start_notif(struct il_priv *priv, | |||
213 | } | 213 | } |
214 | 214 | ||
215 | /* Service SCAN_RESULTS_NOTIFICATION (0x83) */ | 215 | /* Service SCAN_RESULTS_NOTIFICATION (0x83) */ |
216 | static void il_rx_scan_results_notif(struct il_priv *priv, | 216 | static void il_rx_scan_results_notif(struct il_priv *il, |
217 | struct il_rx_mem_buffer *rxb) | 217 | struct il_rx_mem_buffer *rxb) |
218 | { | 218 | { |
219 | #ifdef CONFIG_IWLWIFI_LEGACY_DEBUG | 219 | #ifdef CONFIG_IWLWIFI_LEGACY_DEBUG |
@@ -221,7 +221,7 @@ static void il_rx_scan_results_notif(struct il_priv *priv, | |||
221 | struct il_scanresults_notification *notif = | 221 | struct il_scanresults_notification *notif = |
222 | (struct il_scanresults_notification *)pkt->u.raw; | 222 | (struct il_scanresults_notification *)pkt->u.raw; |
223 | 223 | ||
224 | IL_DEBUG_SCAN(priv, "Scan ch.res: " | 224 | IL_DEBUG_SCAN(il, "Scan ch.res: " |
225 | "%d [802.11%s] " | 225 | "%d [802.11%s] " |
226 | "(TSF: 0x%08X:%08X) - %d " | 226 | "(TSF: 0x%08X:%08X) - %d " |
227 | "elapsed=%lu usec\n", | 227 | "elapsed=%lu usec\n", |
@@ -230,12 +230,12 @@ static void il_rx_scan_results_notif(struct il_priv *priv, | |||
230 | le32_to_cpu(notif->tsf_high), | 230 | le32_to_cpu(notif->tsf_high), |
231 | le32_to_cpu(notif->tsf_low), | 231 | le32_to_cpu(notif->tsf_low), |
232 | le32_to_cpu(notif->statistics[0]), | 232 | le32_to_cpu(notif->statistics[0]), |
233 | le32_to_cpu(notif->tsf_low) - priv->scan_start_tsf); | 233 | le32_to_cpu(notif->tsf_low) - il->scan_start_tsf); |
234 | #endif | 234 | #endif |
235 | } | 235 | } |
236 | 236 | ||
237 | /* Service SCAN_COMPLETE_NOTIFICATION (0x84) */ | 237 | /* Service SCAN_COMPLETE_NOTIFICATION (0x84) */ |
238 | static void il_rx_scan_complete_notif(struct il_priv *priv, | 238 | static void il_rx_scan_complete_notif(struct il_priv *il, |
239 | struct il_rx_mem_buffer *rxb) | 239 | struct il_rx_mem_buffer *rxb) |
240 | { | 240 | { |
241 | 241 | ||
@@ -244,36 +244,36 @@ static void il_rx_scan_complete_notif(struct il_priv *priv, | |||
244 | struct il_scancomplete_notification *scan_notif = (void *)pkt->u.raw; | 244 | struct il_scancomplete_notification *scan_notif = (void *)pkt->u.raw; |
245 | #endif | 245 | #endif |
246 | 246 | ||
247 | IL_DEBUG_SCAN(priv, | 247 | IL_DEBUG_SCAN(il, |
248 | "Scan complete: %d channels (TSF 0x%08X:%08X) - %d\n", | 248 | "Scan complete: %d channels (TSF 0x%08X:%08X) - %d\n", |
249 | scan_notif->scanned_channels, | 249 | scan_notif->scanned_channels, |
250 | scan_notif->tsf_low, | 250 | scan_notif->tsf_low, |
251 | scan_notif->tsf_high, scan_notif->status); | 251 | scan_notif->tsf_high, scan_notif->status); |
252 | 252 | ||
253 | /* The HW is no longer scanning */ | 253 | /* The HW is no longer scanning */ |
254 | clear_bit(STATUS_SCAN_HW, &priv->status); | 254 | clear_bit(STATUS_SCAN_HW, &il->status); |
255 | 255 | ||
256 | IL_DEBUG_SCAN(priv, "Scan on %sGHz took %dms\n", | 256 | IL_DEBUG_SCAN(il, "Scan on %sGHz took %dms\n", |
257 | (priv->scan_band == IEEE80211_BAND_2GHZ) ? "2.4" : "5.2", | 257 | (il->scan_band == IEEE80211_BAND_2GHZ) ? "2.4" : "5.2", |
258 | jiffies_to_msecs(jiffies - priv->scan_start)); | 258 | jiffies_to_msecs(jiffies - il->scan_start)); |
259 | 259 | ||
260 | queue_work(priv->workqueue, &priv->scan_completed); | 260 | queue_work(il->workqueue, &il->scan_completed); |
261 | } | 261 | } |
262 | 262 | ||
263 | void il_setup_rx_scan_handlers(struct il_priv *priv) | 263 | void il_setup_rx_scan_handlers(struct il_priv *il) |
264 | { | 264 | { |
265 | /* scan handlers */ | 265 | /* scan handlers */ |
266 | priv->rx_handlers[REPLY_SCAN_CMD] = il_rx_reply_scan; | 266 | il->rx_handlers[REPLY_SCAN_CMD] = il_rx_reply_scan; |
267 | priv->rx_handlers[SCAN_START_NOTIFICATION] = | 267 | il->rx_handlers[SCAN_START_NOTIFICATION] = |
268 | il_rx_scan_start_notif; | 268 | il_rx_scan_start_notif; |
269 | priv->rx_handlers[SCAN_RESULTS_NOTIFICATION] = | 269 | il->rx_handlers[SCAN_RESULTS_NOTIFICATION] = |
270 | il_rx_scan_results_notif; | 270 | il_rx_scan_results_notif; |
271 | priv->rx_handlers[SCAN_COMPLETE_NOTIFICATION] = | 271 | il->rx_handlers[SCAN_COMPLETE_NOTIFICATION] = |
272 | il_rx_scan_complete_notif; | 272 | il_rx_scan_complete_notif; |
273 | } | 273 | } |
274 | EXPORT_SYMBOL(il_setup_rx_scan_handlers); | 274 | EXPORT_SYMBOL(il_setup_rx_scan_handlers); |
275 | 275 | ||
276 | inline u16 il_get_active_dwell_time(struct il_priv *priv, | 276 | inline u16 il_get_active_dwell_time(struct il_priv *il, |
277 | enum ieee80211_band band, | 277 | enum ieee80211_band band, |
278 | u8 n_probes) | 278 | u8 n_probes) |
279 | { | 279 | { |
@@ -286,7 +286,7 @@ inline u16 il_get_active_dwell_time(struct il_priv *priv, | |||
286 | } | 286 | } |
287 | EXPORT_SYMBOL(il_get_active_dwell_time); | 287 | EXPORT_SYMBOL(il_get_active_dwell_time); |
288 | 288 | ||
289 | u16 il_get_passive_dwell_time(struct il_priv *priv, | 289 | u16 il_get_passive_dwell_time(struct il_priv *il, |
290 | enum ieee80211_band band, | 290 | enum ieee80211_band band, |
291 | struct ieee80211_vif *vif) | 291 | struct ieee80211_vif *vif) |
292 | { | 292 | { |
@@ -295,13 +295,13 @@ u16 il_get_passive_dwell_time(struct il_priv *priv, | |||
295 | IL_PASSIVE_DWELL_BASE + IL_PASSIVE_DWELL_TIME_24 : | 295 | IL_PASSIVE_DWELL_BASE + IL_PASSIVE_DWELL_TIME_24 : |
296 | IL_PASSIVE_DWELL_BASE + IL_PASSIVE_DWELL_TIME_52; | 296 | IL_PASSIVE_DWELL_BASE + IL_PASSIVE_DWELL_TIME_52; |
297 | 297 | ||
298 | if (il_is_any_associated(priv)) { | 298 | if (il_is_any_associated(il)) { |
299 | /* | 299 | /* |
300 | * If we're associated, we clamp the maximum passive | 300 | * If we're associated, we clamp the maximum passive |
301 | * dwell time to be 98% of the smallest beacon interval | 301 | * dwell time to be 98% of the smallest beacon interval |
302 | * (minus 2 * channel tune time) | 302 | * (minus 2 * channel tune time) |
303 | */ | 303 | */ |
304 | for_each_context(priv, ctx) { | 304 | for_each_context(il, ctx) { |
305 | u16 value; | 305 | u16 value; |
306 | 306 | ||
307 | if (!il_is_associated_ctx(ctx)) | 307 | if (!il_is_associated_ctx(ctx)) |
@@ -318,56 +318,56 @@ u16 il_get_passive_dwell_time(struct il_priv *priv, | |||
318 | } | 318 | } |
319 | EXPORT_SYMBOL(il_get_passive_dwell_time); | 319 | EXPORT_SYMBOL(il_get_passive_dwell_time); |
320 | 320 | ||
321 | void il_init_scan_params(struct il_priv *priv) | 321 | void il_init_scan_params(struct il_priv *il) |
322 | { | 322 | { |
323 | u8 ant_idx = fls(priv->hw_params.valid_tx_ant) - 1; | 323 | u8 ant_idx = fls(il->hw_params.valid_tx_ant) - 1; |
324 | if (!priv->scan_tx_ant[IEEE80211_BAND_5GHZ]) | 324 | if (!il->scan_tx_ant[IEEE80211_BAND_5GHZ]) |
325 | priv->scan_tx_ant[IEEE80211_BAND_5GHZ] = ant_idx; | 325 | il->scan_tx_ant[IEEE80211_BAND_5GHZ] = ant_idx; |
326 | if (!priv->scan_tx_ant[IEEE80211_BAND_2GHZ]) | 326 | if (!il->scan_tx_ant[IEEE80211_BAND_2GHZ]) |
327 | priv->scan_tx_ant[IEEE80211_BAND_2GHZ] = ant_idx; | 327 | il->scan_tx_ant[IEEE80211_BAND_2GHZ] = ant_idx; |
328 | } | 328 | } |
329 | EXPORT_SYMBOL(il_init_scan_params); | 329 | EXPORT_SYMBOL(il_init_scan_params); |
330 | 330 | ||
331 | static int il_scan_initiate(struct il_priv *priv, | 331 | static int il_scan_initiate(struct il_priv *il, |
332 | struct ieee80211_vif *vif) | 332 | struct ieee80211_vif *vif) |
333 | { | 333 | { |
334 | int ret; | 334 | int ret; |
335 | 335 | ||
336 | lockdep_assert_held(&priv->mutex); | 336 | lockdep_assert_held(&il->mutex); |
337 | 337 | ||
338 | if (WARN_ON(!priv->cfg->ops->utils->request_scan)) | 338 | if (WARN_ON(!il->cfg->ops->utils->request_scan)) |
339 | return -EOPNOTSUPP; | 339 | return -EOPNOTSUPP; |
340 | 340 | ||
341 | cancel_delayed_work(&priv->scan_check); | 341 | cancel_delayed_work(&il->scan_check); |
342 | 342 | ||
343 | if (!il_is_ready_rf(priv)) { | 343 | if (!il_is_ready_rf(il)) { |
344 | IL_WARN(priv, "Request scan called when driver not ready.\n"); | 344 | IL_WARN(il, "Request scan called when driver not ready.\n"); |
345 | return -EIO; | 345 | return -EIO; |
346 | } | 346 | } |
347 | 347 | ||
348 | if (test_bit(STATUS_SCAN_HW, &priv->status)) { | 348 | if (test_bit(STATUS_SCAN_HW, &il->status)) { |
349 | IL_DEBUG_SCAN(priv, | 349 | IL_DEBUG_SCAN(il, |
350 | "Multiple concurrent scan requests in parallel.\n"); | 350 | "Multiple concurrent scan requests in parallel.\n"); |
351 | return -EBUSY; | 351 | return -EBUSY; |
352 | } | 352 | } |
353 | 353 | ||
354 | if (test_bit(STATUS_SCAN_ABORTING, &priv->status)) { | 354 | if (test_bit(STATUS_SCAN_ABORTING, &il->status)) { |
355 | IL_DEBUG_SCAN(priv, "Scan request while abort pending.\n"); | 355 | IL_DEBUG_SCAN(il, "Scan request while abort pending.\n"); |
356 | return -EBUSY; | 356 | return -EBUSY; |
357 | } | 357 | } |
358 | 358 | ||
359 | IL_DEBUG_SCAN(priv, "Starting scan...\n"); | 359 | IL_DEBUG_SCAN(il, "Starting scan...\n"); |
360 | 360 | ||
361 | set_bit(STATUS_SCANNING, &priv->status); | 361 | set_bit(STATUS_SCANNING, &il->status); |
362 | priv->scan_start = jiffies; | 362 | il->scan_start = jiffies; |
363 | 363 | ||
364 | ret = priv->cfg->ops->utils->request_scan(priv, vif); | 364 | ret = il->cfg->ops->utils->request_scan(il, vif); |
365 | if (ret) { | 365 | if (ret) { |
366 | clear_bit(STATUS_SCANNING, &priv->status); | 366 | clear_bit(STATUS_SCANNING, &il->status); |
367 | return ret; | 367 | return ret; |
368 | } | 368 | } |
369 | 369 | ||
370 | queue_delayed_work(priv->workqueue, &priv->scan_check, | 370 | queue_delayed_work(il->workqueue, &il->scan_check, |
371 | IL_SCAN_CHECK_WATCHDOG); | 371 | IL_SCAN_CHECK_WATCHDOG); |
372 | 372 | ||
373 | return 0; | 373 | return 0; |
@@ -377,33 +377,33 @@ int il_mac_hw_scan(struct ieee80211_hw *hw, | |||
377 | struct ieee80211_vif *vif, | 377 | struct ieee80211_vif *vif, |
378 | struct cfg80211_scan_request *req) | 378 | struct cfg80211_scan_request *req) |
379 | { | 379 | { |
380 | struct il_priv *priv = hw->priv; | 380 | struct il_priv *il = hw->priv; |
381 | int ret; | 381 | int ret; |
382 | 382 | ||
383 | IL_DEBUG_MAC80211(priv, "enter\n"); | 383 | IL_DEBUG_MAC80211(il, "enter\n"); |
384 | 384 | ||
385 | if (req->n_channels == 0) | 385 | if (req->n_channels == 0) |
386 | return -EINVAL; | 386 | return -EINVAL; |
387 | 387 | ||
388 | mutex_lock(&priv->mutex); | 388 | mutex_lock(&il->mutex); |
389 | 389 | ||
390 | if (test_bit(STATUS_SCANNING, &priv->status)) { | 390 | if (test_bit(STATUS_SCANNING, &il->status)) { |
391 | IL_DEBUG_SCAN(priv, "Scan already in progress.\n"); | 391 | IL_DEBUG_SCAN(il, "Scan already in progress.\n"); |
392 | ret = -EAGAIN; | 392 | ret = -EAGAIN; |
393 | goto out_unlock; | 393 | goto out_unlock; |
394 | } | 394 | } |
395 | 395 | ||
396 | /* mac80211 will only ask for one band at a time */ | 396 | /* mac80211 will only ask for one band at a time */ |
397 | priv->scan_request = req; | 397 | il->scan_request = req; |
398 | priv->scan_vif = vif; | 398 | il->scan_vif = vif; |
399 | priv->scan_band = req->channels[0]->band; | 399 | il->scan_band = req->channels[0]->band; |
400 | 400 | ||
401 | ret = il_scan_initiate(priv, vif); | 401 | ret = il_scan_initiate(il, vif); |
402 | 402 | ||
403 | IL_DEBUG_MAC80211(priv, "leave\n"); | 403 | IL_DEBUG_MAC80211(il, "leave\n"); |
404 | 404 | ||
405 | out_unlock: | 405 | out_unlock: |
406 | mutex_unlock(&priv->mutex); | 406 | mutex_unlock(&il->mutex); |
407 | 407 | ||
408 | return ret; | 408 | return ret; |
409 | } | 409 | } |
@@ -411,17 +411,17 @@ EXPORT_SYMBOL(il_mac_hw_scan); | |||
411 | 411 | ||
412 | static void il_bg_scan_check(struct work_struct *data) | 412 | static void il_bg_scan_check(struct work_struct *data) |
413 | { | 413 | { |
414 | struct il_priv *priv = | 414 | struct il_priv *il = |
415 | container_of(data, struct il_priv, scan_check.work); | 415 | container_of(data, struct il_priv, scan_check.work); |
416 | 416 | ||
417 | IL_DEBUG_SCAN(priv, "Scan check work\n"); | 417 | IL_DEBUG_SCAN(il, "Scan check work\n"); |
418 | 418 | ||
419 | /* Since we are here firmware does not finish scan and | 419 | /* Since we are here firmware does not finish scan and |
420 | * most likely is in bad shape, so we don't bother to | 420 | * most likely is in bad shape, so we don't bother to |
421 | * send abort command, just force scan complete to mac80211 */ | 421 | * send abort command, just force scan complete to mac80211 */ |
422 | mutex_lock(&priv->mutex); | 422 | mutex_lock(&il->mutex); |
423 | il_force_scan_end(priv); | 423 | il_force_scan_end(il); |
424 | mutex_unlock(&priv->mutex); | 424 | mutex_unlock(&il->mutex); |
425 | } | 425 | } |
426 | 426 | ||
427 | /** | 427 | /** |
@@ -429,7 +429,7 @@ static void il_bg_scan_check(struct work_struct *data) | |||
429 | */ | 429 | */ |
430 | 430 | ||
431 | u16 | 431 | u16 |
432 | il_fill_probe_req(struct il_priv *priv, struct ieee80211_mgmt *frame, | 432 | il_fill_probe_req(struct il_priv *il, struct ieee80211_mgmt *frame, |
433 | const u8 *ta, const u8 *ies, int ie_len, int left) | 433 | const u8 *ta, const u8 *ies, int ie_len, int left) |
434 | { | 434 | { |
435 | int len = 0; | 435 | int len = 0; |
@@ -475,75 +475,75 @@ EXPORT_SYMBOL(il_fill_probe_req); | |||
475 | 475 | ||
476 | static void il_bg_abort_scan(struct work_struct *work) | 476 | static void il_bg_abort_scan(struct work_struct *work) |
477 | { | 477 | { |
478 | struct il_priv *priv = container_of(work, struct il_priv, abort_scan); | 478 | struct il_priv *il = container_of(work, struct il_priv, abort_scan); |
479 | 479 | ||
480 | IL_DEBUG_SCAN(priv, "Abort scan work\n"); | 480 | IL_DEBUG_SCAN(il, "Abort scan work\n"); |
481 | 481 | ||
482 | /* We keep scan_check work queued in case when firmware will not | 482 | /* We keep scan_check work queued in case when firmware will not |
483 | * report back scan completed notification */ | 483 | * report back scan completed notification */ |
484 | mutex_lock(&priv->mutex); | 484 | mutex_lock(&il->mutex); |
485 | il_scan_cancel_timeout(priv, 200); | 485 | il_scan_cancel_timeout(il, 200); |
486 | mutex_unlock(&priv->mutex); | 486 | mutex_unlock(&il->mutex); |
487 | } | 487 | } |
488 | 488 | ||
489 | static void il_bg_scan_completed(struct work_struct *work) | 489 | static void il_bg_scan_completed(struct work_struct *work) |
490 | { | 490 | { |
491 | struct il_priv *priv = | 491 | struct il_priv *il = |
492 | container_of(work, struct il_priv, scan_completed); | 492 | container_of(work, struct il_priv, scan_completed); |
493 | bool aborted; | 493 | bool aborted; |
494 | 494 | ||
495 | IL_DEBUG_SCAN(priv, "Completed scan.\n"); | 495 | IL_DEBUG_SCAN(il, "Completed scan.\n"); |
496 | 496 | ||
497 | cancel_delayed_work(&priv->scan_check); | 497 | cancel_delayed_work(&il->scan_check); |
498 | 498 | ||
499 | mutex_lock(&priv->mutex); | 499 | mutex_lock(&il->mutex); |
500 | 500 | ||
501 | aborted = test_and_clear_bit(STATUS_SCAN_ABORTING, &priv->status); | 501 | aborted = test_and_clear_bit(STATUS_SCAN_ABORTING, &il->status); |
502 | if (aborted) | 502 | if (aborted) |
503 | IL_DEBUG_SCAN(priv, "Aborted scan completed.\n"); | 503 | IL_DEBUG_SCAN(il, "Aborted scan completed.\n"); |
504 | 504 | ||
505 | if (!test_and_clear_bit(STATUS_SCANNING, &priv->status)) { | 505 | if (!test_and_clear_bit(STATUS_SCANNING, &il->status)) { |
506 | IL_DEBUG_SCAN(priv, "Scan already completed.\n"); | 506 | IL_DEBUG_SCAN(il, "Scan already completed.\n"); |
507 | goto out_settings; | 507 | goto out_settings; |
508 | } | 508 | } |
509 | 509 | ||
510 | il_complete_scan(priv, aborted); | 510 | il_complete_scan(il, aborted); |
511 | 511 | ||
512 | out_settings: | 512 | out_settings: |
513 | /* Can we still talk to firmware ? */ | 513 | /* Can we still talk to firmware ? */ |
514 | if (!il_is_ready_rf(priv)) | 514 | if (!il_is_ready_rf(il)) |
515 | goto out; | 515 | goto out; |
516 | 516 | ||
517 | /* | 517 | /* |
518 | * We do not commit power settings while scan is pending, | 518 | * We do not commit power settings while scan is pending, |
519 | * do it now if the settings changed. | 519 | * do it now if the settings changed. |
520 | */ | 520 | */ |
521 | il_power_set_mode(priv, &priv->power_data.sleep_cmd_next, false); | 521 | il_power_set_mode(il, &il->power_data.sleep_cmd_next, false); |
522 | il_set_tx_power(priv, priv->tx_power_next, false); | 522 | il_set_tx_power(il, il->tx_power_next, false); |
523 | 523 | ||
524 | priv->cfg->ops->utils->post_scan(priv); | 524 | il->cfg->ops->utils->post_scan(il); |
525 | 525 | ||
526 | out: | 526 | out: |
527 | mutex_unlock(&priv->mutex); | 527 | mutex_unlock(&il->mutex); |
528 | } | 528 | } |
529 | 529 | ||
530 | void il_setup_scan_deferred_work(struct il_priv *priv) | 530 | void il_setup_scan_deferred_work(struct il_priv *il) |
531 | { | 531 | { |
532 | INIT_WORK(&priv->scan_completed, il_bg_scan_completed); | 532 | INIT_WORK(&il->scan_completed, il_bg_scan_completed); |
533 | INIT_WORK(&priv->abort_scan, il_bg_abort_scan); | 533 | INIT_WORK(&il->abort_scan, il_bg_abort_scan); |
534 | INIT_DELAYED_WORK(&priv->scan_check, il_bg_scan_check); | 534 | INIT_DELAYED_WORK(&il->scan_check, il_bg_scan_check); |
535 | } | 535 | } |
536 | EXPORT_SYMBOL(il_setup_scan_deferred_work); | 536 | EXPORT_SYMBOL(il_setup_scan_deferred_work); |
537 | 537 | ||
538 | void il_cancel_scan_deferred_work(struct il_priv *priv) | 538 | void il_cancel_scan_deferred_work(struct il_priv *il) |
539 | { | 539 | { |
540 | cancel_work_sync(&priv->abort_scan); | 540 | cancel_work_sync(&il->abort_scan); |
541 | cancel_work_sync(&priv->scan_completed); | 541 | cancel_work_sync(&il->scan_completed); |
542 | 542 | ||
543 | if (cancel_delayed_work_sync(&priv->scan_check)) { | 543 | if (cancel_delayed_work_sync(&il->scan_check)) { |
544 | mutex_lock(&priv->mutex); | 544 | mutex_lock(&il->mutex); |
545 | il_force_scan_end(priv); | 545 | il_force_scan_end(il); |
546 | mutex_unlock(&priv->mutex); | 546 | mutex_unlock(&il->mutex); |
547 | } | 547 | } |
548 | } | 548 | } |
549 | EXPORT_SYMBOL(il_cancel_scan_deferred_work); | 549 | EXPORT_SYMBOL(il_cancel_scan_deferred_work); |