diff -r -u acx-20080210.orig/ioctl.c acx-20080210/ioctl.c --- acx-20080210.orig/ioctl.c 2009-04-04 15:15:37.119418241 +0200 +++ acx-20080210/ioctl.c 2009-04-04 16:22:37.881417768 +0200 @@ -488,6 +488,7 @@ /* helper. not sure whether it's really a _s_leeping fn */ static char* acx_s_scan_add_station( + struct iw_request_info *info, acx_device_t *adev, char *ptr, char *end_buf, @@ -503,14 +504,14 @@ iwe.u.ap_addr.sa_family = ARPHRD_ETHER; MAC_COPY(iwe.u.ap_addr.sa_data, bss->bssid); acxlog_mac(L_IOCTL, "scan, station address: ", bss->bssid, "\n"); - ptr = iwe_stream_add_event(ptr, end_buf, &iwe, IW_EV_ADDR_LEN); + ptr = iwe_stream_add_event(info, ptr, end_buf, &iwe, IW_EV_ADDR_LEN); /* Add ESSID */ iwe.cmd = SIOCGIWESSID; iwe.u.data.length = bss->essid_len; iwe.u.data.flags = 1; log(L_IOCTL, "scan, essid: %s\n", bss->essid); - ptr = iwe_stream_add_point(ptr, end_buf, &iwe, bss->essid); + ptr = iwe_stream_add_point(info, ptr, end_buf, &iwe, bss->essid); /* Add mode */ iwe.cmd = SIOCGIWMODE; @@ -520,7 +521,7 @@ else iwe.u.mode = IW_MODE_ADHOC; log(L_IOCTL, "scan, mode: %d\n", iwe.u.mode); - ptr = iwe_stream_add_event(ptr, end_buf, &iwe, IW_EV_UINT_LEN); + ptr = iwe_stream_add_event(info, ptr, end_buf, &iwe, IW_EV_UINT_LEN); } /* Add frequency */ @@ -528,7 +529,7 @@ iwe.u.freq.m = acx_channel_freq[bss->channel - 1] * 100000; iwe.u.freq.e = 1; log(L_IOCTL, "scan, frequency: %d\n", iwe.u.freq.m); - ptr = iwe_stream_add_event(ptr, end_buf, &iwe, IW_EV_FREQ_LEN); + ptr = iwe_stream_add_event(info, ptr, end_buf, &iwe, IW_EV_FREQ_LEN); /* Add link quality */ iwe.cmd = IWEVQUAL; @@ -546,7 +547,7 @@ iwe.u.qual.updated = 7; log(L_IOCTL, "scan, link quality: %d/%d/%d\n", iwe.u.qual.level, iwe.u.qual.noise, iwe.u.qual.qual); - ptr = iwe_stream_add_event(ptr, end_buf, &iwe, IW_EV_QUAL_LEN); + ptr = iwe_stream_add_event(info, ptr, end_buf, &iwe, IW_EV_QUAL_LEN); /* Add encryption */ iwe.cmd = SIOCGIWENCODE; @@ -556,7 +557,7 @@ iwe.u.data.flags = IW_ENCODE_DISABLED; iwe.u.data.length = 0; log(L_IOCTL, "scan, encryption flags: %X\n", iwe.u.data.flags); - ptr = iwe_stream_add_point(ptr, end_buf, &iwe, bss->essid); + ptr = iwe_stream_add_point(info, ptr, end_buf, &iwe, bss->essid); /* add rates */ iwe.cmd = SIOCGIWRATE; @@ -570,7 +571,7 @@ if (rate & 1) { iwe.u.bitrate.value = *p * 500000; /* units of 500kb/s */ log(L_IOCTL, "scan, rate: %d\n", iwe.u.bitrate.value); - ptr_rate = iwe_stream_add_value(ptr, ptr_rate, end_buf, + ptr_rate = iwe_stream_add_value(info, ptr, ptr_rate, end_buf, &iwe, IW_EV_PARAM_LEN); } rate >>= 1; @@ -625,7 +626,7 @@ for (i = 0; i < ARRAY_SIZE(adev->sta_list); i++) { struct client *bss = &adev->sta_list[i]; if (!bss->used) continue; - ptr = acx_s_scan_add_station(adev, ptr, + ptr = acx_s_scan_add_station(info, adev, ptr, extra + IW_SCAN_MAX_DATA, bss); } dwrq->length = ptr - extra;