Lines Matching refs:iscan
190 static int wl_iw_iscan(iscan_info_t *iscan, wlc_ssid_t *ssid, uint16 action);
1127 iscan_info_t *iscan = g_iscan; in wl_iw_iscan_get_aplist() local
1139 if ((!iscan) || (iscan->sysioc_pid < 0)) { in wl_iw_iscan_get_aplist()
1143 buf = iscan->list_hdr; in wl_iw_iscan_get_aplist()
1228 iscan_info_t *iscan = g_iscan; in wl_iw_iscan_set_scan() local
1233 if ((!iscan) || (iscan->sysioc_pid < 0)) { in wl_iw_iscan_set_scan()
1236 if (iscan->iscan_state == ISCAN_STATE_SCANING) { in wl_iw_iscan_set_scan()
1255 iscan->list_cur = iscan->list_hdr; in wl_iw_iscan_set_scan()
1256 iscan->iscan_state = ISCAN_STATE_SCANING; in wl_iw_iscan_set_scan()
1259 wl_iw_iscan(iscan, &ssid, WL_SCAN_ACTION_START); in wl_iw_iscan_set_scan()
1261 iscan->timer.expires = jiffies + msecs_to_jiffies(iscan->timer_ms); in wl_iw_iscan_set_scan()
1263 iscan->timer.timer.expires = jiffies + msecs_to_jiffies(iscan->timer_ms); in wl_iw_iscan_set_scan()
1265 add_timer(&iscan->timer); in wl_iw_iscan_set_scan()
1266 iscan->timer_on = 1; in wl_iw_iscan_set_scan()
1593 iscan_info_t *iscan = g_iscan; in wl_iw_iscan_get_scan() local
1602 if ((!iscan) || (iscan->sysioc_pid < 0)) { in wl_iw_iscan_get_scan()
1607 if (iscan->iscan_state == ISCAN_STATE_SCANING) in wl_iw_iscan_get_scan()
1611 p_buf = iscan->list_hdr; in wl_iw_iscan_get_scan()
1613 while (p_buf != iscan->list_cur) { in wl_iw_iscan_get_scan()
3652 iscan_info_t *iscan = (iscan_info_t *)data; local
3653 iscan->timer_on = 0;
3654 if (iscan->iscan_state != ISCAN_STATE_IDLE) {
3656 up(&iscan->sysioc_sem);
3699 wl_iw_iscan(iscan_info_t *iscan, wlc_ssid_t *ssid, uint16 action) argument
3723 (void) dev_iw_iovar_setbuf(iscan->dev, "iscan", params, params_size,
3724 iscan->ioctlbuf, WLC_IOCTL_SMLEN);
3732 wl_iw_iscan_get(iscan_info_t *iscan) argument
3742 if (iscan->list_cur) {
3743 buf = iscan->list_cur;
3744 iscan->list_cur = buf->next;
3751 if (!iscan->list_hdr)
3752 iscan->list_hdr = buf;
3754 ptr = iscan->list_hdr;
3771 iscan->dev,
3787 static void wl_iw_send_scan_complete(iscan_info_t *iscan) argument
3794 wireless_send_event(iscan->dev, SIOCGIWSCAN, &wrqu, NULL);
3801 iscan_info_t *iscan = (iscan_info_t *)data; local
3806 while (down_interruptible(&iscan->sysioc_sem) == 0) {
3807 if (iscan->timer_on) {
3808 del_timer(&iscan->timer);
3809 iscan->timer_on = 0;
3815 status = wl_iw_iscan_get(iscan);
3827 wl_iw_iscan(iscan, NULL, WL_SCAN_ACTION_CONTINUE);
3833 iscan->timer.expires = jiffies + msecs_to_jiffies(iscan->timer_ms);
3835 iscan->timer.timer.expires = jiffies +
3836 msecs_to_jiffies(iscan->timer_ms);
3838 add_timer(&iscan->timer);
3839 iscan->timer_on = 1;
3843 iscan->iscan_state = ISCAN_STATE_IDLE;
3844 wl_iw_send_scan_complete(iscan);
3850 iscan->timer.expires = jiffies + msecs_to_jiffies(iscan->timer_ms);
3852 iscan->timer.timer.expires = jiffies +
3853 msecs_to_jiffies(iscan->timer_ms);
3855 add_timer(&iscan->timer);
3856 iscan->timer_on = 1;
3860 iscan->iscan_state = ISCAN_STATE_IDLE;
3861 wl_iw_send_scan_complete(iscan);
3868 complete_and_exit(&iscan->sysioc_exited, 0);
3874 iscan_info_t *iscan = NULL; local
3879 iscan = kmalloc(sizeof(iscan_info_t), GFP_KERNEL);
3880 if (!iscan)
3882 memset(iscan, 0, sizeof(iscan_info_t));
3884 iscan->kthread = NULL;
3886 iscan->sysioc_pid = -1;
3888 g_iscan = iscan;
3889 iscan->dev = dev;
3890 iscan->iscan_state = ISCAN_STATE_IDLE;
3893 iscan->timer_ms = 2000;
3895 init_timer(&iscan->timer);
3896 iscan->timer.data = (ulong)iscan;
3897 iscan->timer.function = wl_iw_timerfunc;
3899 init_timer_compat(&iscan->timer, wl_iw_timerfunc, iscan);
3901 sema_init(&iscan->sysioc_sem, 0);
3902 init_completion(&iscan->sysioc_exited);
3904 iscan->kthread = kthread_run(_iscan_sysioc_thread, iscan, "iscan_sysioc");
3905 iscan->sysioc_pid = iscan->kthread->pid;
3907 iscan->sysioc_pid = kernel_thread(_iscan_sysioc_thread, iscan, 0);
3909 if (iscan->sysioc_pid < 0)
3917 iscan_info_t *iscan = g_iscan; local
3918 if (!iscan)
3921 if (iscan->timer_on) {
3922 del_timer_sync(&iscan->timer);
3923 iscan->timer_on = 0;
3925 if (iscan->sysioc_pid >= 0) {
3926 KILL_PROC(iscan->sysioc_pid, SIGTERM);
3927 wait_for_completion(&iscan->sysioc_exited);
3930 while (iscan->list_hdr) {
3931 buf = iscan->list_hdr->next;
3932 kfree(iscan->list_hdr);
3933 iscan->list_hdr = buf;
3935 kfree(iscan);