diff -ur ipw2200-1.0.3/README.ipw2200 ipw2200-1.0.3-random/README.ipw2200
--- ipw2200-1.0.3/README.ipw2200	2005-04-08 23:36:51.000000000 +0200
+++ ipw2200-1.0.3-random/README.ipw2200	2005-04-12 13:43:55.000000000 +0200
@@ -111,6 +111,12 @@
   mode
 	Can be used to set the default mode of the adapter.  
 	0 = Managed, 1 = Ad-Hoc
+  
+  rndmac
+	Can be used to randomize mac when associating to a network.
+	The 3 first bytes are taken from the bssid of the access point 
+	and the three last are randomized.
+	0 = Off, 1 = On.  Default is 0.
 
 
 1.3. Wireless Extension Private Methods
diff -ur ipw2200-1.0.3/ipw2200.c ipw2200-1.0.3-random/ipw2200.c
--- ipw2200-1.0.3/ipw2200.c	2005-04-08 23:36:51.000000000 +0200
+++ ipw2200-1.0.3-random/ipw2200.c	2005-04-12 13:10:00.000000000 +0200
@@ -43,6 +43,7 @@
 MODULE_LICENSE("GPL");
 
 static int debug = 0;
+static int rndmac = 0;
 static int channel = 0;
 static int mode = 0;
 
@@ -5949,6 +5950,7 @@
 				 int roaming)
 {
 	int err;
+	u8 mac[ETH_ALEN];
 
 	if (priv->config & CFG_FIXED_RATE)
 		ipw_set_fixed_rate(priv, network);
@@ -5961,6 +5963,19 @@
 
 	network->last_associate = jiffies;
 
+
+	if(rndmac) {
+		get_random_bytes(mac, ETH_ALEN);
+		memcpy(mac, network->bssid, 3);
+
+		priv->config |= CFG_CUSTOM_MAC;
+		memcpy(priv->mac_addr, mac, ETH_ALEN);
+
+		ipw_down(priv);
+		ipw_up(priv);
+	}
+
+
 	memset(&priv->assoc_request, 0, sizeof(priv->assoc_request));
 	priv->assoc_request.channel = network->channel;
 	if ((priv->capability & CAP_PRIVACY_ON) &&
@@ -9068,6 +9083,9 @@
 module_param(debug, int, 0444);
 MODULE_PARM_DESC(debug, "debug output mask");
 
+module_param(rndmac, int, 0644);
+MODULE_PARM_DESC(rndmac, "randomize mac on associate (default 0 off)");
+
 module_param(channel, int, 0444);
 MODULE_PARM_DESC(channel, "channel to limit associate to (default 0 [ANY])");
 
