Lines Matching full:local
12 static void prism2_info_commtallies16(local_info_t *local, unsigned char *buf, in prism2_info_commtallies16() argument
19 "info frame\n", local->dev->name, left); in prism2_info_commtallies16()
25 local->comm_tallies.name += le16_to_cpu(tallies->name) in prism2_info_commtallies16()
52 static void prism2_info_commtallies32(local_info_t *local, unsigned char *buf, in prism2_info_commtallies32() argument
59 "info frame\n", local->dev->name, left); in prism2_info_commtallies32()
65 local->comm_tallies.name += le32_to_cpu(tallies->name) in prism2_info_commtallies32()
92 static void prism2_info_commtallies(local_info_t *local, unsigned char *buf, in prism2_info_commtallies() argument
95 if (local->tallies32) in prism2_info_commtallies()
96 prism2_info_commtallies32(local, buf, left); in prism2_info_commtallies()
98 prism2_info_commtallies16(local, buf, left); in prism2_info_commtallies()
127 static void prism2_info_linkstatus(local_info_t *local, unsigned char *buf, in prism2_info_linkstatus() argument
135 local->last_join_time = 0; in prism2_info_linkstatus()
139 "length %d\n", local->dev->name, left); in prism2_info_linkstatus()
143 non_sta_mode = local->iw_mode == IW_MODE_MASTER || in prism2_info_linkstatus()
144 local->iw_mode == IW_MODE_REPEAT || in prism2_info_linkstatus()
145 local->iw_mode == IW_MODE_MONITOR; in prism2_info_linkstatus()
150 local->dev->name, val, hfa384x_linkstatus_str(val)); in prism2_info_linkstatus()
154 netif_carrier_on(local->dev); in prism2_info_linkstatus()
155 netif_carrier_on(local->ddev); in prism2_info_linkstatus()
160 set_bit(PRISM2_INFO_PENDING_LINKSTATUS, &local->pending_info); in prism2_info_linkstatus()
161 local->prev_link_status = val; in prism2_info_linkstatus()
162 schedule_work(&local->info_queue); in prism2_info_linkstatus()
166 static void prism2_host_roaming(local_info_t *local) in prism2_host_roaming() argument
169 struct net_device *dev = local->dev; in prism2_host_roaming()
174 if (local->last_join_time && in prism2_host_roaming()
175 time_before(jiffies, local->last_join_time + 10 * HZ)) { in prism2_host_roaming()
190 spin_lock_irqsave(&local->lock, flags); in prism2_host_roaming()
191 if (local->last_scan_results == NULL || in prism2_host_roaming()
192 local->last_scan_results_count == 0) { in prism2_host_roaming()
193 spin_unlock_irqrestore(&local->lock, flags); in prism2_host_roaming()
199 selected = &local->last_scan_results[0]; in prism2_host_roaming()
201 if (local->preferred_ap[0] || local->preferred_ap[1] || in prism2_host_roaming()
202 local->preferred_ap[2] || local->preferred_ap[3] || in prism2_host_roaming()
203 local->preferred_ap[4] || local->preferred_ap[5]) { in prism2_host_roaming()
206 dev->name, local->preferred_ap); in prism2_host_roaming()
207 for (i = 0; i < local->last_scan_results_count; i++) { in prism2_host_roaming()
208 entry = &local->last_scan_results[i]; in prism2_host_roaming()
209 if (memcmp(local->preferred_ap, entry->bssid, 6) == 0) in prism2_host_roaming()
221 spin_unlock_irqrestore(&local->lock, flags); in prism2_host_roaming()
226 if (local->func->set_rid(dev, HFA384X_RID_JOINREQUEST, &req, in prism2_host_roaming()
230 local->last_join_time = jiffies; in prism2_host_roaming()
234 static void hostap_report_scan_complete(local_info_t *local) in hostap_report_scan_complete() argument
242 wireless_send_event(local->dev, SIOCGIWSCAN, &wrqu, NULL); in hostap_report_scan_complete()
246 local->scan_timestamp = 0; in hostap_report_scan_complete()
251 static void prism2_info_scanresults(local_info_t *local, unsigned char *buf, in prism2_info_scanresults() argument
262 "length %d\n", local->dev->name, left); in prism2_info_scanresults()
285 spin_lock_irqsave(&local->lock, flags); in prism2_info_scanresults()
286 local->last_scan_type = PRISM2_SCAN; in prism2_info_scanresults()
287 prev = local->last_scan_results; in prism2_info_scanresults()
288 local->last_scan_results = results; in prism2_info_scanresults()
289 local->last_scan_results_count = new_count; in prism2_info_scanresults()
290 spin_unlock_irqrestore(&local->lock, flags); in prism2_info_scanresults()
293 hostap_report_scan_complete(local); in prism2_info_scanresults()
296 set_bit(PRISM2_INFO_PENDING_SCANRESULTS, &local->pending_info); in prism2_info_scanresults()
297 schedule_work(&local->info_queue); in prism2_info_scanresults()
302 static void prism2_info_hostscanresults(local_info_t *local, in prism2_info_hostscanresults() argument
311 wake_up_interruptible(&local->hostscan_wq); in prism2_info_hostscanresults()
315 "length %d\n", local->dev->name, left); in prism2_info_hostscanresults()
323 "hostscanresults\n", local->dev->name); in prism2_info_hostscanresults()
348 local->dev->name, left, result_size); in prism2_info_hostscanresults()
351 spin_lock_irqsave(&local->lock, flags); in prism2_info_hostscanresults()
352 local->last_scan_type = PRISM2_HOSTSCAN; in prism2_info_hostscanresults()
353 prev = local->last_scan_results; in prism2_info_hostscanresults()
354 local->last_scan_results = results; in prism2_info_hostscanresults()
355 local->last_scan_results_count = new_count; in prism2_info_hostscanresults()
356 spin_unlock_irqrestore(&local->lock, flags); in prism2_info_hostscanresults()
359 hostap_report_scan_complete(local); in prism2_info_hostscanresults()
365 void hostap_info_process(local_info_t *local, struct sk_buff *skb) in hostap_info_process() argument
380 prism2_info_commtallies(local, buf, left); in hostap_info_process()
385 prism2_info_linkstatus(local, buf, left); in hostap_info_process()
389 prism2_info_scanresults(local, buf, left); in hostap_info_process()
393 prism2_info_hostscanresults(local, buf, left); in hostap_info_process()
400 local->dev->name, le16_to_cpu(info->len), in hostap_info_process()
413 static void handle_info_queue_linkstatus(local_info_t *local) in handle_info_queue_linkstatus() argument
415 int val = local->prev_link_status; in handle_info_queue_linkstatus()
424 if (local->func->get_rid(local->dev, HFA384X_RID_CURRENTBSSID, in handle_info_queue_linkstatus()
425 local->bssid, ETH_ALEN, 1) < 0) { in handle_info_queue_linkstatus()
427 "LinkStatus event\n", local->dev->name); in handle_info_queue_linkstatus()
430 local->dev->name, in handle_info_queue_linkstatus()
431 (unsigned char *) local->bssid); in handle_info_queue_linkstatus()
432 if (local->wds_type & HOSTAP_WDS_AP_CLIENT) in handle_info_queue_linkstatus()
433 hostap_add_sta(local->ap, local->bssid); in handle_info_queue_linkstatus()
438 netif_carrier_on(local->dev); in handle_info_queue_linkstatus()
439 netif_carrier_on(local->ddev); in handle_info_queue_linkstatus()
440 memcpy(wrqu.ap_addr.sa_data, local->bssid, ETH_ALEN); in handle_info_queue_linkstatus()
442 netif_carrier_off(local->dev); in handle_info_queue_linkstatus()
443 netif_carrier_off(local->ddev); in handle_info_queue_linkstatus()
454 if (connected || local->prev_linkstatus_connected) in handle_info_queue_linkstatus()
455 wireless_send_event(local->dev, SIOCGIWAP, &wrqu, NULL); in handle_info_queue_linkstatus()
456 local->prev_linkstatus_connected = connected; in handle_info_queue_linkstatus()
460 static void handle_info_queue_scanresults(local_info_t *local) in handle_info_queue_scanresults() argument
462 if (local->host_roaming == 1 && local->iw_mode == IW_MODE_INFRA) in handle_info_queue_scanresults()
463 prism2_host_roaming(local); in handle_info_queue_scanresults()
465 if (local->host_roaming == 2 && local->iw_mode == IW_MODE_INFRA && in handle_info_queue_scanresults()
466 memcmp(local->preferred_ap, "\x00\x00\x00\x00\x00\x00", in handle_info_queue_scanresults()
475 prism2_host_roaming(local); in handle_info_queue_scanresults()
484 local_info_t *local = container_of(work, local_info_t, info_queue); in handle_info_queue() local
487 &local->pending_info)) in handle_info_queue()
488 handle_info_queue_linkstatus(local); in handle_info_queue()
491 &local->pending_info)) in handle_info_queue()
492 handle_info_queue_scanresults(local); in handle_info_queue()
497 void hostap_info_init(local_info_t *local) in hostap_info_init() argument
499 skb_queue_head_init(&local->info_list); in hostap_info_init()
501 INIT_WORK(&local->info_queue, handle_info_queue); in hostap_info_init()