diff -ur ZD1211LnxDrv_2_22_0_0.orig/src/zd1205.c ZD1211LnxDrv_2_22_0_0/src/zd1205.c
--- ZD1211LnxDrv_2_22_0_0.orig/src/zd1205.c	2008-12-11 02:45:21.026434922 +0200
+++ ZD1211LnxDrv_2_22_0_0/src/zd1205.c	2008-12-11 02:43:59.342309537 +0200
@@ -7489,7 +7489,7 @@
  * Translate scan data returned from the card to a card independent
  * format that the Wireless Tools will understand 
  */
-static char *zd1205_translate_scan(struct net_device *dev,
+static char *zd1205_translate_scan(struct net_device *dev, struct iw_request_info *info,
 					char *current_ev,
 					char *end_buf,
 					bss_info_t *list)
@@ -7509,7 +7509,7 @@
 	iwe.cmd = SIOCGIWAP;
 	iwe.u.ap_addr.sa_family = ARPHRD_ETHER;
 	memcpy(iwe.u.ap_addr.sa_data, list->bssid, ETH_ALEN);
-	current_ev = iwe_stream_add_event(current_ev, end_buf, &iwe, IW_EV_ADDR_LEN);
+	current_ev = iwe_stream_add_event(info, current_ev, end_buf, &iwe, IW_EV_ADDR_LEN);
 
 	/* Other entries will be displayed in the order we give them */
 
@@ -7519,7 +7519,7 @@
 		iwe.u.data.length = 32;
 	iwe.cmd = SIOCGIWESSID;
 	iwe.u.data.flags = 1;
-	current_ev = iwe_stream_add_point(current_ev, end_buf, &iwe, &list->ssid[2]);
+	current_ev = iwe_stream_add_point(info, current_ev, end_buf, &iwe, &list->ssid[2]);
 
 	/* Add mode */
 	iwe.cmd = SIOCGIWMODE;
@@ -7530,7 +7530,7 @@
 
 		else
 			iwe.u.mode = IW_MODE_ADHOC;
-		current_ev = iwe_stream_add_event(current_ev, end_buf, &iwe, IW_EV_UINT_LEN);
+		current_ev = iwe_stream_add_event(info, current_ev, end_buf, &iwe, IW_EV_UINT_LEN);
 	}
 
 	/* Add frequency */
@@ -7544,7 +7544,7 @@
 	}
 #endif
 	iwe.u.freq.e = 1;
-	current_ev = iwe_stream_add_event(current_ev, end_buf, &iwe, IW_EV_FREQ_LEN);
+	current_ev = iwe_stream_add_event(info, current_ev, end_buf, &iwe, IW_EV_FREQ_LEN);
 
 #if ZDCONF_SIGNAL_INFO == 1
 #if WIRELESS_EXT < 15
@@ -7562,7 +7562,7 @@
 	iwe.u.qual.level = Tmp;
 	iwe.u.qual.noise = 0;
 	iwe.u.qual.qual = list->signalQuality;
-	current_ev = iwe_stream_add_event(current_ev, end_buf, &iwe, IW_EV_QUAL_LEN);
+	current_ev = iwe_stream_add_event(info, current_ev, end_buf, &iwe, IW_EV_QUAL_LEN);
 #else
 // Transform Signal quality from level to percentage
     memset(&iwe, 0, sizeof(iwe));
@@ -7574,7 +7574,7 @@
 
     snprintf(buf, sizeof(buf), "SignalStrength=%lu %%,LinkQuality:%u%%", Tmp,list->signalQuality);
     iwe.u.data.length = strlen(buf);
-    current_ev = iwe_stream_add_point(current_ev, end_buf, &iwe, buf);
+    current_ev = iwe_stream_add_point(info, current_ev, end_buf, &iwe, buf);
 #endif
 #endif
 #if ZDCONF_SES_SUPPORT == 1
@@ -7593,7 +7593,7 @@
             sprintf(buf+6+i*2,"%02x",list->SES_Element.buf[5+i]);
 		}
         iwe.u.data.length = strlen(buf);
-        current_ev = iwe_stream_add_point(current_ev, end_buf, &iwe, buf);
+        current_ev = iwe_stream_add_point(info, current_ev, end_buf, &iwe, buf);
 
     }
 #endif
@@ -7606,7 +7606,7 @@
 	else
 		iwe.u.data.flags = IW_ENCODE_DISABLED;
 	iwe.u.data.length = 0;
-	current_ev = iwe_stream_add_point(current_ev, end_buf, &iwe, list->ssid);
+	current_ev = iwe_stream_add_point(info, current_ev, end_buf, &iwe, list->ssid);
 
 	/* Rate : stuffing multiple values in a single event require a bit
 	 * more of magic */
@@ -7623,7 +7623,7 @@
 		/* Bit rate given in 500 kb/s units (+ 0x80) */
 		iwe.u.bitrate.value = ((list->supRates[i+2] & 0x7f) * 500000);
 		/* Add new value to event */
-		current_val = iwe_stream_add_value(current_ev, current_val, end_buf, &iwe, IW_EV_PARAM_LEN);
+		current_val = iwe_stream_add_value(info, current_ev, current_val, end_buf, &iwe, IW_EV_PARAM_LEN);
 	}
 
 	if (list->apMode != PURE_B_AP){
@@ -7631,7 +7631,7 @@
 			/* Bit rate given in 500 kb/s units (+ 0x80) */
 			iwe.u.bitrate.value = ((list->extRates[i+2] & 0x7f) * 500000);
 			/* Add new value to event */
-			current_val = iwe_stream_add_value(current_ev, current_val, end_buf, &iwe, IW_EV_PARAM_LEN);
+			current_val = iwe_stream_add_value(info, current_ev, current_val, end_buf, &iwe, IW_EV_PARAM_LEN);
 		}
 	}
 
@@ -7647,7 +7647,7 @@
 	iwe.cmd = IWEVCUSTOM;
 	snprintf(buf, sizeof(buf), "bcn_int=%d", list->beaconInterval);
 	iwe.u.data.length = strlen(buf);
-	current_ev = iwe_stream_add_point(current_ev, end_buf, &iwe, buf);
+	current_ev = iwe_stream_add_point(info, current_ev, end_buf, &iwe, buf);
 
 	if (list->WPAIe[1] != 0) {
 		static const char rsn_leader[] = "rsn_ie=";
@@ -7664,7 +7664,7 @@
 					list->WPAIe, list->WPAIe[1]+2,
 					wpa_leader, sizeof(wpa_leader)-1);
 		if (iwe.u.data.length != 0)
-			current_ev = iwe_stream_add_point(current_ev, end_buf,
+			current_ev = iwe_stream_add_point(info, current_ev, end_buf,
 					&iwe, buf);
 	}
 	if (list->RSNIe[1] != 0) 
@@ -7678,7 +7678,7 @@
 					list->RSNIe, list->RSNIe[1]+2,
 					rsn_leader, sizeof(rsn_leader)-1);
 			if (iwe.u.data.length != 0)
-				current_ev = iwe_stream_add_point(current_ev, end_buf,	&iwe, buf);
+				current_ev = iwe_stream_add_point(info, current_ev, end_buf,	&iwe, buf);
 		}
 	}
 
@@ -7719,7 +7719,7 @@
         //4k byte most. So, we show from head/tail alternately.
         //if(loop & BIT_0) 
         {
-            current_ev = zd1205_translate_scan(dev, current_ev,
+            current_ev = zd1205_translate_scan(dev, info, current_ev,
                     //extra + IW_SCAN_MAX_DATA,
                     extra + data->length,
                     &macp->BSSInfo[i]);
@@ -7729,7 +7729,7 @@
 /*
         else
         {
-            current_ev = zd1205_translate_scan(dev, current_ev,
+            current_ev = zd1205_translate_scan(dev, info, current_ev,
                     extra + IW_SCAN_MAX_DATA,
                     &macp->BSSInfo[macp->bss_index-1-i]);
         }
