rpms/kernel/F-9 linux-2.6-wireless-fixups.patch, 1.2, 1.3 config-generic, 1.100, 1.101 kernel.spec, 1.643, 1.644 linux-2.6-at76.patch, 1.9, 1.10 linux-2.6-wireless-pending.patch, 1.45, 1.46 linux-2.6-wireless.patch, 1.34, 1.35 linux-2.6-rt2x00-configure_filter.patch, 1.1, NONE linux-2.6-wireless-pending-too.patch, 1.6, NONE

John W. Linville (linville) fedora-extras-commits at redhat.com
Mon May 19 22:16:08 UTC 2008


Author: linville

Update of /cvs/pkgs/rpms/kernel/F-9
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv28435

Modified Files:
	config-generic kernel.spec linux-2.6-at76.patch 
	linux-2.6-wireless-pending.patch linux-2.6-wireless.patch 
Added Files:
	linux-2.6-wireless-fixups.patch 
Removed Files:
	linux-2.6-rt2x00-configure_filter.patch 
	linux-2.6-wireless-pending-too.patch 
Log Message:
resync wireless bits with upstream

linux-2.6-wireless-fixups.patch:

Index: linux-2.6-wireless-fixups.patch
===================================================================
RCS file: linux-2.6-wireless-fixups.patch
diff -N linux-2.6-wireless-fixups.patch
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ linux-2.6-wireless-fixups.patch	19 May 2008 22:15:18 -0000	1.3
@@ -0,0 +1,1004 @@
+diff -up linux-2.6.25.noarch/net/mac80211/iface.c.orig linux-2.6.25.noarch/net/mac80211/iface.c
+--- linux-2.6.25.noarch/net/mac80211/iface.c.orig	2008-05-19 17:31:02.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/iface.c	2008-05-19 17:31:10.000000000 -0400
+@@ -53,15 +53,6 @@ int ieee80211_if_add(struct net_device *
+ 	if (!ndev)
+ 		return -ENOMEM;
+ 
+-	ndev->needed_headroom = local->tx_headroom +
+-				4*6 /* four MAC addresses */
+-				+ 2 + 2 + 2 + 2 /* ctl, dur, seq, qos */
+-				+ 6 /* mesh */
+-				+ 8 /* rfc1042/bridge tunnel */
+-				- ETH_HLEN /* ethernet hard_header_len */
+-				+ IEEE80211_ENCRYPT_HEADROOM;
+-	ndev->needed_tailroom = IEEE80211_ENCRYPT_TAILROOM;
+-
+ 	ret = dev_alloc_name(ndev, ndev->name);
+ 	if (ret < 0)
+ 		goto fail;
+diff -up linux-2.6.25.noarch/net/mac80211/tkip.c.orig linux-2.6.25.noarch/net/mac80211/tkip.c
+--- linux-2.6.25.noarch/net/mac80211/tkip.c.orig	2008-05-19 17:29:38.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/tkip.c	2008-05-19 17:40:15.000000000 -0400
+@@ -8,22 +8,23 @@
+  */
+ 
+ #include <linux/kernel.h>
+-#include <linux/bitops.h>
+ #include <linux/types.h>
+ #include <linux/netdevice.h>
+-#include <asm/unaligned.h>
+ 
+ #include <net/mac80211.h>
+ #include "key.h"
+ #include "tkip.h"
+ #include "wep.h"
+ 
++
++/* TKIP key mixing functions */
++
++
+ #define PHASE1_LOOP_COUNT 8
+ 
+-/*
+- * 2-byte by 2-byte subset of the full AES S-box table; second part of this
+- * table is identical to first part but byte-swapped
+- */
++
++/* 2-byte by 2-byte subset of the full AES S-box table; second part of this
++ * table is identical to first part but byte-swapped */
+ static const u16 tkip_sbox[256] =
+ {
+ 	0xC6A5, 0xF884, 0xEE99, 0xF68D, 0xFF0D, 0xD6BD, 0xDEB1, 0x9154,
+@@ -60,13 +61,53 @@ static const u16 tkip_sbox[256] =
+ 	0x82C3, 0x29B0, 0x5A77, 0x1E11, 0x7BCB, 0xA8FC, 0x6DD6, 0x2C3A,
+ };
+ 
+-static u16 tkipS(u16 val)
++
++static inline u16 Mk16(u8 x, u8 y)
++{
++	return ((u16) x << 8) | (u16) y;
++}
++
++
++static inline u8 Hi8(u16 v)
++{
++	return v >> 8;
++}
++
++
++static inline u8 Lo8(u16 v)
++{
++	return v & 0xff;
++}
++
++
++static inline u16 Hi16(u32 v)
++{
++	return v >> 16;
++}
++
++
++static inline u16 Lo16(u32 v)
++{
++	return v & 0xffff;
++}
++
++
++static inline u16 RotR1(u16 v)
++{
++	return (v >> 1) | ((v & 0x0001) << 15);
++}
++
++
++static inline u16 tkip_S(u16 val)
+ {
+-	return tkip_sbox[val & 0xff] ^ swab16(tkip_sbox[val >> 8]);
++	u16 a = tkip_sbox[Hi8(val)];
++
++	return tkip_sbox[Lo8(val)] ^ Hi8(a) ^ (Lo8(a) << 8);
+ }
+ 
+-/*
+- * P1K := Phase1(TA, TK, TSC)
++
++
++/* P1K := Phase1(TA, TK, TSC)
+  * TA = transmitter address (48 bits)
+  * TK = dot11DefaultKeyValue or dot11KeyMappingValue (128 bits)
+  * TSC = TKIP sequence counter (48 bits, only 32 msb bits used)
+@@ -77,22 +118,23 @@ static void tkip_mixing_phase1(const u8 
+ {
+ 	int i, j;
+ 
+-	p1k[0] = tsc_IV32 & 0xFFFF;
+-	p1k[1] = tsc_IV32 >> 16;
+-	p1k[2] = get_unaligned_le16(ta + 0);
+-	p1k[3] = get_unaligned_le16(ta + 2);
+-	p1k[4] = get_unaligned_le16(ta + 4);
++	p1k[0] = Lo16(tsc_IV32);
++	p1k[1] = Hi16(tsc_IV32);
++	p1k[2] = Mk16(ta[1], ta[0]);
++	p1k[3] = Mk16(ta[3], ta[2]);
++	p1k[4] = Mk16(ta[5], ta[4]);
+ 
+ 	for (i = 0; i < PHASE1_LOOP_COUNT; i++) {
+ 		j = 2 * (i & 1);
+-		p1k[0] += tkipS(p1k[4] ^ get_unaligned_le16(tk + 0 + j));
+-		p1k[1] += tkipS(p1k[0] ^ get_unaligned_le16(tk + 4 + j));
+-		p1k[2] += tkipS(p1k[1] ^ get_unaligned_le16(tk + 8 + j));
+-		p1k[3] += tkipS(p1k[2] ^ get_unaligned_le16(tk + 12 + j));
+-		p1k[4] += tkipS(p1k[3] ^ get_unaligned_le16(tk + 0 + j)) + i;
++		p1k[0] += tkip_S(p1k[4] ^ Mk16(tk[ 1 + j], tk[ 0 + j]));
++		p1k[1] += tkip_S(p1k[0] ^ Mk16(tk[ 5 + j], tk[ 4 + j]));
++		p1k[2] += tkip_S(p1k[1] ^ Mk16(tk[ 9 + j], tk[ 8 + j]));
++		p1k[3] += tkip_S(p1k[2] ^ Mk16(tk[13 + j], tk[12 + j]));
++		p1k[4] += tkip_S(p1k[3] ^ Mk16(tk[ 1 + j], tk[ 0 + j])) + i;
+ 	}
+ }
+ 
++
+ static void tkip_mixing_phase2(const u16 *p1k, const u8 *tk, u16 tsc_IV16,
+ 			       u8 *rc4key)
+ {
+@@ -106,29 +148,31 @@ static void tkip_mixing_phase2(const u16
+ 	ppk[4] = p1k[4];
+ 	ppk[5] = p1k[4] + tsc_IV16;
+ 
+-	ppk[0] += tkipS(ppk[5] ^ get_unaligned_le16(tk + 0));
+-	ppk[1] += tkipS(ppk[0] ^ get_unaligned_le16(tk + 2));
+-	ppk[2] += tkipS(ppk[1] ^ get_unaligned_le16(tk + 4));
+-	ppk[3] += tkipS(ppk[2] ^ get_unaligned_le16(tk + 6));
+-	ppk[4] += tkipS(ppk[3] ^ get_unaligned_le16(tk + 8));
+-	ppk[5] += tkipS(ppk[4] ^ get_unaligned_le16(tk + 10));
+-	ppk[0] += ror16(ppk[5] ^ get_unaligned_le16(tk + 12), 1);
+-	ppk[1] += ror16(ppk[0] ^ get_unaligned_le16(tk + 14), 1);
+-	ppk[2] += ror16(ppk[1], 1);
+-	ppk[3] += ror16(ppk[2], 1);
+-	ppk[4] += ror16(ppk[3], 1);
+-	ppk[5] += ror16(ppk[4], 1);
+-
+-	rc4key[0] = tsc_IV16 >> 8;
+-	rc4key[1] = ((tsc_IV16 >> 8) | 0x20) & 0x7f;
+-	rc4key[2] = tsc_IV16 & 0xFF;
+-	rc4key[3] = ((ppk[5] ^ get_unaligned_le16(tk)) >> 1) & 0xFF;
+-
+-	rc4key += 4;
+-	for (i = 0; i < 6; i++)
+-		put_unaligned_le16(ppk[i], rc4key + 2 * i);
++	ppk[0] += tkip_S(ppk[5] ^ Mk16(tk[ 1], tk[ 0]));
++	ppk[1] += tkip_S(ppk[0] ^ Mk16(tk[ 3], tk[ 2]));
++	ppk[2] += tkip_S(ppk[1] ^ Mk16(tk[ 5], tk[ 4]));
++	ppk[3] += tkip_S(ppk[2] ^ Mk16(tk[ 7], tk[ 6]));
++	ppk[4] += tkip_S(ppk[3] ^ Mk16(tk[ 9], tk[ 8]));
++	ppk[5] += tkip_S(ppk[4] ^ Mk16(tk[11], tk[10]));
++	ppk[0] +=  RotR1(ppk[5] ^ Mk16(tk[13], tk[12]));
++	ppk[1] +=  RotR1(ppk[0] ^ Mk16(tk[15], tk[14]));
++	ppk[2] +=  RotR1(ppk[1]);
++	ppk[3] +=  RotR1(ppk[2]);
++	ppk[4] +=  RotR1(ppk[3]);
++	ppk[5] +=  RotR1(ppk[4]);
++
++	rc4key[0] = Hi8(tsc_IV16);
++	rc4key[1] = (Hi8(tsc_IV16) | 0x20) & 0x7f;
++	rc4key[2] = Lo8(tsc_IV16);
++	rc4key[3] = Lo8((ppk[5] ^ Mk16(tk[1], tk[0])) >> 1);
++
++	for (i = 0; i < 6; i++) {
++		rc4key[4 + 2 * i] = Lo8(ppk[i]);
++		rc4key[5 + 2 * i] = Hi8(ppk[i]);
++	}
+ }
+ 
++
+ /* Add TKIP IV and Ext. IV at @pos. @iv0, @iv1, and @iv2 are the first octets
+  * of the IV. Returns pointer to the octet following IVs (i.e., beginning of
+  * the packet payload). */
+@@ -139,10 +183,14 @@ u8 * ieee80211_tkip_add_iv(u8 *pos, stru
+ 	*pos++ = iv1;
+ 	*pos++ = iv2;
+ 	*pos++ = (key->conf.keyidx << 6) | (1 << 5) /* Ext IV */;
+-	put_unaligned_le32(key->u.tkip.iv32, pos);
+-	return pos + 4;
++	*pos++ = key->u.tkip.iv32 & 0xff;
++	*pos++ = (key->u.tkip.iv32 >> 8) & 0xff;
++	*pos++ = (key->u.tkip.iv32 >> 16) & 0xff;
++	*pos++ = (key->u.tkip.iv32 >> 24) & 0xff;
++	return pos;
+ }
+ 
++
+ void ieee80211_tkip_gen_phase1key(struct ieee80211_key *key, u8 *ta,
+ 				  u16 *phase1key)
+ {
+@@ -180,8 +228,10 @@ void ieee80211_get_tkip_key(struct ieee8
+ 	u16 iv16;
+ 	u32 iv32;
+ 
+-	iv16 = data[hdr_len + 2] | (data[hdr_len] << 8);
+-	iv32 = get_unaligned_le32(data + hdr_len + 4);
++	iv16 = data[hdr_len] << 8;
++	iv16 += data[hdr_len + 2];
++	iv32 = data[hdr_len + 4] | (data[hdr_len + 5] << 8) |
++	       (data[hdr_len + 6] << 16) | (data[hdr_len + 7] << 24);
+ 
+ #ifdef CONFIG_TKIP_DEBUG
+ 	printk(KERN_DEBUG "TKIP encrypt: iv16 = 0x%04x, iv32 = 0x%08x\n",
+@@ -231,6 +281,7 @@ void ieee80211_tkip_encrypt_data(struct 
+ 	ieee80211_wep_encrypt_data(tfm, rc4key, 16, pos, payload_len);
+ }
+ 
++
+ /* Decrypt packet payload with TKIP using @key. @pos is a pointer to the
+  * beginning of the buffer containing IEEE 802.11 header payload, i.e.,
+  * including IV, Ext. IV, real data, Michael MIC, ICV. @payload_len is the
+@@ -251,7 +302,7 @@ int ieee80211_tkip_decrypt_data(struct c
+ 
+ 	iv16 = (pos[0] << 8) | pos[2];
+ 	keyid = pos[3];
+-	iv32 = get_unaligned_le32(pos + 4);
++	iv32 = pos[4] | (pos[5] << 8) | (pos[6] << 16) | (pos[7] << 24);
+ 	pos += 8;
+ #ifdef CONFIG_TKIP_DEBUG
+ 	{
+@@ -358,3 +409,5 @@ int ieee80211_tkip_decrypt_data(struct c
+ 
+ 	return res;
+ }
++
++
+diff -up linux-2.6.25.noarch/net/mac80211/mesh_hwmp.c.orig linux-2.6.25.noarch/net/mac80211/mesh_hwmp.c
+--- linux-2.6.25.noarch/net/mac80211/mesh_hwmp.c.orig	2008-05-19 17:29:38.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/mesh_hwmp.c	2008-05-19 17:38:26.000000000 -0400
+@@ -26,7 +26,7 @@ static inline u32 u32_field_get(u8 *preq
+ {
+ 	if (ae)
+ 		offset += 6;
+-	return get_unaligned_le32(preq_elem + offset);
++	return le32_to_cpu(get_unaligned((__le32 *) (preq_elem + offset)));
+ }
+ 
+ /* HWMP IE processing macros */
+diff -up linux-2.6.25.noarch/net/wireless/wext.c.orig linux-2.6.25.noarch/net/wireless/wext.c
+--- linux-2.6.25.noarch/net/wireless/wext.c.orig	2008-05-19 17:31:02.000000000 -0400
++++ linux-2.6.25.noarch/net/wireless/wext.c	2008-05-19 17:31:10.000000000 -0400
+@@ -1157,7 +1157,7 @@ static void rtmsg_iwinfo(struct net_devi
+ 	struct sk_buff *skb;
+ 	int err;
+ 
+-	if (dev_net(dev) != &init_net)
++	if (dev->nd_net != &init_net)
+ 		return;
+ 
+ 	skb = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_ATOMIC);
+diff -up linux-2.6.25.noarch/net/wireless/radiotap.c.orig linux-2.6.25.noarch/net/wireless/radiotap.c
+--- linux-2.6.25.noarch/net/wireless/radiotap.c.orig	2008-05-19 17:29:38.000000000 -0400
++++ linux-2.6.25.noarch/net/wireless/radiotap.c	2008-05-19 17:38:26.000000000 -0400
+@@ -59,21 +59,23 @@ int ieee80211_radiotap_iterator_init(
+ 		return -EINVAL;
+ 
+ 	/* sanity check for allowed length and radiotap length field */
+-	if (max_length < get_unaligned_le16(&radiotap_header->it_len))
++	if (max_length < le16_to_cpu(get_unaligned(&radiotap_header->it_len)))
+ 		return -EINVAL;
+ 
+ 	iterator->rtheader = radiotap_header;
+-	iterator->max_length = get_unaligned_le16(&radiotap_header->it_len);
++	iterator->max_length = le16_to_cpu(get_unaligned(
++						&radiotap_header->it_len));
+ 	iterator->arg_index = 0;
+-	iterator->bitmap_shifter = get_unaligned_le32(&radiotap_header->it_present);
++	iterator->bitmap_shifter = le32_to_cpu(get_unaligned(
++						&radiotap_header->it_present));
+ 	iterator->arg = (u8 *)radiotap_header + sizeof(*radiotap_header);
+ 	iterator->this_arg = NULL;
+ 
+ 	/* find payload start allowing for extended bitmap(s) */
+ 
+ 	if (unlikely(iterator->bitmap_shifter & (1<<IEEE80211_RADIOTAP_EXT))) {
+-		while (get_unaligned_le32(iterator->arg) &
+-		       (1 << IEEE80211_RADIOTAP_EXT)) {
++		while (le32_to_cpu(get_unaligned((__le32 *)iterator->arg)) &
++				   (1<<IEEE80211_RADIOTAP_EXT)) {
+ 			iterator->arg += sizeof(u32);
+ 
+ 			/*
+@@ -239,8 +241,8 @@ int ieee80211_radiotap_iterator_next(
+ 			if (iterator->bitmap_shifter & 1) {
+ 				/* b31 was set, there is more */
+ 				/* move to next u32 bitmap */
+-				iterator->bitmap_shifter =
+-				    get_unaligned_le32(iterator->next_bitmap);
++				iterator->bitmap_shifter = le32_to_cpu(
++					get_unaligned(iterator->next_bitmap));
+ 				iterator->next_bitmap++;
+ 			} else
+ 				/* no more bitmaps: end */
+diff -up linux-2.6.25.noarch/net/wireless/core.c.orig linux-2.6.25.noarch/net/wireless/core.c
+--- linux-2.6.25.noarch/net/wireless/core.c.orig	2008-05-19 17:32:53.000000000 -0400
++++ linux-2.6.25.noarch/net/wireless/core.c	2008-05-19 17:37:18.000000000 -0400
+@@ -167,13 +167,13 @@ int cfg80211_dev_rename(struct cfg80211_
+ 
+ 	/* Ignore nop renames */
+ 	result = 0;
+-	if (strcmp(newname, dev_name(&rdev->wiphy.dev)) == 0)
++	if (strcmp(newname, rdev->wiphy.dev.bus_id) == 0)
+ 		goto out_unlock;
+ 
+ 	/* Ensure another device does not already have this name. */
+ 	list_for_each_entry(drv, &cfg80211_drv_list, list) {
+ 		result = -EINVAL;
+-		if (strcmp(newname, dev_name(&drv->wiphy.dev)) == 0)
++		if (strcmp(newname, drv->wiphy.dev.bus_id) == 0)
+ 			goto out_unlock;
+ 	}
+ 
+diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/phy.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43/phy.c
+--- linux-2.6.25.noarch/drivers/net/wireless/b43/phy.c.orig	2008-05-19 17:29:38.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43/phy.c	2008-05-19 17:42:19.000000000 -0400
+@@ -1400,7 +1400,7 @@ static void b43_phy_initg(struct b43_wld
+ 		 * the value 0x7FFFFFFF here. I think that is some weird
+ 		 * compiler optimization in the original driver.
+ 		 * Essentially, what we do here is resetting all NRSSI LT
+-		 * entries to -32 (see the clamp_val() in nrssi_hw_update())
++		 * entries to -32 (see the limit_value() in nrssi_hw_update())
+ 		 */
+ 		b43_nrssi_hw_update(dev, 0xFFFF);	//FIXME?
+ 		b43_calc_nrssi_threshold(dev);
+@@ -1462,13 +1462,13 @@ static s8 b43_phy_estimate_power_out(str
+ 	switch (phy->type) {
+ 	case B43_PHYTYPE_A:
+ 		tmp += 0x80;
+-		tmp = clamp_val(tmp, 0x00, 0xFF);
++		tmp = limit_value(tmp, 0x00, 0xFF);
+ 		dbm = phy->tssi2dbm[tmp];
+ 		//TODO: There's a FIXME on the specs
+ 		break;
+ 	case B43_PHYTYPE_B:
+ 	case B43_PHYTYPE_G:
+-		tmp = clamp_val(tmp, 0x00, 0x3F);
++		tmp = limit_value(tmp, 0x00, 0x3F);
+ 		dbm = phy->tssi2dbm[tmp];
+ 		break;
+ 	default:
+@@ -1527,8 +1527,8 @@ void b43_put_attenuation_into_ranges(str
+ 		break;
+ 	}
+ 
+-	*_rfatt = clamp_val(rfatt, rf_min, rf_max);
+-	*_bbatt = clamp_val(bbatt, bb_min, bb_max);
++	*_rfatt = limit_value(rfatt, rf_min, rf_max);
++	*_bbatt = limit_value(bbatt, bb_min, bb_max);
+ }
+ 
+ /* http://bcm-specs.sipsolutions.net/RecalculateTransmissionPower */
+@@ -1623,7 +1623,7 @@ void b43_phy_xmitpower(struct b43_wldev 
+ 			/* Get desired power (in Q5.2) */
+ 			desired_pwr = INT_TO_Q52(phy->power_level);
+ 			/* And limit it. max_pwr already is Q5.2 */
+-			desired_pwr = clamp_val(desired_pwr, 0, max_pwr);
++			desired_pwr = limit_value(desired_pwr, 0, max_pwr);
+ 			if (b43_debug(dev, B43_DBG_XMITPOWER)) {
+ 				b43dbg(dev->wl,
+ 				       "Current TX power output: " Q52_FMT
+@@ -1733,7 +1733,7 @@ static inline
+ 		f = q;
+ 		i++;
+ 	} while (delta >= 2);
+-	entry[index] = clamp_val(b43_tssi2dbm_ad(m1 * f, 8192), -127, 128);
++	entry[index] = limit_value(b43_tssi2dbm_ad(m1 * f, 8192), -127, 128);
+ 	return 0;
+ }
+ 
+@@ -2259,7 +2259,7 @@ void b43_nrssi_hw_update(struct b43_wlde
+ 	for (i = 0; i < 64; i++) {
+ 		tmp = b43_nrssi_hw_read(dev, i);
+ 		tmp -= val;
+-		tmp = clamp_val(tmp, -32, 31);
++		tmp = limit_value(tmp, -32, 31);
+ 		b43_nrssi_hw_write(dev, i, tmp);
+ 	}
+ }
+@@ -2276,7 +2276,7 @@ void b43_nrssi_mem_update(struct b43_wld
+ 		tmp = (i - delta) * phy->nrssislope;
+ 		tmp /= 0x10000;
+ 		tmp += 0x3A;
+-		tmp = clamp_val(tmp, 0, 0x3F);
++		tmp = limit_value(tmp, 0, 0x3F);
+ 		phy->nrssi_lt[i] = tmp;
+ 	}
+ }
+@@ -2713,7 +2713,7 @@ void b43_calc_nrssi_threshold(struct b43
+ 			} else
+ 				threshold = phy->nrssi[1] - 5;
+ 
+-			threshold = clamp_val(threshold, 0, 0x3E);
++			threshold = limit_value(threshold, 0, 0x3E);
+ 			b43_phy_read(dev, 0x0020);	/* dummy read */
+ 			b43_phy_write(dev, 0x0020,
+ 				      (((u16) threshold) << 8) | 0x001C);
+@@ -2764,7 +2764,7 @@ void b43_calc_nrssi_threshold(struct b43
+ 			else
+ 				a += 32;
+ 			a = a >> 6;
+-			a = clamp_val(a, -31, 31);
++			a = limit_value(a, -31, 31);
+ 
+ 			b = b * (phy->nrssi[1] - phy->nrssi[0]);
+ 			b += (phy->nrssi[0] << 6);
+@@ -2773,7 +2773,7 @@ void b43_calc_nrssi_threshold(struct b43
+ 			else
+ 				b += 32;
+ 			b = b >> 6;
+-			b = clamp_val(b, -31, 31);
++			b = limit_value(b, -31, 31);
+ 
+ 			tmp_u16 = b43_phy_read(dev, 0x048A) & 0xF000;
+ 			tmp_u16 |= ((u32) b & 0x0000003F);
+diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/lo.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43/lo.c
+--- linux-2.6.25.noarch/drivers/net/wireless/b43/lo.c.orig	2008-05-19 17:29:38.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43/lo.c	2008-05-19 17:42:19.000000000 -0400
+@@ -199,7 +199,7 @@ static void lo_measure_txctl_values(stru
+ 		if (lb_gain > 10) {
+ 			radio_pctl_reg = 0;
+ 			pga = abs(10 - lb_gain) / 6;
+-			pga = clamp_val(pga, 0, 15);
++			pga = limit_value(pga, 0, 15);
+ 		} else {
+ 			int cmp_val;
+ 			int tmp;
+@@ -321,7 +321,7 @@ static void lo_measure_gain_values(struc
+ 			phy->lna_lod_gain = 1;
+ 			trsw_rx_gain -= 8;
+ 		}
+-		trsw_rx_gain = clamp_val(trsw_rx_gain, 0, 0x2D);
++		trsw_rx_gain = limit_value(trsw_rx_gain, 0, 0x2D);
+ 		phy->pga_gain = trsw_rx_gain / 3;
+ 		if (phy->pga_gain >= 5) {
+ 			phy->pga_gain -= 5;
+diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/main.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43/main.c
+--- linux-2.6.25.noarch/drivers/net/wireless/b43/main.c.orig	2008-05-19 17:31:02.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43/main.c	2008-05-19 17:42:19.000000000 -0400
+@@ -1182,10 +1182,10 @@ static void handle_irq_noise(struct b43_
+ 	/* Get the noise samples. */
+ 	B43_WARN_ON(dev->noisecalc.nr_samples >= 8);
+ 	i = dev->noisecalc.nr_samples;
+-	noise[0] = clamp_val(noise[0], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
+-	noise[1] = clamp_val(noise[1], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
+-	noise[2] = clamp_val(noise[2], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
+-	noise[3] = clamp_val(noise[3], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
++	noise[0] = limit_value(noise[0], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
++	noise[1] = limit_value(noise[1], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
++	noise[2] = limit_value(noise[2], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
++	noise[3] = limit_value(noise[3], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
+ 	dev->noisecalc.samples[i][0] = phy->nrssi_lt[noise[0]];
+ 	dev->noisecalc.samples[i][1] = phy->nrssi_lt[noise[1]];
+ 	dev->noisecalc.samples[i][2] = phy->nrssi_lt[noise[2]];
+@@ -2178,7 +2178,7 @@ static int b43_write_initvals(struct b43
+ 				goto err_format;
+ 			array_size -= sizeof(iv->data.d32);
+ 
+-			value = get_unaligned_be32(&iv->data.d32);
++			value = be32_to_cpu(get_unaligned(&iv->data.d32));
+ 			b43_write32(dev, offset, value);
+ 
+ 			iv = (const struct b43_iv *)((const uint8_t *)iv +
+diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h.orig linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h
+--- linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h.orig	2008-05-19 17:29:38.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h	2008-05-19 17:42:19.000000000 -0400
+@@ -939,6 +939,22 @@ static inline bool __b43_warn_on_dummy(b
+ # define B43_WARN_ON(x)	__b43_warn_on_dummy(unlikely(!!(x)))
+ #endif
+ 
++/** Limit a value between two limits */
++#ifdef limit_value
++# undef limit_value
++#endif
++#define limit_value(value, min, max)  \
++	({						\
++		typeof(value) __value = (value);	\
++		typeof(value) __min = (min);		\
++		typeof(value) __max = (max);		\
++		if (__value < __min)			\
++			__value = __min;		\
++		else if (__value > __max)		\
++			__value = __max;		\
++		__value;				\
++	})
++
+ /* Convert an integer to a Q5.2 value */
+ #define INT_TO_Q52(i)	((i) << 2)
+ /* Convert a Q5.2 value to an integer (precision loss!) */
+diff -up linux-2.6.25.noarch/drivers/net/wireless/airo.c.orig linux-2.6.25.noarch/drivers/net/wireless/airo.c
+--- linux-2.6.25.noarch/drivers/net/wireless/airo.c.orig	2008-05-19 17:31:02.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/airo.c	2008-05-19 17:31:10.000000000 -0400
+@@ -3659,7 +3659,7 @@ void mpi_receive_802_11 (struct airo_inf
+ 	ptr += hdrlen;
+ 	if (hdrlen == 24)
+ 		ptr += 6;
+-	gap = get_unaligned_le16(ptr);
++	gap = le16_to_cpu(get_unaligned((__le16 *)ptr));
+ 	ptr += sizeof(__le16);
+ 	if (gap) {
+ 		if (gap <= 8)
+@@ -4349,28 +4349,24 @@ static int proc_config_open( struct inod
+ static int proc_wepkey_open( struct inode *inode, struct file *file );
+ 
+ static const struct file_operations proc_statsdelta_ops = {
+-	.owner		= THIS_MODULE,
+ 	.read		= proc_read,
+ 	.open		= proc_statsdelta_open,
+ 	.release	= proc_close
+ };
+ 
+ static const struct file_operations proc_stats_ops = {
+-	.owner		= THIS_MODULE,
+ 	.read		= proc_read,
+ 	.open		= proc_stats_open,
+ 	.release	= proc_close
+ };
+ 
+ static const struct file_operations proc_status_ops = {
+-	.owner		= THIS_MODULE,
+ 	.read		= proc_read,
+ 	.open		= proc_status_open,
+ 	.release	= proc_close
+ };
+ 
+ static const struct file_operations proc_SSID_ops = {
+-	.owner		= THIS_MODULE,
+ 	.read		= proc_read,
+ 	.write		= proc_write,
+ 	.open		= proc_SSID_open,
+@@ -4378,7 +4374,6 @@ static const struct file_operations proc
+ };
+ 
+ static const struct file_operations proc_BSSList_ops = {
+-	.owner		= THIS_MODULE,
+ 	.read		= proc_read,
+ 	.write		= proc_write,
+ 	.open		= proc_BSSList_open,
+@@ -4386,7 +4381,6 @@ static const struct file_operations proc
+ };
+ 
+ static const struct file_operations proc_APList_ops = {
+-	.owner		= THIS_MODULE,
+ 	.read		= proc_read,
+ 	.write		= proc_write,
+ 	.open		= proc_APList_open,
+@@ -4394,7 +4388,6 @@ static const struct file_operations proc
+ };
+ 
+ static const struct file_operations proc_config_ops = {
+-	.owner		= THIS_MODULE,
+ 	.read		= proc_read,
+ 	.write		= proc_write,
+ 	.open		= proc_config_open,
+@@ -4402,7 +4395,6 @@ static const struct file_operations proc
+ };
+ 
+ static const struct file_operations proc_wepkey_ops = {
+-	.owner		= THIS_MODULE,
+ 	.read		= proc_read,
+ 	.write		= proc_write,
+ 	.open		= proc_wepkey_open,
+@@ -4421,6 +4413,10 @@ struct proc_data {
+ 	void (*on_close) (struct inode *, struct file *);
+ };
+ 
++#ifndef SETPROC_OPS
++#define SETPROC_OPS(entry, ops) (entry)->proc_fops = &(ops)
++#endif
++
+ static int setup_proc_entry( struct net_device *dev,
+ 			     struct airo_info *apriv ) {
+ 	struct proc_dir_entry *entry;
+@@ -4436,76 +4432,100 @@ static int setup_proc_entry( struct net_
+ 	apriv->proc_entry->owner = THIS_MODULE;
+ 
+ 	/* Setup the StatsDelta */
+-	entry = proc_create_data("StatsDelta",
+-				 S_IFREG | (S_IRUGO&proc_perm),
+-				 apriv->proc_entry, &proc_statsdelta_ops, dev);
++	entry = create_proc_entry("StatsDelta",
++				  S_IFREG | (S_IRUGO&proc_perm),
++				  apriv->proc_entry);
+ 	if (!entry)
+ 		goto fail_stats_delta;
+ 	entry->uid = proc_uid;
+ 	entry->gid = proc_gid;
++	entry->data = dev;
++	entry->owner = THIS_MODULE;
++	SETPROC_OPS(entry, proc_statsdelta_ops);
+ 
+ 	/* Setup the Stats */
+-	entry = proc_create_data("Stats",
+-				 S_IFREG | (S_IRUGO&proc_perm),
+-				 apriv->proc_entry, &proc_stats_ops, dev);
++	entry = create_proc_entry("Stats",
++				  S_IFREG | (S_IRUGO&proc_perm),
++				  apriv->proc_entry);
+ 	if (!entry)
+ 		goto fail_stats;
+ 	entry->uid = proc_uid;
+ 	entry->gid = proc_gid;
++	entry->data = dev;
++	entry->owner = THIS_MODULE;
++	SETPROC_OPS(entry, proc_stats_ops);
+ 
+ 	/* Setup the Status */
+-	entry = proc_create_data("Status",
+-				 S_IFREG | (S_IRUGO&proc_perm),
+-				 apriv->proc_entry, &proc_status_ops, dev);
++	entry = create_proc_entry("Status",
++				  S_IFREG | (S_IRUGO&proc_perm),
++				  apriv->proc_entry);
+ 	if (!entry)
+ 		goto fail_status;
+ 	entry->uid = proc_uid;
+ 	entry->gid = proc_gid;
++	entry->data = dev;
++	entry->owner = THIS_MODULE;
++	SETPROC_OPS(entry, proc_status_ops);
+ 
+ 	/* Setup the Config */
+-	entry = proc_create_data("Config",
+-				 S_IFREG | proc_perm,
+-				 apriv->proc_entry, &proc_config_ops, dev);
++	entry = create_proc_entry("Config",
++				  S_IFREG | proc_perm,
++				  apriv->proc_entry);
+ 	if (!entry)
+ 		goto fail_config;
+ 	entry->uid = proc_uid;
+ 	entry->gid = proc_gid;
++	entry->data = dev;
++	entry->owner = THIS_MODULE;
++	SETPROC_OPS(entry, proc_config_ops);
+ 
+ 	/* Setup the SSID */
+-	entry = proc_create_data("SSID",
+-				 S_IFREG | proc_perm,
+-				 apriv->proc_entry, &proc_SSID_ops, dev);
++	entry = create_proc_entry("SSID",
++				  S_IFREG | proc_perm,
++				  apriv->proc_entry);
+ 	if (!entry)
+ 		goto fail_ssid;
+ 	entry->uid = proc_uid;
+ 	entry->gid = proc_gid;
++	entry->data = dev;
++	entry->owner = THIS_MODULE;
++	SETPROC_OPS(entry, proc_SSID_ops);
+ 
+ 	/* Setup the APList */
+-	entry = proc_create_data("APList",
+-				 S_IFREG | proc_perm,
+-				 apriv->proc_entry, &proc_APList_ops, dev);
++	entry = create_proc_entry("APList",
++				  S_IFREG | proc_perm,
++				  apriv->proc_entry);
+ 	if (!entry)
+ 		goto fail_aplist;
+ 	entry->uid = proc_uid;
+ 	entry->gid = proc_gid;
++	entry->data = dev;
++	entry->owner = THIS_MODULE;
++	SETPROC_OPS(entry, proc_APList_ops);
+ 
+ 	/* Setup the BSSList */
+-	entry = proc_create_data("BSSList",
+-				 S_IFREG | proc_perm,
+-				 apriv->proc_entry, &proc_BSSList_ops, dev);
++	entry = create_proc_entry("BSSList",
++				  S_IFREG | proc_perm,
++				  apriv->proc_entry);
+ 	if (!entry)
+ 		goto fail_bsslist;
+ 	entry->uid = proc_uid;
+ 	entry->gid = proc_gid;
++	entry->data = dev;
++	entry->owner = THIS_MODULE;
++	SETPROC_OPS(entry, proc_BSSList_ops);
+ 
+ 	/* Setup the WepKey */
+-	entry = proc_create_data("WepKey",
+-				 S_IFREG | proc_perm,
+-				 apriv->proc_entry, &proc_wepkey_ops, dev);
++	entry = create_proc_entry("WepKey",
++				  S_IFREG | proc_perm,
++				  apriv->proc_entry);
+ 	if (!entry)
+ 		goto fail_wepkey;
+ 	entry->uid = proc_uid;
+ 	entry->gid = proc_gid;
++	entry->data = dev;
++	entry->owner = THIS_MODULE;
++	SETPROC_OPS(entry, proc_wepkey_ops);
+ 
+ 	return 0;
+ 
+diff -up linux-2.6.25.noarch/drivers/net/wireless/zd1211rw/zd_usb.c.orig linux-2.6.25.noarch/drivers/net/wireless/zd1211rw/zd_usb.c
+--- linux-2.6.25.noarch/drivers/net/wireless/zd1211rw/zd_usb.c.orig	2008-05-19 17:31:02.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/zd1211rw/zd_usb.c	2008-05-19 17:31:10.000000000 -0400
+@@ -545,11 +545,11 @@ static void handle_rx_packet(struct zd_u
+ 	 * be padded. Unaligned access might also happen if the length_info
+ 	 * structure is not present.
+ 	 */
+-	if (get_unaligned_le16(&length_info->tag) == RX_LENGTH_INFO_TAG)
++	if (get_unaligned(&length_info->tag) == cpu_to_le16(RX_LENGTH_INFO_TAG))
+ 	{
+ 		unsigned int l, k, n;
+ 		for (i = 0, l = 0;; i++) {
+-			k = get_unaligned_le16(&length_info->length[i]);
++			k = le16_to_cpu(get_unaligned(&length_info->length[i]));
+ 			if (k == 0)
+ 				return;
+ 			n = l+k;
+diff -up linux-2.6.25.noarch/drivers/net/wireless/b43legacy/phy.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43legacy/phy.c
+--- linux-2.6.25.noarch/drivers/net/wireless/b43legacy/phy.c.orig	2008-05-19 17:29:38.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43legacy/phy.c	2008-05-19 17:43:33.000000000 -0400
+@@ -1088,7 +1088,7 @@ static void b43legacy_phy_initg(struct b
+ 		 * the value 0x7FFFFFFF here. I think that is some weird
+ 		 * compiler optimization in the original driver.
+ 		 * Essentially, what we do here is resetting all NRSSI LT
+-		 * entries to -32 (see the clamp_val() in nrssi_hw_update())
++		 * entries to -32 (see the limit_value() in nrssi_hw_update())
+ 		 */
+ 		b43legacy_nrssi_hw_update(dev, 0xFFFF);
+ 		b43legacy_calc_nrssi_threshold(dev);
+@@ -1756,7 +1756,7 @@ static s8 b43legacy_phy_estimate_power_o
+ 	switch (phy->type) {
+ 	case B43legacy_PHYTYPE_B:
+ 	case B43legacy_PHYTYPE_G:
+-		tmp = clamp_val(tmp, 0x00, 0x3F);
++		tmp = limit_value(tmp, 0x00, 0x3F);
+ 		dbm = phy->tssi2dbm[tmp];
+ 		break;
+ 	default:
+@@ -1859,7 +1859,7 @@ void b43legacy_phy_xmitpower(struct b43l
+ 
+ 	/* find the desired power in Q5.2 - power_level is in dBm
+ 	 * and limit it - max_pwr is already in Q5.2 */
+-	desired_pwr = clamp_val(phy->power_level << 2, 0, max_pwr);
++	desired_pwr = limit_value(phy->power_level << 2, 0, max_pwr);
+ 	if (b43legacy_debug(dev, B43legacy_DBG_XMITPOWER))
+ 		b43legacydbg(dev->wl, "Current TX power output: " Q52_FMT
+ 		       " dBm, Desired TX power output: " Q52_FMT
+@@ -1905,7 +1905,7 @@ void b43legacy_phy_xmitpower(struct b43l
+ 			radio_attenuation++;
+ 		}
+ 	}
+-	baseband_attenuation = clamp_val(baseband_attenuation, 0, 11);
++	baseband_attenuation = limit_value(baseband_attenuation, 0, 11);
+ 
+ 	txpower = phy->txctl1;
+ 	if ((phy->radio_ver == 0x2050) && (phy->radio_rev == 2)) {
+@@ -1933,8 +1933,8 @@ void b43legacy_phy_xmitpower(struct b43l
+ 	}
+ 	/* Save the control values */
+ 	phy->txctl1 = txpower;
+-	baseband_attenuation = clamp_val(baseband_attenuation, 0, 11);
+-	radio_attenuation = clamp_val(radio_attenuation, 0, 9);
++	baseband_attenuation = limit_value(baseband_attenuation, 0, 11);
++	radio_attenuation = limit_value(radio_attenuation, 0, 9);
+ 	phy->rfatt = radio_attenuation;
+ 	phy->bbatt = baseband_attenuation;
+ 
+@@ -1979,7 +1979,7 @@ s8 b43legacy_tssi2dbm_entry(s8 entry [],
+ 		f = q;
+ 		i++;
+ 	} while (delta >= 2);
+-	entry[index] = clamp_val(b43legacy_tssi2dbm_ad(m1 * f, 8192),
++	entry[index] = limit_value(b43legacy_tssi2dbm_ad(m1 * f, 8192),
+ 				   -127, 128);
+ 	return 0;
+ }
+diff -up linux-2.6.25.noarch/drivers/net/wireless/b43legacy/radio.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43legacy/radio.c
+--- linux-2.6.25.noarch/drivers/net/wireless/b43legacy/radio.c.orig	2008-05-19 17:29:38.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43legacy/radio.c	2008-05-19 17:43:33.000000000 -0400
+@@ -357,7 +357,7 @@ void b43legacy_nrssi_hw_update(struct b4
+ 	for (i = 0; i < 64; i++) {
+ 		tmp = b43legacy_nrssi_hw_read(dev, i);
+ 		tmp -= val;
+-		tmp = clamp_val(tmp, -32, 31);
++		tmp = limit_value(tmp, -32, 31);
+ 		b43legacy_nrssi_hw_write(dev, i, tmp);
+ 	}
+ }
+@@ -375,7 +375,7 @@ void b43legacy_nrssi_mem_update(struct b
+ 		tmp = (i - delta) * phy->nrssislope;
+ 		tmp /= 0x10000;
+ 		tmp += 0x3A;
+-		tmp = clamp_val(tmp, 0, 0x3F);
++		tmp = limit_value(tmp, 0, 0x3F);
+ 		phy->nrssi_lt[i] = tmp;
+ 	}
+ }
+@@ -839,7 +839,7 @@ void b43legacy_calc_nrssi_threshold(stru
+ 		} else
+ 			threshold = phy->nrssi[1] - 5;
+ 
+-		threshold = clamp_val(threshold, 0, 0x3E);
++		threshold = limit_value(threshold, 0, 0x3E);
+ 		b43legacy_phy_read(dev, 0x0020); /* dummy read */
+ 		b43legacy_phy_write(dev, 0x0020, (((u16)threshold) << 8)
+ 				    | 0x001C);
+@@ -892,7 +892,7 @@ void b43legacy_calc_nrssi_threshold(stru
+ 			else
+ 				a += 32;
+ 			a = a >> 6;
+-			a = clamp_val(a, -31, 31);
++			a = limit_value(a, -31, 31);
+ 
+ 			b = b * (phy->nrssi[1] - phy->nrssi[0]);
+ 			b += (phy->nrssi[0] << 6);
+@@ -901,7 +901,7 @@ void b43legacy_calc_nrssi_threshold(stru
+ 			else
+ 				b += 32;
+ 			b = b >> 6;
+-			b = clamp_val(b, -31, 31);
++			b = limit_value(b, -31, 31);
+ 
+ 			tmp_u16 = b43legacy_phy_read(dev, 0x048A) & 0xF000;
+ 			tmp_u16 |= ((u32)b & 0x0000003F);
+@@ -1905,7 +1905,7 @@ void b43legacy_radio_set_txpower_a(struc
+ 	u16 dac;
+ 	u16 ilt;
+ 
+-	txpower = clamp_val(txpower, 0, 63);
++	txpower = limit_value(txpower, 0, 63);
+ 
+ 	pamp = b43legacy_get_txgain_freq_power_amp(txpower);
+ 	pamp <<= 5;
+diff -up linux-2.6.25.noarch/drivers/net/wireless/b43legacy/main.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43legacy/main.c
+--- linux-2.6.25.noarch/drivers/net/wireless/b43legacy/main.c.orig	2008-05-19 17:31:02.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43legacy/main.c	2008-05-19 17:43:33.000000000 -0400
+@@ -846,10 +846,10 @@ static void handle_irq_noise(struct b43l
+ 	/* Get the noise samples. */
+ 	B43legacy_WARN_ON(dev->noisecalc.nr_samples >= 8);
+ 	i = dev->noisecalc.nr_samples;
+-	noise[0] = clamp_val(noise[0], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
+-	noise[1] = clamp_val(noise[1], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
+-	noise[2] = clamp_val(noise[2], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
+-	noise[3] = clamp_val(noise[3], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
++	noise[0] = limit_value(noise[0], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
++	noise[1] = limit_value(noise[1], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
++	noise[2] = limit_value(noise[2], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
++	noise[3] = limit_value(noise[3], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
+ 	dev->noisecalc.samples[i][0] = phy->nrssi_lt[noise[0]];
+ 	dev->noisecalc.samples[i][1] = phy->nrssi_lt[noise[1]];
+ 	dev->noisecalc.samples[i][2] = phy->nrssi_lt[noise[2]];
+@@ -1720,7 +1720,7 @@ static int b43legacy_write_initvals(stru
+ 				goto err_format;
+ 			array_size -= sizeof(iv->data.d32);
+ 
+-			value = get_unaligned_be32(&iv->data.d32);
++			value = be32_to_cpu(get_unaligned(&iv->data.d32));
+ 			b43legacy_write32(dev, offset, value);
+ 
+ 			iv = (const struct b43legacy_iv *)((const uint8_t *)iv +
+diff -up linux-2.6.25.noarch/drivers/net/wireless/b43legacy/b43legacy.h.orig linux-2.6.25.noarch/drivers/net/wireless/b43legacy/b43legacy.h
+--- linux-2.6.25.noarch/drivers/net/wireless/b43legacy/b43legacy.h.orig	2008-05-19 17:29:38.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43legacy/b43legacy.h	2008-05-19 17:43:33.000000000 -0400
+@@ -823,6 +823,23 @@ void b43legacydbg(struct b43legacy_wl *w
+ # define b43legacydbg(wl, fmt...) do { /* nothing */ } while (0)
+ #endif /* DEBUG */
+ 
++
++/** Limit a value between two limits */
++#ifdef limit_value
++# undef limit_value
++#endif
++#define limit_value(value, min, max)  \
++	({						\
++		typeof(value) __value = (value);	\
++		typeof(value) __min = (min);		\
++		typeof(value) __max = (max);		\
++		if (__value < __min)			\
++			__value = __min;		\
++		else if (__value > __max)		\
++			__value = __max;		\
++		__value;				\
++	})
++
+ /* Macros for printing a value in Q5.2 format */
+ #define Q52_FMT		"%u.%u"
+ #define Q52_ARG(q52)	((q52) / 4), (((q52) & 3) * 100 / 4)
+diff -up linux-2.6.25.noarch/drivers/net/wireless/libertas/scan.c.orig linux-2.6.25.noarch/drivers/net/wireless/libertas/scan.c
+--- linux-2.6.25.noarch/drivers/net/wireless/libertas/scan.c.orig	2008-05-19 17:31:02.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/libertas/scan.c	2008-05-19 17:31:10.000000000 -0400
+@@ -523,7 +523,7 @@ static int lbs_process_bss(struct bss_de
+ 
+ 	if (*bytesleft >= sizeof(beaconsize)) {
+ 		/* Extract & convert beacon size from the command buffer */
+-		beaconsize = get_unaligned_le16(*pbeaconinfo);
++		beaconsize = le16_to_cpu(get_unaligned((__le16 *)*pbeaconinfo));
+ 		*bytesleft -= sizeof(beaconsize);
+ 		*pbeaconinfo += sizeof(beaconsize);
+ 	}
+diff -up linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl-3945.c.orig linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl-3945.c
+--- linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl-3945.c.orig	2008-05-19 17:31:02.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl-3945.c	2008-05-19 17:31:10.000000000 -0400
+@@ -554,36 +554,40 @@ static void iwl3945_add_radiotap(struct 
+ 	iwl3945_rt->rt_hdr.it_pad = 0;
+ 
+ 	/* total header + data */
+-	put_unaligned_le16(sizeof(*iwl3945_rt), &iwl3945_rt->rt_hdr.it_len);
++	put_unaligned(cpu_to_le16(sizeof(*iwl3945_rt)),
++		      &iwl3945_rt->rt_hdr.it_len);
+ 
+ 	/* Indicate all the fields we add to the radiotap header */
+-	put_unaligned_le32((1 << IEEE80211_RADIOTAP_TSFT) |
+-			   (1 << IEEE80211_RADIOTAP_FLAGS) |
+-			   (1 << IEEE80211_RADIOTAP_RATE) |
+-			   (1 << IEEE80211_RADIOTAP_CHANNEL) |
+-			   (1 << IEEE80211_RADIOTAP_DBM_ANTSIGNAL) |
+-			   (1 << IEEE80211_RADIOTAP_DBM_ANTNOISE) |
+-			   (1 << IEEE80211_RADIOTAP_ANTENNA),
+-			&iwl3945_rt->rt_hdr.it_present);
++	put_unaligned(cpu_to_le32((1 << IEEE80211_RADIOTAP_TSFT) |
++				  (1 << IEEE80211_RADIOTAP_FLAGS) |
++				  (1 << IEEE80211_RADIOTAP_RATE) |
++				  (1 << IEEE80211_RADIOTAP_CHANNEL) |
++				  (1 << IEEE80211_RADIOTAP_DBM_ANTSIGNAL) |
++				  (1 << IEEE80211_RADIOTAP_DBM_ANTNOISE) |
++				  (1 << IEEE80211_RADIOTAP_ANTENNA)),
++		      &iwl3945_rt->rt_hdr.it_present);
+ 
+ 	/* Zero the flags, we'll add to them as we go */
+ 	iwl3945_rt->rt_flags = 0;
+ 
+-	put_unaligned_le64(tsf, &iwl3945_rt->rt_tsf);
++	put_unaligned(cpu_to_le64(tsf), &iwl3945_rt->rt_tsf);
+ 
+ 	iwl3945_rt->rt_dbmsignal = signal;
+ 	iwl3945_rt->rt_dbmnoise = noise;
+ 
+ 	/* Convert the channel frequency and set the flags */
+-	put_unaligned_le16(stats->freq, &iwl3945_rt->rt_channelMHz);
++	put_unaligned(cpu_to_le16(stats->freq), &iwl3945_rt->rt_channelMHz);
+ 	if (!(phy_flags_hw & RX_RES_PHY_FLAGS_BAND_24_MSK))
+-		put_unaligned_le16(IEEE80211_CHAN_OFDM | IEEE80211_CHAN_5GHZ,
++		put_unaligned(cpu_to_le16(IEEE80211_CHAN_OFDM |
++					  IEEE80211_CHAN_5GHZ),
+ 			      &iwl3945_rt->rt_chbitmask);
+ 	else if (phy_flags_hw & RX_RES_PHY_FLAGS_MOD_CCK_MSK)
+-		put_unaligned_le16(IEEE80211_CHAN_CCK | IEEE80211_CHAN_2GHZ,
++		put_unaligned(cpu_to_le16(IEEE80211_CHAN_CCK |
++					  IEEE80211_CHAN_2GHZ),
+ 			      &iwl3945_rt->rt_chbitmask);
+ 	else	/* 802.11g */
+-		put_unaligned_le16(IEEE80211_CHAN_OFDM | IEEE80211_CHAN_2GHZ,
++		put_unaligned(cpu_to_le16(IEEE80211_CHAN_OFDM |
++					  IEEE80211_CHAN_2GHZ),
+ 			      &iwl3945_rt->rt_chbitmask);
+ 
+ 	if (rate == -1)
+diff -up linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c.orig linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c
+--- linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c.orig	2008-05-19 17:31:02.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c	2008-05-19 17:31:10.000000000 -0400
+@@ -58,6 +58,10 @@
+ #include "reg.h"
+ #include "debug.h"
+ 
++/* unaligned little endian access */
++#define LE_READ_2(_p) (le16_to_cpu(get_unaligned((__le16 *)(_p))))
++#define LE_READ_4(_p) (le32_to_cpu(get_unaligned((__le32 *)(_p))))
++
+ enum {
+ 	ATH_LED_TX,
+ 	ATH_LED_RX,
+@@ -2894,9 +2898,9 @@ static void ath5k_configure_filter(struc
+ 			if (!mclist)
+ 				break;
+ 			/* calculate XOR of eight 6-bit values */
+-			val = get_unaligned_le32(mclist->dmi_addr + 0);
++			val = LE_READ_4(mclist->dmi_addr + 0);
+ 			pos = (val >> 18) ^ (val >> 12) ^ (val >> 6) ^ val;
+-			val = get_unaligned_le32(mclist->dmi_addr + 3);
++			val = LE_READ_4(mclist->dmi_addr + 3);
+ 			pos ^= (val >> 18) ^ (val >> 12) ^ (val >> 6) ^ val;
+ 			pos &= 0x3f;
+ 			mfilt[pos / 32] |= (1 << (pos % 32));


Index: config-generic
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-9/config-generic,v
retrieving revision 1.100
retrieving revision 1.101
diff -u -r1.100 -r1.101
--- config-generic	19 May 2008 21:50:25 -0000	1.100
+++ config-generic	19 May 2008 22:15:18 -0000	1.101
@@ -1277,6 +1277,7 @@
 CONFIG_B43=m
 CONFIG_B43_PCMCIA=y
 CONFIG_B43_DEBUG=y
+# CONFIG_B43_FORCE_PIO is not set
 CONFIG_B43LEGACY=m
 CONFIG_B43LEGACY_DEBUG=y
 CONFIG_B43LEGACY_DMA=y
@@ -1301,15 +1302,19 @@
 CONFIG_LIBERTAS_SDIO=m
 CONFIG_LIBERTAS_DEBUG=y
 CONFIG_IWLWIFI_LEDS=y
-CONFIG_IWLCORE_RFKILL=y
+CONFIG_IWLWIFI_RUN_TIME_CALIB=y
+CONFIG_IWLWIFI_RFKILL=y
 CONFIG_IWL4965=m
 CONFIG_IWLWIFI_DEBUG=y
 CONFIG_IWLWIFI_DEBUGFS=y
 CONFIG_IWL4965_SENSITIVITY=y
 CONFIG_IWL4965_SPECTRUM_MEASUREMENT=y
+CONFIG_IWL4965_RUN_TIME_CALIB=y
 CONFIG_IWL4965_QOS=y
 CONFIG_IWL4965_HT=y
 CONFIG_IWL4965_LEDS=y
+CONFIG_IWL5000=y
+CONFIG_IWL5000_RUN_TIME_CALIB=y
 CONFIG_IWL3945=m
 CONFIG_IWL3945_DEBUG=y
 CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-9/kernel.spec,v
retrieving revision 1.643
retrieving revision 1.644
diff -u -r1.643 -r1.644
--- kernel.spec	19 May 2008 21:50:25 -0000	1.643
+++ kernel.spec	19 May 2008 22:15:18 -0000	1.644
@@ -619,8 +619,7 @@
 
 Patch680: linux-2.6-wireless.patch
 Patch681: linux-2.6-wireless-pending.patch
-Patch682: linux-2.6-wireless-pending-too.patch
-Patch683: linux-2.6-rt2x00-configure_filter.patch
+Patch682: linux-2.6-wireless-fixups.patch
 Patch690: linux-2.6-at76.patch
 
 Patch700: linux-2.6-nfs-client-mounts-hang.patch
@@ -1153,17 +1152,17 @@
 # wake up links that have been put to sleep by BIOS (#436099)
 ApplyPatch linux-2.6-libata-force-hardreset-in-sleep-mode.patch
 
-# wireless patches headed for 2.6.25
-#ApplyPatch linux-2.6-wireless.patch
 # wireless patches headed for 2.6.26
+ApplyPatch linux-2.6-wireless.patch
+# wireless patches headed for 2.6.27
 ApplyPatch linux-2.6-wireless-pending.patch
-ApplyPatch linux-2.6-wireless-pending-too.patch
-# rt2x00 configure_filter fix to avoid endless loop on insert for USB devices
-ApplyPatch linux-2.6-rt2x00-configure_filter.patch
 
 # Add misc wireless bits from upstream wireless tree
 ApplyPatch linux-2.6-at76.patch
 
+# fixups to make current wireless patches build on this kernel
+ApplyPatch linux-2.6-wireless-fixups.patch
+
 # implement smarter atime updates support.
 ApplyPatch linux-2.6-smarter-relatime.patch
 
@@ -1807,6 +1806,9 @@
 %kernel_variant_files -a /%{image_install_path}/xen*-%{KVERREL}.xen -e /etc/ld.so.conf.d/kernelcap-%{KVERREL}.xen.conf %{with_xen} xen
 
 %changelog
+* Mon May 19 2008 John W. Linville <linville at redhat.com> 2.6.25.4-24
+- Re-sync wireless bits w/ current upstream
+
 * Mon May 19 2008 Dave Jones <davej at redhat.com>
 - Disable PATA_ISAPNP (it's busted).
 

linux-2.6-at76.patch:

Index: linux-2.6-at76.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-9/linux-2.6-at76.patch,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- linux-2.6-at76.patch	28 Feb 2008 02:06:24 -0000	1.9
+++ linux-2.6-at76.patch	19 May 2008 22:15:18 -0000	1.10
@@ -1,4 +1,65 @@
-commit e141a848e24724c2d5534ff8152b0be4fe1b6f62
+commit 755a49a4b9d296651276ca8ca3ece49ded9ae621
+Author: Bruno Randolf <br1 at einfach.org>
+Date:   Thu May 8 19:15:40 2008 +0200
+
+    at76: use hardware flags for signal/noise units
+    
+    This is the at76_usb bits...
+    
+    trying to clean up the signal/noise code. the previous code in mac80211 had
+    confusing names for the related variables, did not have much definition of
+    what units of signal and noise were provided and used implicit mechanisms from
+    the wireless extensions.
+    
+    this patch introduces hardware capability flags to let the hardware specify
+    clearly if it can provide signal and noise level values and which units it can
+    provide. this also anticipates possible new units like RCPI in the future.
+    
+    for signal:
+    
+      IEEE80211_HW_SIGNAL_UNSPEC - unspecified, unknown, hw specific
+      IEEE80211_HW_SIGNAL_DB     - dB difference to unspecified reference point
+      IEEE80211_HW_SIGNAL_DBM    - dBm, difference to 1mW
+    
+    for noise we currently only have dBm:
+    
+      IEEE80211_HW_NOISE_DBM     - dBm, difference to 1mW
+    
+    if IEEE80211_HW_SIGNAL_UNSPEC or IEEE80211_HW_SIGNAL_DB is used the driver has
+    to provide the maximum value (max_signal) it reports in order for applications
+    to make sense of the signal values.
+    
+    i tried my best to find out for each driver what it can provide and update it
+    but i'm not sure (?) for some of them and used the more conservative guess in
+    doubt. this can be fixed easily after this patch has been merged by changing
+    the hardware flags of the driver.
+    
+    DRIVER          SIGNAL    MAX	NOISE   QUAL
+    -----------------------------------------------------------------
+    adm8211         unspec(?) 100   n/a     missing
+    at76_usb        unspec(?) (?)   unused  missing
+    ath5k           dBm             dBm     percent rssi
+    b43legacy       dBm             dBm     percent jssi(?)
+    b43             dBm             dBm     percent jssi(?)
+    iwl-3945        dBm             dBm     percent snr+more
+    iwl-4965        dBm             dBm     percent snr+more
+    p54             unspec    127   n/a     missing
+    rt2x00          dBm	        n/a     percent rssi+tx/rx frame success
+      rt2400        dBm             n/a
+      rt2500pci     dBm             n/a
+      rt2500usb     dBm             n/a
+      rt61pci       dBm             n/a
+      rt73usb       dBm             n/a
+    rtl8180         unspec(?) 65    n/a     (?)
+    rtl8187         unspec(?) 65    (?)     noise(?)
+    zd1211          dB(?)     100   n/a     percent
+    
+    drivers/net/wireless/ath5k/base.c:      Changes-licensed-under: 3-Clause-BSD
+    
+    Signed-off-by: Bruno Randolf <br1 at einfach.org>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 644ef9df7c598e369ba1794f65610b1a1e643fca
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Fri Feb 22 00:01:07 2008 -0500
 
@@ -7,7 +68,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 4891e7cb744d9e00dfe714c2827abcd32a02e405
+commit b226eae4c43640ed83cd8126c11602e230150a56
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Fri Feb 22 00:01:01 2008 -0500
 
@@ -16,7 +77,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit a5d909eecd7c57843395780d7bc3e9655093bd5e
+commit 9eccbe8447a68d649d3ca683193f34b3cb9c7c6c
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Fri Feb 22 00:00:55 2008 -0500
 
@@ -25,7 +86,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit e5d8694e15d0f20a5a3999ca6697278df9a66ca7
+commit 5a92d66e9642b3a0a8cee6eec7172b65d9c43548
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Fri Feb 22 00:00:50 2008 -0500
 
@@ -34,7 +95,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 781e1500cd246b9aeaa0fc7593f028d43c87dbc0
+commit 67c3d5b697774c6fe9a644fa302c82333e1d75e3
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Fri Feb 22 00:00:44 2008 -0500
 
@@ -45,7 +106,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 4083ec919a7353cf7a9de6cf42aa13669b7e018e
+commit b0b7eb18c8233622d1ffdea33814548e286379dd
 Author: Kalle Valo <kalle.valo at iki.fi>
 Date:   Sun Feb 10 17:01:19 2008 +0200
 
@@ -56,7 +117,7 @@
     Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit bae74e67b58fc0ecf930fc1b5f485d536b1eea5a
+commit 1416847d10d0f9ddee78264dfdf14eab5fff72aa
 Author: Kalle Valo <kalle.valo at iki.fi>
 Date:   Sun Feb 10 17:01:11 2008 +0200
 
@@ -67,7 +128,7 @@
     Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit e31a31b44489b3535fcf7b02871458186ed43aa7
+commit 3483c0c0779a404e7aa9a5261978a083fbf3aac7
 Author: Kalle Valo <kalle.valo at iki.fi>
 Date:   Sun Feb 10 17:01:04 2008 +0200
 
@@ -81,7 +142,7 @@
     Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 162d3ad6b55220940216d35dc1418e0c0ef9b98e
+commit 10a9088fa5d75ca48fbc74108a106430336ab615
 Author: Kalle Valo <kalle.valo at iki.fi>
 Date:   Sun Feb 10 17:00:56 2008 +0200
 
@@ -95,7 +156,7 @@
     Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 779e36d16d4b79f30207da5d41d8cda9151f8e1f
+commit bc12541b59aa1a0b4c58a093195d7ade3ebbbe60
 Author: Kalle Valo <kalle.valo at iki.fi>
 Date:   Sun Feb 10 17:00:49 2008 +0200
 
@@ -108,7 +169,7 @@
     Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 0e5a456201237a135d5970b755ade55c18565033
+commit b5415e12ce5552b0b640c83a40fdc806eb130149
 Author: Kalle Valo <kalle.valo at iki.fi>
 Date:   Sun Feb 10 17:00:41 2008 +0200
 
@@ -117,7 +178,7 @@
     Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 88ba88d527a925f0b0a5162e64e026e33312648e
+commit 82d266cbe56da67064793e1747d12abfe705ffc5
 Author: Kalle Valo <kalle.valo at iki.fi>
 Date:   Sun Feb 10 17:00:34 2008 +0200
 
@@ -126,7 +187,7 @@
     Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 798f4f8d71f221f0e74dbd1588ab6225c64efc45
+commit 4e9c1daf0d0b98af6e4c0b87c299855dd63dec06
 Author: Kalle Valo <kalle.valo at iki.fi>
 Date:   Sun Feb 10 17:00:26 2008 +0200
 
@@ -141,7 +202,7 @@
     Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit ee5141d10332561306a48b216a1ae1ddfe318805
+commit 475d2454db1a8a21af2cd06da2e31896b987efe4
 Author: Kalle Valo <kalle.valo at iki.fi>
 Date:   Sun Feb 10 17:00:19 2008 +0200
 
@@ -150,7 +211,7 @@
     Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 2009705e36ad0b50f0cdb0f9ef186f33057d17e8
+commit adad9eb5df49e8b3848a28d3b865d2e6424f3092
 Author: Kalle Valo <kalle.valo at iki.fi>
 Date:   Sun Feb 10 17:00:11 2008 +0200
 
@@ -159,7 +220,7 @@
     Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit bd80e67cdc3286868f59cf809b63c5c021392fbd
+commit 62690875db04e240d99f88ff9b4f9dd3a58ce70c
 Author: Kalle Valo <kalle.valo at iki.fi>
 Date:   Sun Feb 10 17:00:04 2008 +0200
 
@@ -168,7 +229,7 @@
     Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit c53a0aa28992ba7f212effec5e29be990848b54f
+commit 2e7fcbf808efa2b6145bccad8fd34c4c6eda7472
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sun Feb 10 16:59:56 2008 +0200
 
@@ -185,7 +246,7 @@
     Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 38ec6fbd236318179e28c71bc1b3dc94166e4be2
+commit 21c8fae765d1382da763f3d32156c4d3401a4136
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Mon Feb 4 00:05:19 2008 -0500
 
@@ -196,7 +257,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 4ed58b00a2df9772cfa631f53af52c38207d78ac
+commit c0d59b16b5f8ac0c0350318e280a5422a01ae14a
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sun Sep 30 14:41:25 2007 -0400
 
@@ -205,7 +266,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 3a39b0c26c19b4f26ab90f8cd170e68da3c8fb91
+commit f55a566e9a47c5260eda9287a44b890fe57ac601
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sun Sep 30 14:41:18 2007 -0400
 
@@ -214,7 +275,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 69a965e9dde88c1dec49a0e840020bbdfc2263ad
+commit 3f1b51b7bdbc53ff409c3949a56fe9ff3c59d2eb
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sun Sep 30 14:41:12 2007 -0400
 
@@ -226,7 +287,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit e007ed4c5328f857201d66c8564978bd4150a9a5
+commit 9608639caa2889d441c45c44f2a54857717eca90
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sun Sep 30 14:41:06 2007 -0400
 
@@ -243,7 +304,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 84d9a4914d2f678728b0b9a4c4b360e93b2e2efa
+commit d531897dbecca5614ef099134ee9a674311b47ed
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sun Sep 30 14:40:59 2007 -0400
 
@@ -259,7 +320,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 46e958f2e0334bfeb1436d8066e1797804212178
+commit b3c4d43a6f9c91b60e4e2a890ccbc67baf3e1c23
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sun Sep 30 14:40:53 2007 -0400
 
@@ -278,7 +339,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit cbf56decc3dd24be59bdcd7af14ae6b6fc1d7265
+commit ac77f8ab8a2b9c53ac034edb5e68ffd474afcca7
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sun Sep 30 14:40:47 2007 -0400
 
@@ -290,7 +351,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 73363e219953a6bcafa0087b415c0ce154a13940
+commit 2677d1fb37e29c2e37d50c795c2d29d6ee649116
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sun Sep 30 14:40:40 2007 -0400
 
@@ -301,7 +362,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 65e5ad191757d5febb31e97a8a08dbd672d0662d
+commit c4212037d703306c7536f270435366d57ee1a006
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sun Sep 30 14:40:34 2007 -0400
 
@@ -310,7 +371,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 8f3811adf092d19f14111166af05f10cb2efa651
+commit 7a5225ceeb8c14a0741c3deac0a6efb710f11ffc
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sun Sep 30 14:40:27 2007 -0400
 
@@ -322,7 +383,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 0048a3f2c0de2f6ba969731f51eaaa73b3e168e2
+commit 191ba1c8ba5df72128d23ec6008cd34893d8ccf7
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sun Sep 30 14:40:21 2007 -0400
 
@@ -334,7 +395,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 20eab45fc567b85f8aaa131eceb8d53ac14d3fd6
+commit d5d6f820fe6fa48351dcba9debe4c65da8844757
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sun Sep 30 14:40:15 2007 -0400
 
@@ -343,7 +404,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit b96c9fd4b3770d5b731ed3d207644b2ffec80313
+commit 7a7dbbae303b5c8624ceb82b77745fae509e062e
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sun Sep 30 14:40:08 2007 -0400
 
@@ -352,7 +413,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 6abdf0d9679fb3cc0b2ed539e24cbba058f33043
+commit bd26b5446f3456c144d96edf8b7d13c3dde16a03
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sun Sep 30 14:40:02 2007 -0400
 
@@ -364,7 +425,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 53c4d65cd1f4455b6d0c6ce605a6853e9108c6ae
+commit 6ec4858caee0b303a555fb44eafd5ee439f8b4ce
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sun Sep 30 14:39:55 2007 -0400
 
@@ -375,7 +436,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 2a000a0fb3a21674791023759e24e1bdc3c197ef
+commit c86491d05421636e1fa706266b0f7ad2aee1a2bd
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sun Sep 30 14:39:49 2007 -0400
 
@@ -387,7 +448,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 59268149e41b94bc2bd3554fcd12d238e01bdc07
+commit 3e63eb48e4c32f46296181356dc6a18987f5114e
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sun Sep 30 14:39:42 2007 -0400
 
@@ -398,7 +459,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 206f30d4d21565358128aa8ca210d518797ba285
+commit 3326a622746fb6569613b88322dfb345154c88b7
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sun Sep 30 14:39:36 2007 -0400
 
@@ -409,7 +470,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit afd74d244ce1d869e82758c650f49a867501762f
+commit 9514c2fcf98ff2f9fb6dd559a26e6d8f85ecaa76
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sun Sep 30 14:39:30 2007 -0400
 
@@ -418,7 +479,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 2235301c13ec2c6367ef129477be8967631a436f
+commit db516e461cf2d51b7175c456418bea3555b467a4
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sun Sep 30 14:39:23 2007 -0400
 
@@ -429,7 +490,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit a38e0e268f2219660c91a3813d11c1440cb75faf
+commit eb1488ce769156c9478116c90c004d433103c4ee
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sun Sep 30 14:39:17 2007 -0400
 
@@ -441,7 +502,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 451c1cd7fcdad82175c80fb0e3e4a0568b41c17a
+commit c1bbdd6462b3c5f8477372766282c1d25f9a37d6
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sun Sep 30 14:39:11 2007 -0400
 
@@ -453,7 +514,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 447c17aaf1833217f82b97be42b333c72b966db2
+commit ecfd0aeb3ffd5429a0761d63204ee0e1aa22bf80
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sun Sep 30 14:39:04 2007 -0400
 
@@ -465,7 +526,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 951329488d45d11d25914b4da0ab93f94d72582d
+commit 515128d684f9fdd512d6e8779ea424cba713730a
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sun Sep 30 14:38:58 2007 -0400
 
@@ -474,7 +535,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit ae5f9aab3f18f4dcb9a83e490996990711c53cb4
+commit 789875f9bb6e33a70a67ff9c1e52c23d5cddf55c
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sun Sep 30 14:38:51 2007 -0400
 
@@ -485,7 +546,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 3086da15d597fb24b7254c4e638b380597e7f7c0
+commit 3901e25c5af3c3671a3a909de1b8ac7daff1bd74
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sun Sep 30 14:38:45 2007 -0400
 
@@ -494,7 +555,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit f6ea5e4633ef565282f4fdfd6efb4fce47ba63e6
+commit 9616128c0fca961737eae21eb70d65ec5ae88f94
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:37:34 2007 -0400
 
@@ -505,7 +566,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 27147842aa12fb6f3628c8b7bfe0d1e9e41ee6b8
+commit ad1f189acfcf0fd7fcf9c3e4d3dd516634c834e4
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:37:29 2007 -0400
 
@@ -517,7 +578,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 14a38765e92afa44f94b78911cb5f1d4bc717a29
+commit 6f6c011d64487eedba946378e8fd996dabcc0b10
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:37:23 2007 -0400
 
@@ -528,7 +589,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit b72a145cc8352a033cffd36e7edd3afc5ab8c692
+commit 977a28d972491da99f2a13c2e2c37d8d5604f8e4
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:37:17 2007 -0400
 
@@ -537,7 +598,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 21b01509a7a669f557fd0ef822058624bcaac6a4
+commit 3f62d973c16e75f2d4120519779950a24d2a9c9a
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:37:11 2007 -0400
 
@@ -546,7 +607,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 798293c1bbfc815ed7acd6b5390226292bbad05c
+commit cc34a2af9be308c433c2ca6612f2752ce8467db9
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:37:06 2007 -0400
 
@@ -555,7 +616,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 99de835fbdf7d9987511a3ffef63685edeb256f8
+commit d2e491a0392069876c419f46ee1da2a3380e046b
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:37:00 2007 -0400
 
@@ -564,7 +625,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit dc15d751590deb46a8f1aee782bc4f66a811ba58
+commit 7a01e11163335053670163cbf0db4cc5e3511c89
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:36:54 2007 -0400
 
@@ -576,7 +637,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit ec943e753321c78047b5e70d846deed79e3d7e0d
+commit cb1a31d4c741f65ec00be46240abb67e6c926036
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:36:49 2007 -0400
 
@@ -585,7 +646,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 474a3bd835a1d6ce0567b6f0ce71ce17520edf85
+commit f57a2fd0100b9a8c3edefeaa243b6f840074a3a2
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:36:43 2007 -0400
 
@@ -597,7 +658,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit e5d3864054c7bae4bde6681148db5fe293d3972f
+commit 114507c08d819e2228d35919183a4c28d624da1d
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:36:37 2007 -0400
 
@@ -606,7 +667,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 020e78ae379a4153b7c87aaeffca9d6694f0badb
+commit 5dc64efb69645a7bc8546a10f2b84318f2324042
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:36:31 2007 -0400
 
@@ -623,7 +684,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 83d03b994903ffe7f6ab0b540780852412387030
+commit 50f02f8f2a7a142fdd06050c62f917579879ee74
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:36:26 2007 -0400
 
@@ -634,7 +695,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 2510182b5f69324e37869cfee1d9b78c5a1c8cfe
+commit 8064cd0e0d5c3924cf126d345a4e29102b13499a
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:36:20 2007 -0400
 
@@ -647,7 +708,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit eb542472fb6621bed0d9a176e62ec261e162b3ac
+commit 53259a85aaf0282d7d3a659c36389fdf28d1fa21
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:36:14 2007 -0400
 
@@ -658,7 +719,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 0c1af75ef1a71060ddd0e32311b058feaa63ed23
+commit 79370642087659eed3ea51e78901f5e92b1df6be
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:36:09 2007 -0400
 
@@ -670,7 +731,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 71734a46b9d85b85b4e8672461f321f39e48b4aa
+commit 62b2450ba7563d2c316f19af7f30568c52dcfac3
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:36:03 2007 -0400
 
@@ -679,7 +740,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 3b19b79d75b5fa2746a277f52abf2690fe1a43f1
+commit fa5645d111a15b4cbc2d1b036c3f4b41611f9bc1
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:35:57 2007 -0400
 
@@ -692,7 +753,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 76403fd6c014238c564b38d9052298fc9e2a5078
+commit 780776a7a28950ef8e566651c10ab5a95aea4884
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:35:52 2007 -0400
 
@@ -704,7 +765,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit c56dfaaaada275f4a5c3cdef3dba3e6c714ce03f
+commit 5b3be54e08d28f2ed6da8b876bba3737bad5942b
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:35:46 2007 -0400
 
@@ -716,7 +777,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit c8a13ceeddd58a0c304da7eb8578e44197edad38
+commit 587b2c8ee7b15d588f773301bad51080832a7e16
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:35:40 2007 -0400
 
@@ -725,7 +786,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit ca2c72f021bef2fbb8c2c56e6d0650ba7891f7ca
+commit 08bc3de996e05450fa0176a17679fcebc24139bf
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:35:34 2007 -0400
 
@@ -737,7 +798,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 1c4f1ca9448b9300e484e39d57882a7ae38a5729
+commit 1089c6bbad5d991c7e12ed02c19b32751b3ddeea
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:35:29 2007 -0400
 
@@ -749,7 +810,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit fef6c2352ca33980d9aba9232b70aeecace2a134
+commit 1e8d1ad6860f22fc65e662b5e65dde2e86731e3a
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:35:23 2007 -0400
 
@@ -760,7 +821,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit aa7b9455703286c9823bcbd0a55f3418a0a1b47a
+commit 36fa01418f1e67b47e4bcbe06fde764f7d135b7e
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:35:17 2007 -0400
 
@@ -769,7 +830,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 9c13ed40aeed909e386950c302f6d9c130a92b2a
+commit 13c7446d6f3bce0beea750c949f80f24d87dac4d
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:35:11 2007 -0400
 
@@ -781,7 +842,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 8a2cb93b3bfc2c23a394f5e4fc8dd6837503640a
+commit 842e0f3649c89ef024fdd700a797b8403f2f06a1
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:35:06 2007 -0400
 
@@ -792,7 +853,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 5c777c0514de7cbc6652f10ad55feab36b13d21b
+commit ee19eafed18f2f49a05cfe8e66dc493becf1c964
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:35:00 2007 -0400
 
@@ -804,7 +865,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 10bbb7977ec0cbea6087d30af14147516a5eeac5
+commit 42e93794dbed231c784dcc300180c7608987dce2
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:34:54 2007 -0400
 
@@ -816,7 +877,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 2646301bdd06efe9677bb2ef96acc9c450cf1af8
+commit c478ce6e9b5d2ddf7207c1bcc056e6f0b06da59a
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:34:49 2007 -0400
 
@@ -825,7 +886,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 0a9cfd63f1773ce2196d15d5ff1214c3c693d8a7
+commit 3375cdeed9e742a9db01d6bb1dcec3069617563b
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:34:43 2007 -0400
 
@@ -834,7 +895,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 684ad32c3e727b65066a896124ed73834f14b087
+commit 39645cb583a21b16bb8040e8a37c91978cffc6a0
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:34:37 2007 -0400
 
@@ -843,7 +904,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit cb9222a5c85ff3634475f04a7949dc7b966c1902
+commit 9abffbeb930a2d7e102c22ea0cfc32974582cb35
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:34:31 2007 -0400
 
@@ -852,7 +913,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 92315ab89a2ffffcb5ef24554489b06e322ea17c
+commit 28c14e6f772da88fe1727b4537c056605abb111d
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:34:26 2007 -0400
 
@@ -861,7 +922,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 46211c37a56499d49829d8db2c230712d6053790
+commit b57294f30f7cd0b0ccb9c412a2c2ba35072de25f
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Sat Sep 1 00:34:20 2007 -0400
 
@@ -875,7 +936,7 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit cfc3a1a100a86079980e814674004793ad161390
+commit ce0262965d297f0c3df6b36cb60b5ec8061e823c
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Thu Aug 23 14:40:17 2007 -0400
 
@@ -892,10 +953,10 @@
     Signed-off-by: Pavel Roskin <proski at gnu.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-diff -up linux-2.6.24.noarch/MAINTAINERS.orig linux-2.6.24.noarch/MAINTAINERS
---- linux-2.6.24.noarch/MAINTAINERS.orig	2008-02-27 20:56:07.000000000 -0500
-+++ linux-2.6.24.noarch/MAINTAINERS	2008-02-27 20:56:14.000000000 -0500
-@@ -725,6 +725,15 @@ W:	http://www.thekelleys.org.uk/atmel
+diff -up linux-2.6.25.noarch/MAINTAINERS.orig linux-2.6.25.noarch/MAINTAINERS
+--- linux-2.6.25.noarch/MAINTAINERS.orig	2008-04-16 22:49:44.000000000 -0400
++++ linux-2.6.25.noarch/MAINTAINERS	2008-05-19 17:53:23.000000000 -0400
+@@ -740,6 +740,15 @@ W:	http://www.thekelleys.org.uk/atmel
  W:	http://atmelwlandriver.sourceforge.net/
  S:	Maintained
  
@@ -911,9 +972,9 @@
  AUDIT SUBSYSTEM
  P:	David Woodhouse
  M:	dwmw2 at infradead.org
-diff -up /dev/null linux-2.6.24.noarch/drivers/net/wireless/at76_usb.h
---- /dev/null	2008-02-27 08:31:30.805858387 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/at76_usb.h	2008-02-27 20:56:23.000000000 -0500
+diff -up /dev/null linux-2.6.25.noarch/drivers/net/wireless/at76_usb.h
+--- /dev/null	2008-05-19 07:57:11.730003501 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/at76_usb.h	2008-05-19 17:53:23.000000000 -0400
 @@ -0,0 +1,464 @@
 +/*
 + * Copyright (c) 2002,2003 Oliver Kurth
@@ -1379,9 +1440,9 @@
 +#define MAX_PADDING_SIZE	53
 +
 +#endif				/* _AT76_USB_H */
-diff -up linux-2.6.24.noarch/drivers/net/wireless/Makefile.orig linux-2.6.24.noarch/drivers/net/wireless/Makefile
---- linux-2.6.24.noarch/drivers/net/wireless/Makefile.orig	2008-02-27 20:56:07.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/Makefile	2008-02-27 20:56:14.000000000 -0500
+diff -up linux-2.6.25.noarch/drivers/net/wireless/Makefile.orig linux-2.6.25.noarch/drivers/net/wireless/Makefile
+--- linux-2.6.25.noarch/drivers/net/wireless/Makefile.orig	2008-05-19 17:52:43.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/Makefile	2008-05-19 17:53:23.000000000 -0400
 @@ -32,6 +32,8 @@ obj-$(CONFIG_ATMEL)             += atmel
  obj-$(CONFIG_PCI_ATMEL)         += atmel_pci.o 
  obj-$(CONFIG_PCMCIA_ATMEL)      += atmel_cs.o
@@ -1391,10 +1452,10 @@
  obj-$(CONFIG_PRISM54)		+= prism54/
  
  obj-$(CONFIG_HOSTAP)		+= hostap/
-diff -up /dev/null linux-2.6.24.noarch/drivers/net/wireless/at76_usb.c
---- /dev/null	2008-02-27 08:31:30.805858387 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/at76_usb.c	2008-02-27 20:56:23.000000000 -0500
-@@ -0,0 +1,2518 @@
+diff -up /dev/null linux-2.6.25.noarch/drivers/net/wireless/at76_usb.c
+--- /dev/null	2008-05-19 07:57:11.730003501 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/at76_usb.c	2008-05-19 17:53:24.000000000 -0400
+@@ -0,0 +1,2519 @@
 +/*
 + * at76c503/at76c505 USB driver
 + *
@@ -2996,7 +3057,7 @@
 +	at76_dbg_dump(DBG_RX_DATA, priv->rx_skb->data,
 +		      priv->rx_skb->len, "RX: len=%d", priv->rx_skb->len);
 +
-+	rx_status.ssi = buf->rssi;
++	rx_status.signal = buf->rssi;
 +	rx_status.flag |= RX_FLAG_DECRYPTED;
 +	rx_status.flag |= RX_FLAG_IV_STRIPPED;
 +
@@ -3670,7 +3731,8 @@
 +
 +	/* mac80211 initialisation */
 +	priv->hw->wiphy->bands[IEEE80211_BAND_2GHZ] = &at76_supported_band;
-+	priv->hw->flags = IEEE80211_HW_RX_INCLUDES_FCS;
++	priv->hw->flags = IEEE80211_HW_RX_INCLUDES_FCS |
++			  IEEE80211_HW_SIGNAL_UNSPEC;
 +
 +	SET_IEEE80211_DEV(priv->hw, &interface->dev);
 +	SET_IEEE80211_PERM_ADDR(priv->hw, priv->mac_addr);
@@ -3913,10 +3975,10 @@
 +MODULE_AUTHOR("Kalle Valo <kalle.valo at iki.fi>");
 +MODULE_DESCRIPTION(DRIVER_DESC);
 +MODULE_LICENSE("GPL");
-diff -up linux-2.6.24.noarch/drivers/net/wireless/Kconfig.orig linux-2.6.24.noarch/drivers/net/wireless/Kconfig
---- linux-2.6.24.noarch/drivers/net/wireless/Kconfig.orig	2008-02-27 20:56:07.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/Kconfig	2008-02-27 20:56:23.000000000 -0500
-@@ -457,6 +457,14 @@ config PCMCIA_ATMEL
+diff -up linux-2.6.25.noarch/drivers/net/wireless/Kconfig.orig linux-2.6.25.noarch/drivers/net/wireless/Kconfig
+--- linux-2.6.25.noarch/drivers/net/wireless/Kconfig.orig	2008-05-19 17:52:43.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/Kconfig	2008-05-19 17:53:24.000000000 -0400
+@@ -456,6 +456,14 @@ config PCMCIA_ATMEL
  	  Enable support for PCMCIA cards containing the
  	  Atmel at76c502 and at76c504 chips.
  

linux-2.6-wireless-pending.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.45 -r 1.46 linux-2.6-wireless-pending.patch
Index: linux-2.6-wireless-pending.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-9/linux-2.6-wireless-pending.patch,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -r1.45 -r1.46
--- linux-2.6-wireless-pending.patch	15 Apr 2008 15:29:52 -0000	1.45
+++ linux-2.6-wireless-pending.patch	19 May 2008 22:15:18 -0000	1.46
@@ -1,95566 +1,33296 @@
-commit 06501d29ada4457349f4f4427bbf0bbb7c59b8f6
-Author: John W. Linville <linville at tuxdriver.com>
-Date:   Tue Apr 1 17:38:47 2008 -0400
+commit 297c3669dd481e977927dc123ed3deed10833e2a
+Author: Holger Schurig <hs4233 at mail.mn-solutions.de>
+Date:   Wed May 14 16:27:18 2008 +0200
 
-    wireless: fix various printk warnings on ia64 (and others)
+    libertas: remove lbs_get_data_rate()
     
-    drivers/net/wireless/ath5k/base.c: In function `ath5k_check_ibss_tsf':
-    drivers/net/wireless/ath5k/base.c:1740: warning: long long unsigned int format, u64 arg (arg 5)
-    drivers/net/wireless/ath5k/base.c:1740: warning: long long unsigned int format, u64 arg (arg 6)
-    drivers/net/wireless/ath5k/base.c:1740: warning: long long int format, u64 arg (arg 7)
-    drivers/net/wireless/ath5k/base.c:1740: warning: long long unsigned int format, u64 arg (arg 8)
-    drivers/net/wireless/ath5k/base.c:1757: warning: long long unsigned int format, u64 arg (arg 5)
-    drivers/net/wireless/ath5k/base.c:1757: warning: long long unsigned int format, u64 arg (arg 6)
-    drivers/net/wireless/iwlwifi/iwl4965-base.c: In function `iwl4965_tx_status_reply_tx':
-    drivers/net/wireless/iwlwifi/iwl4965-base.c:3105: warning: long long unsigned int format, u64 arg (arg 6)
-    drivers/net/wireless/iwlwifi/iwl-4965.c: In function `iwl4965_rx_reply_rx':
-    drivers/net/wireless/iwlwifi/iwl-4965.c:3978: warning: long long unsigned int format, u64 arg (arg 7)
+    lbs_get_data_rate() gets called, but no-one uses it's result.
     
-    Cc: Andrew Morton <akpm at linux-foundation.org>
+    Signed-off-by: Holger Schurig <hs4233 at mail.mn-solutions.de>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 6c4711b4697d93424e4b1f76a9929ba844d714a5
-Author: Luis Carlos Cobo <luisca at cozybit.com>
-Date:   Mon Mar 31 17:39:18 2008 -0700
+commit 7cb92ee3af4f32ae278c6aad4d9c49fb52a99a66
+Author: Harvey Harrison <harvey.harrison at gmail.com>
+Date:   Tue May 13 18:13:35 2008 -0700
 
-    mac80211: use a struct for bss->mesh_config
+    b43: use the bitrev helpers rather than rolling a private one
     
-    This allows cleaner code when accesing bss->mesh_config components.
+    The 4-bit reversal flip_4bit is replaced with the bitrev helper
+    bitrev8 and a 4-bit shift.  The B43_WARN is moved to the location
+    where a register is read from for checking there.  The other caller
+    explicitly passes an array index which is guaranteed to be within range
+    and so a B43_WARN is not added there.
     
-    Signed-off-by: Luis Carlos Cobo <luisca at cozybit.com>
-    Acked-by: Johannes Berg <johannes at sipsolutions.net>
+    Signed-off-by: Harvey Harrison <harvey.harrison at gmail.com>
+    Reviewed-by: Michael Buesch <mb at bu3sch.de>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 05e5e88373d91c75e9262a3f984be511960e510d
-Author: Luis Carlos Cobo <luisca at cozybit.com>
-Date:   Mon Mar 31 16:00:13 2008 -0700
+commit 8c122e14ca821402b9181f16494d9f11169deeae
+Author: Bob Copeland <me at bobcopeland.com>
+Date:   Mon May 12 21:16:44 2008 -0400
 
-    mac80211: check for mesh_config length on incoming management frames
+    ath5k: Fix loop variable initializations
     
-    Signed-off-by: Luis Carlos Cobo <luisca at cozybit.com>
-    Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 966a54282257ce1c43a5410dab2f2778a6f4dcf9
-Author: Luis Carlos Cobo <luisca at cozybit.com>
-Date:   Mon Mar 31 15:33:39 2008 -0700
-
-    mac80211: use recent multicast table for all mesh multicast frames
+    In ath5k_tasklet_rx, both status structures 'rxs' and 'rs' are
+    initialized at the top of the tasklet, but not within the loop.
+    If the loop is executed multiple times in the tasklet then the
+    variables may see changes from previous packets.
+    
+    For TKIP, this results in 'Invalid Michael MIC' errors if two packets
+    are processed in the tasklet: rxs.flag gets set to RX_DECRYPTED by
+    mac80211 when it decrypts the first encrypted packet.  The subsequent
+    packet will have RX_DECRYPTED set upon entry to mac80211, so mac80211
+    will not try to decrypt it.
     
-    ...not only broadcast.
+    We currently initialize all but two fields in the structures, so fix
+    the other two.
     
-    Signed-off-by: Luis Carlos Cobo <luisca at cozybit.com>
+    Signed-off-by: Bob Copeland <me at bobcopeland.com>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit cb585bccfedab0c228344ffa258950c417dea6b5
-Author: Luis Carlos Cobo <luisca at cozybit.com>
-Date:   Mon Mar 31 15:21:23 2008 -0700
+commit 01669110ba331be385af8d5310ff6c3b93b09620
+Author: Ivo van Doorn <ivdoorn at gmail.com>
+Date:   Tue May 13 15:03:02 2008 +0200
 
-    mac80211: fix spinlock recursion on sta expiration
+    mac80211: Set IEEE80211_TXPD_REQ_TX_STATUS for all TX frames
+    
+    All interfaces should set the IEEE80211_TXPD_REQ_TX_STATUS flag for all TX frames
+    which will force the master interface to set the IEEE80211_TX_CTL_REQ_TX_STATUS
+    flag. This in turn will allow drivers to check for that flag before reporting
+    the TX status to mac80211.
     
-    Signed-off-by: Luis Carlos Cobo <luisca at cozybit.com>
+    This is very usefull when frames (like beacons, RTS and CTS-to-self) should not
+    be reported back to mac80211. Later we could add more extensive checks to
+    exclude more frames from being reported, or let mac80211 decide if it wants
+    the frame for status reporting or not.
+    
+    v2: Monitor interfaces should also set IEEE80211_TXPD_REQ_TX_STATUS
+    
+    Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
     Acked-by: Johannes Berg <johannes at sipsolutions.net>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 73bb3e4a7a9f1b8d5f89c3991bd0c904ab0b8e27
-Author: Luis Carlos Cobo <luisca at cozybit.com>
-Date:   Mon Mar 31 15:10:22 2008 -0700
+commit 5e15aedb1d67c2d31643edc3fa282647b0f3befb
+Author: Huang Weiyi <weiyi.huang at gmail.com>
+Date:   Sat May 10 11:12:31 2008 +0200
 
-    mac80211: fix deadlocks in debugfs_netdev.c
+    b43: nphy.c remove duplicated include
     
-    The bug shows up with CONFIG_PREEMPT enabled. Pointed out by Andrew Morton.
+    Remove duplicated include <linux/delay.h> in
+    drivers/net/wireless/b43/nphy.c
     
-    Cc: Andrew Morton <akpm at linux-foundation.org>
-    Cc: Johannes Berg <johannes at sipsolutions.net>
-    Signed-off-by: Luis Carlos Cobo <luisca at cozybit.com>
+    Signed-off-by: Huang Weiyi <weiyi.huang at gmail.com>
+    Signed-off-by: Michael Buesch <mb at bu3sch.de>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 7e879b551f1ada78d66fa5c6914aa1744b9c97d2
-Author: Johannes Berg <johannes at sipsolutions.net>
-Date:   Mon Mar 31 19:23:04 2008 +0200
+commit 7ce2d429578b4e32ea68d60e7f16a2a7bb17dada
+Author: Eric W. Biederman <ebiederm at xmission.com>
+Date:   Thu May 8 14:30:18 2008 -0700
 
-    mac80211: fix sparse complaint in ieee80211_sta_def_wmm_params
+    wireless: Add missing locking to cfg80211_dev_rename
     
-    A variable 'i' is being shadowed by another one, but the second
-    one can just be removed.
+    device_rename only performs useful and race free validity
+    checking at the optional sysfs level so depending on it
+    for all of the validity checking in cfg80211_dev_rename
+    is racy.
     
-    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
-    Cc: Vladimir Koutny <vlado at work.ksp.sk>
+    Instead implement all of the needed validity checking
+    and locking in cfg80211_dev_rename.
+    
+    Signed-off-by: Eric W. Biederman <ebiederm at xmission.com>
+    Acked-by: Johannes Berg <johannes at sipsolutions.net>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit dc6676b7f2c2072ec05254aaca32e99f87a8a417
-Author: Johannes Berg <johannes at sipsolutions.net>
-Date:   Mon Mar 31 19:23:03 2008 +0200
+commit 54a5c8046dce102c1a435ca5a95f5c0699662d21
+Author: Bruno Randolf <br1 at einfach.org>
+Date:   Thu May 8 19:22:43 2008 +0200
 
-    mac80211: sta_info_flush() fixes
+    mac80211: make rx radiotap header more flexible
     
-    When the IBSS code tries to flush the STA list, it does so in
-    an atomic context. Flushing isn't safe there, however, and
-    requires the RTNL, so we need to defer it to a workqueue.
+    use hw flags and rx flags to determine which fields are present in the header
+    and use all available information from the driver.
     
-    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+    make sure radiotap header starts at a naturally aligned address (mod 8) for
+    all radiotap fields.
+    
+    Signed-off-by: Bruno Randolf <br1 at einfach.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 4f6fab472c4c7c21d577f85fabec7628d4a05637
-Author: Johannes Berg <johannes at sipsolutions.net>
-Date:   Mon Mar 31 19:23:02 2008 +0200
+commit 7ccf488058d5539b1145c1605a5574ce90b68460
+Author: Bruno Randolf <br1 at einfach.org>
+Date:   Thu May 8 19:15:40 2008 +0200
 
[...125664 lines suppressed...]
-+
-+    <chapter id="qos">
-+      <title>Multiple queues and QoS support</title>
-+      <para>TBD</para>
-+!Finclude/net/mac80211.h ieee80211_tx_queue_params
-+!Finclude/net/mac80211.h ieee80211_tx_queue_stats_data
-+!Finclude/net/mac80211.h ieee80211_tx_queue
-+    </chapter>
-+
-+    <chapter id="AP">
-+      <title>Access point mode support</title>
-+      <para>TBD</para>
-+      <para>Some parts of the if_conf should be discussed here instead</para>
-+      <para>
-+        Insert notes about VLAN interfaces with hw crypto here or
-+        in the hw crypto chapter.
-+      </para>
-+!Finclude/net/mac80211.h ieee80211_get_buffered_bc
-+!Finclude/net/mac80211.h ieee80211_beacon_get
-+    </chapter>
-+
-+    <chapter id="multi-iface">
-+      <title>Supporting multiple virtual interfaces</title>
-+      <para>TBD</para>
-+      <para>
-+        Note: WDS with identical MAC address should almost always be OK
-+      </para>
-+      <para>
-+        Insert notes about having multiple virtual interfaces with
-+        different MAC addresses here, note which configurations are
-+        supported by mac80211, add notes about supporting hw crypto
-+        with it.
-+      </para>
-+    </chapter>
-+
-+    <chapter id="hardware-scan-offload">
-+      <title>Hardware scan offload</title>
-+      <para>TBD</para>
-+!Finclude/net/mac80211.h ieee80211_scan_completed
-+    </chapter>
-+  </part>
-+
-+  <part id="rate-control">
-+    <title>Rate control interface</title>
-+    <partintro>
-+      <para>TBD</para>
-+      <para>
-+       This part of the book describes the rate control algorithm
-+       interface and how it relates to mac80211 and drivers.
-+      </para>
-+    </partintro>
-+    <chapter id="dummy">
-+      <title>dummy chapter</title>
-+      <para>TBD</para>
-+    </chapter>
-+  </part>
-+
-+  <part id="internal">
-+    <title>Internals</title>
-+    <partintro>
-+      <para>TBD</para>
-+      <para>
-+       This part of the book describes mac80211 internals.
-+      </para>
-+    </partintro>
-+
-+    <chapter id="key-handling">
-+      <title>Key handling</title>
-+      <sect1>
-+        <title>Key handling basics</title>
-+!Pnet/mac80211/key.c Key handling basics
-+      </sect1>
-+      <sect1>
-+        <title>MORE TBD</title>
-+        <para>TBD</para>
-+      </sect1>
-+    </chapter>
-+
-+    <chapter id="rx-processing">
-+      <title>Receive processing</title>
-+      <para>TBD</para>
-+    </chapter>
-+
-+    <chapter id="tx-processing">
-+      <title>Transmit processing</title>
-+      <para>TBD</para>
-+    </chapter>
-+
-+    <chapter id="sta-info">
-+      <title>Station info handling</title>
-+      <sect1>
-+        <title>Programming information</title>
-+!Fnet/mac80211/sta_info.h sta_info
-+!Fnet/mac80211/sta_info.h ieee80211_sta_info_flags
-+      </sect1>
-+      <sect1>
-+        <title>STA information lifetime rules</title>
-+!Pnet/mac80211/sta_info.c STA information lifetime rules
-+      </sect1>
-+    </chapter>
-+
-+    <chapter id="synchronisation">
-+      <title>Synchronisation</title>
-+      <para>TBD</para>
-+      <para>Locking, lots of RCU</para>
-+    </chapter>
-+  </part>
-+</book>
-diff -up linux-2.6.24.noarch/Documentation/DocBook/Makefile.orig linux-2.6.24.noarch/Documentation/DocBook/Makefile
---- linux-2.6.24.noarch/Documentation/DocBook/Makefile.orig	2008-04-08 00:15:26.000000000 -0400
-+++ linux-2.6.24.noarch/Documentation/DocBook/Makefile	2008-04-08 00:15:33.000000000 -0400
-@@ -11,7 +11,8 @@ DOCBOOKS := wanbook.xml z8530book.xml mc
- 	    procfs-guide.xml writing_usb_driver.xml networking.xml \
- 	    kernel-api.xml filesystems.xml lsm.xml usb.xml \
- 	    gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml \
--	    genericirq.xml s390-drivers.xml uio-howto.xml scsi.xml
-+	    genericirq.xml s390-drivers.xml uio-howto.xml scsi.xml \
-+	    mac80211.xml
- 
- ###
- # The build process is as follows (targets):
-diff -up linux-2.6.24.noarch/Documentation/feature-removal-schedule.txt.orig linux-2.6.24.noarch/Documentation/feature-removal-schedule.txt
---- linux-2.6.24.noarch/Documentation/feature-removal-schedule.txt.orig	2008-04-08 00:15:26.000000000 -0400
-+++ linux-2.6.24.noarch/Documentation/feature-removal-schedule.txt	2008-04-08 00:15:33.000000000 -0400
-@@ -230,33 +230,6 @@ Who:	Jean Delvare <khali at linux-fr.org>
- 
- ---------------------------
- 
--What:	bcm43xx wireless network driver
--When:	2.6.26
--Files:	drivers/net/wireless/bcm43xx
--Why:	This driver's functionality has been replaced by the
--	mac80211-based b43 and b43legacy drivers.
--Who:	John W. Linville <linville at tuxdriver.com>
--
-----------------------------
--
--What:	ieee80211 softmac wireless networking component
--When:	2.6.26 (or after removal of bcm43xx and port of zd1211rw to mac80211)
--Files:	net/ieee80211/softmac
--Why:	No in-kernel drivers will depend on it any longer.
--Who:	John W. Linville <linville at tuxdriver.com>
--
-----------------------------
--
--What:	rc80211-simple rate control algorithm for mac80211
--When:	2.6.26
--Files:	net/mac80211/rc80211-simple.c
--Why:	This algorithm was provided for reference but always exhibited bad
--	responsiveness and performance and has some serious flaws. It has been
--	replaced by rc80211-pid.
--Who:	Stefano Brivio <stefano.brivio at polimi.it>
--
-----------------------------
--
- What (Why):
- 	- include/linux/netfilter_ipv4/ipt_TOS.h ipt_tos.h header files
- 	  (superseded by xt_TOS/xt_tos target & match)
+@@ -1894,9 +1893,10 @@ static int __devinit adm8211_probe(struc
+ 
+ 	dev->extra_tx_headroom = sizeof(struct adm8211_tx_hdr);
+ 	/* dev->flags = IEEE80211_HW_RX_INCLUDES_FCS in promisc mode */
++	dev->flags = IEEE80211_HW_SIGNAL_UNSPEC;
+ 
+ 	dev->channel_change_time = 1000;
+-	dev->max_rssi = 100;	/* FIXME: find better value */
++	dev->max_signal = 100;    /* FIXME: find better value */
+ 
+ 	dev->queues = 1; /* ADM8211C supports more, maybe ADM8211B too */
+ 
+diff -up linux-2.6.25.noarch/drivers/ssb/pci.c.orig linux-2.6.25.noarch/drivers/ssb/pci.c
+--- linux-2.6.25.noarch/drivers/ssb/pci.c.orig	2008-05-19 17:24:59.000000000 -0400
++++ linux-2.6.25.noarch/drivers/ssb/pci.c	2008-05-19 17:26:13.000000000 -0400
+@@ -510,17 +510,15 @@ static int ssb_pci_sprom_get(struct ssb_
+ 	sprom_do_read(bus, buf);
+ 	err = sprom_check_crc(buf, bus->sprom_size);
+ 	if (err) {
+-		/* check for rev 4 sprom - has special signature */
+-		if (buf[32] == 0x5372) {
+-			kfree(buf);
+-			buf = kcalloc(SSB_SPROMSIZE_WORDS_R4, sizeof(u16),
+-				      GFP_KERNEL);
+-			if (!buf)
+-				goto out;
+-			bus->sprom_size = SSB_SPROMSIZE_WORDS_R4;
+-			sprom_do_read(bus, buf);
+-			err = sprom_check_crc(buf, bus->sprom_size);
+-		}
++		/* try for a 440 byte SPROM - revision 4 and higher */
++		kfree(buf);
++		buf = kcalloc(SSB_SPROMSIZE_WORDS_R4, sizeof(u16),
++			      GFP_KERNEL);
++		if (!buf)
++			goto out;
++		bus->sprom_size = SSB_SPROMSIZE_WORDS_R4;
++		sprom_do_read(bus, buf);
++		err = sprom_check_crc(buf, bus->sprom_size);
+ 		if (err)
+ 			ssb_printk(KERN_WARNING PFX "WARNING: Invalid"
+ 				   " SPROM CRC (corrupt SPROM)\n");

linux-2.6-wireless.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.34 -r 1.35 linux-2.6-wireless.patch
Index: linux-2.6-wireless.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-9/linux-2.6-wireless.patch,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- linux-2.6-wireless.patch	15 Apr 2008 20:27:37 -0000	1.34
+++ linux-2.6-wireless.patch	19 May 2008 22:15:19 -0000	1.35
@@ -1,860 +1,127879 @@
-commit b358492cd2a9c67bff352c5a60d86e7fc9627477
+commit 229ce3abb6d6d4598de8ef1ed1e2da8163a9bbc0
 Author: Masakazu Mokuno <mokuno at sm.sony.co.jp>
-Date:   Mon Apr 14 18:07:21 2008 +0900
+Date:   Wed May 14 14:16:50 2008 +0900
 
-    PS3: gelic: fix the oops on the broken IE returned from the hypervisor
+    wireless: Create 'device' symlink in sysfs
     
-    This fixes the bug that the driver would try to over-scan the memory
-    if the sum of the length field of every IEs does not match the length
-    returned from the hypervisor.
+    Some network interfaces of the wireless drivers lack the 'device'
+    symlink in sysfs.
+    This patch lets the drivers create the links.
     
     Signed-off-by: Masakazu Mokuno <mokuno at sm.sony.co.jp>
+    Acked-by: Dan Williams <dcbw at redhat.com>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit dc4ae1f46dbbcd08b3b5e23ad5ef87bf4bb41adf
-Author: Stefano Brivio <stefano.brivio at polimi.it>
-Date:   Mon Apr 14 00:59:49 2008 +0200
+commit b7acbdfbd1f277c1eb23f344f899cfa4cd0bf36a
+Author: Roel Kluin <roel.kluin at gmail.com>
+Date:   Tue May 13 22:12:27 2008 +0200
 
-    b43legacy: fix DMA mapping leakage
+    wireless, airo: waitbusy() won't delay
     
-    This fixes a DMA mapping leakage in the case where we reject a DMA buffer
-    because of its address.
-    The patch by Michael Buesch has been ported to b43legacy.
+    There will be no delay even when COMMAND_BUSY (defined 0x8000) is set:
+    0x8000 & (delay < 10000) will evaluate to 0 - when delay is 0.
     
-    Signed-off-by: Stefano Brivio <stefano.brivio at polimi.it>
-    Cc: Christian Casteyde <casteyde.christian at free.fr>
+    Signed-off-by: Roel Kluin <roel.kluin at gmail.com>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 02969d296e91626d9942ea15f8a95fe056025ef1
+Author: Brian Cavagnolo <brian at cozybit.com>
+Date:   Tue May 13 13:54:59 2008 +0100
+
+    libertas: fix command timeout after firmware failure
+    
+    This is a fix for OLPC ticket #6586: "SCAN command fails, timer doesn't
+    fire". In fact, the timer was firing; the problem was that the dnld_sent
+    state variable was not being updated after the timer expired, so
+    lbs_execute_next_command was not being called.
+    
+    Signed-off-by: Brian Cavagnolo <brian at cozybit.com>
+    Signed-off-by: Javier Cardona <javier at cozybit.com>
+    Signed-off-by: David Woodhouse <dwmw2 at infradead.org>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 2f561feb386d6adefbad63c59a1fcd298ac6a79c
+Author: Ivo van Doorn <ivdoorn at gmail.com>
+Date:   Sat May 10 13:40:49 2008 +0200
+
+    mac80211: Add RTNL version of ieee80211_iterate_active_interfaces
+    
+    Since commit e38bad4766a110b61fa6038f10be16ced8c6cc38
+    	mac80211: make ieee80211_iterate_active_interfaces not need rtnl
+    rt2500usb and rt73usb broke down due to attempting register access
+    in atomic context (which is not possible for USB hardware).
+    
+    This patch restores ieee80211_iterate_active_interfaces() to use RTNL lock,
+    and provides the non-RTNL version under a new name:
+    	ieee80211_iterate_active_interfaces_atomic()
+    
+    So far only rt2x00 uses ieee80211_iterate_active_interfaces(), and those
+    drivers require the RTNL version of ieee80211_iterate_active_interfaces().
+    Since they already call that function directly, this patch will automatically
+    fix the USB rt2x00 drivers.
+    
+    v2: Rename ieee80211_iterate_active_interfaces_rtnl
+    
+    Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
+    Acked-by: Johannes Berg <johannes at sipsolutions.net>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 34a961f7db36f10abd6b153411fe8c810f21f6b3
+Author: Abhijeet Kolekar <abhijeet.kolekar at intel.com>
+Date:   Fri May 9 09:35:41 2008 -0700
+
+    mac80211 : Association with 11n hidden ssid ap.
+    
+    This patch fixes the association problem with 11n hidden ssid ap.
+    Patch fixes the problem of associating with hidden ssid when
+    all three parameters ap,essid and channel are given to iwconfig.
+    This patch removes the condition of checking three parameters
+    and always checks for bss in bss list while associating.
+    
+    Signed-off-by: Abhijeet Kolekar <abhijeet.kolekar at intel.com>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 23f40dc650c0344b37fe54143868a31be66db882
+Author: Mathieu Chouquet-Stringer <mchouque at free.fr>
+Date:   Wed May 14 19:03:18 2008 -0400
+
+    hostap: fix "registers" registration in procfs
+    
+    The "registers" entry was incorrectly created in the procfs root instead
+    of the device specific directory.  Move "registers" registration
+    immediately after the containing procfs directory is created.
+    
+    Signed-off-by: Mathieu Chouquet-Stringer <mchouque at free.fr>
+    Signed-off-by: Pavel Roskin <proski at gnu.org>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 6aa5fc434958d15a4d66d922d0416dfb03c07def
+Merge: 362a61a... 9ee6b7f...
+Author: Linus Torvalds <torvalds at linux-foundation.org>
+Date:   Wed May 14 10:08:24 2008 -0700
+
+    Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
+    
+    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (73 commits)
+      net: Fix typo in net/core/sock.c.
+      ppp: Do not free not yet unregistered net device.
+      netfilter: xt_iprange: module aliases for xt_iprange
+      netfilter: ctnetlink: dump conntrack ID in event messages
+      irda: Fix a misalign access issue. (v2)
+      sctp: Fix use of uninitialized pointer
+      cipso: Relax too much careful cipso hash function.
+      tcp FRTO: work-around inorder receivers
+      tcp FRTO: Fix fallback to conventional recovery
+      New maintainer for Intel ethernet adapters
+      DM9000: Use delayed work to update MII PHY state
+      DM9000: Update and fix driver debugging messages
+      DM9000: Add __devinit and __devexit attributes to probe and remove
+      sky2: fix simple define thinko
+      [netdrvr] sfc: sfc: Add self-test support
+      [netdrvr] sfc: Increment rx_reset when reported as driver event
+      [netdrvr] sfc: Remove unused macro EFX_XAUI_RETRAIN_MAX
+      [netdrvr] sfc: Fix code formatting
+      [netdrvr] sfc: Remove kernel-doc comments for removed members of struct efx_nic
+      [netdrvr] sfc: Remove garbage from comment
+      ...
+
+commit 608961a5eca8d3c6bd07172febc27b5559408c5d
+Author: David S. Miller <davem at davemloft.net>
+Date:   Mon May 12 21:59:32 2008 -0700
+
+    mac80211: Use skb_header_cloned() on TX path.
+    
+    When skb_header_cloned() returns false you can change the
+    headers however you like.
+    
+    Signed-off-by: David S. Miller <davem at davemloft.net>
+
+commit f3994eceebf64cf356a82ffb2718ef538eb8d4f4
+Author: Johannes Berg <johannes at sipsolutions.net>
+Date:   Mon May 12 20:51:44 2008 -0700
+
+    mac80211: assign needed_headroom/tailroom for netdevs
+    
+    This assigns the netdev's needed_headroom/tailroom members to take
+    advantage of pre-allocated space for 802.11 headers.
+    
+    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+    Signed-off-by: David S. Miller <davem at davemloft.net>
+
+commit a4278e18e7e497b76781492d010035c3c36f7403
+Author: Pavel Roskin <proski at gnu.org>
+Date:   Mon May 12 09:02:24 2008 -0400
+
+    mac80211: add missing newlines in printk()
+    
+    Signed-off-by: Pavel Roskin <proski at gnu.org>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 36d16ae73becc5978fe22866e9ab66b509211afe
+Author: Helmut Schaa <hschaa at suse.de>
+Date:   Thu May 8 13:34:07 2008 +0200
+
+    mac80211: fix association with some APs
+    
+    Some APs refuse association if the supported rates contained in the
+    association request do not match its own supported rates. This patch
+    introduces a new function which builds the intersection between the AP's
+    supported rates and the client's supported rates to work around such
+    problems. The same approach is already used in ipw2200 for example.
+    
+    Signed-off-by: Helmut Schaa <hschaa at suse.de>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit c0186078b78839a8bdb385fa07a816c2f348a49d
+Author: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
[...128265 lines suppressed...]
++static void ssb_pcicore_fixup_pcibridge(struct pci_dev *dev)
++{
++	u8 lat;
++
++	if (dev->bus->ops != &ssb_pcicore_pciops) {
++		/* This is not a device on the PCI-core bridge. */
++		return;
++	}
++	if (dev->bus->number != 0 || PCI_SLOT(dev->devfn) != 0)
++		return;
++
++	ssb_printk(KERN_INFO "PCI: Fixing up bridge %s\n", pci_name(dev));
++
++	/* Enable PCI bridge bus mastering and memory space */
++	pci_set_master(dev);
++	if (pcibios_enable_device(dev, ~0) < 0) {
++		ssb_printk(KERN_ERR "PCI: SSB bridge enable failed\n");
++		return;
++	}
++
++	/* Enable PCI bridge BAR1 prefetch and burst */
++	pci_write_config_dword(dev, SSB_BAR1_CONTROL, 3);
++
++	/* Make sure our latency is high enough to handle the devices behind us */
++	lat = 168;
++	ssb_printk(KERN_INFO "PCI: Fixing latency timer of device %s to %u\n",
++		   pci_name(dev), lat);
++	pci_write_config_byte(dev, PCI_LATENCY_TIMER, lat);
++}
++DECLARE_PCI_FIXUP_EARLY(PCI_ANY_ID, PCI_ANY_ID, ssb_pcicore_fixup_pcibridge);
++
++/* PCI device IRQ mapping. */
++int ssb_pcicore_pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
++{
++	if (dev->bus->ops != &ssb_pcicore_pciops) {
++		/* This is not a device on the PCI-core bridge. */
++		return -ENODEV;
++	}
++	return ssb_mips_irq(extpci_core->dev) + 2;
++}
++
+ static void ssb_pcicore_init_hostmode(struct ssb_pcicore *pc)
+ {
+ 	u32 val;
+@@ -544,15 +562,9 @@ int ssb_pcicore_dev_irqvecs_enable(struc
+ 		u32 intvec;
+ 
+ 		intvec = ssb_read32(pdev, SSB_INTVEC);
+-		if ((bus->chip_id & 0xFF00) == 0x4400) {
+-			/* Workaround: On the BCM44XX the BPFLAG routing
+-			 * bit is wrong. Use a hardcoded constant. */
+-			intvec |= 0x00000002;
+-		} else {
+-			tmp = ssb_read32(dev, SSB_TPSFLAG);
+-			tmp &= SSB_TPSFLAG_BPFLAG;
+-			intvec |= (1 << tmp);
+-		}
++		tmp = ssb_read32(dev, SSB_TPSFLAG);
++		tmp &= SSB_TPSFLAG_BPFLAG;
++		intvec |= (1 << tmp);
+ 		ssb_write32(pdev, SSB_INTVEC, intvec);
+ 	}
+ 
+diff -up /dev/null linux-2.6.25.noarch/drivers/ssb/sprom.c
+--- /dev/null	2008-05-19 07:57:11.730003501 -0400
++++ linux-2.6.25.noarch/drivers/ssb/sprom.c	2008-05-19 17:16:42.000000000 -0400
+@@ -0,0 +1,133 @@
++/*
++ * Sonics Silicon Backplane
++ * Common SPROM support routines
++ *
++ * Copyright (C) 2005-2008 Michael Buesch <mb at bu3sch.de>
++ * Copyright (C) 2005 Martin Langer <martin-langer at gmx.de>
++ * Copyright (C) 2005 Stefano Brivio <st3 at riseup.net>
++ * Copyright (C) 2005 Danny van Dyk <kugelfang at gentoo.org>
++ * Copyright (C) 2005 Andreas Jaggi <andreas.jaggi at waterwave.ch>
++ *
++ * Licensed under the GNU/GPL. See COPYING for details.
++ */
++
++#include "ssb_private.h"
++
++
++static int sprom2hex(const u16 *sprom, char *buf, size_t buf_len,
++		     size_t sprom_size_words)
++{
++	int i, pos = 0;
++
++	for (i = 0; i < sprom_size_words; i++)
++		pos += snprintf(buf + pos, buf_len - pos - 1,
++				"%04X", swab16(sprom[i]) & 0xFFFF);
++	pos += snprintf(buf + pos, buf_len - pos - 1, "\n");
++
++	return pos + 1;
++}
++
++static int hex2sprom(u16 *sprom, const char *dump, size_t len,
++		     size_t sprom_size_words)
++{
++	char tmp[5] = { 0 };
++	int cnt = 0;
++	unsigned long parsed;
++
++	if (len < sprom_size_words * 2)
++		return -EINVAL;
++
++	while (cnt < sprom_size_words) {
++		memcpy(tmp, dump, 4);
++		dump += 4;
++		parsed = simple_strtoul(tmp, NULL, 16);
++		sprom[cnt++] = swab16((u16)parsed);
++	}
++
++	return 0;
++}
++
++/* Common sprom device-attribute show-handler */
++ssize_t ssb_attr_sprom_show(struct ssb_bus *bus, char *buf,
++			    int (*sprom_read)(struct ssb_bus *bus, u16 *sprom))
++{
++	u16 *sprom;
++	int err = -ENOMEM;
++	ssize_t count = 0;
++	size_t sprom_size_words = bus->sprom_size;
++
++	sprom = kcalloc(sprom_size_words, sizeof(u16), GFP_KERNEL);
++	if (!sprom)
++		goto out;
++
++	/* Use interruptible locking, as the SPROM write might
++	 * be holding the lock for several seconds. So allow userspace
++	 * to cancel operation. */
++	err = -ERESTARTSYS;
++	if (mutex_lock_interruptible(&bus->sprom_mutex))
++		goto out_kfree;
++	err = sprom_read(bus, sprom);
++	mutex_unlock(&bus->sprom_mutex);
++
++	if (!err)
++		count = sprom2hex(sprom, buf, PAGE_SIZE, sprom_size_words);
++
++out_kfree:
++	kfree(sprom);
++out:
++	return err ? err : count;
++}
++
++/* Common sprom device-attribute store-handler */
++ssize_t ssb_attr_sprom_store(struct ssb_bus *bus,
++			     const char *buf, size_t count,
++			     int (*sprom_check_crc)(const u16 *sprom, size_t size),
++			     int (*sprom_write)(struct ssb_bus *bus, const u16 *sprom))
++{
++	u16 *sprom;
++	int res = 0, err = -ENOMEM;
++	size_t sprom_size_words = bus->sprom_size;
++
++	sprom = kcalloc(bus->sprom_size, sizeof(u16), GFP_KERNEL);
++	if (!sprom)
++		goto out;
++	err = hex2sprom(sprom, buf, count, sprom_size_words);
++	if (err) {
++		err = -EINVAL;
++		goto out_kfree;
++	}
++	err = sprom_check_crc(sprom, sprom_size_words);
++	if (err) {
++		err = -EINVAL;
++		goto out_kfree;
++	}
++
++	/* Use interruptible locking, as the SPROM write might
++	 * be holding the lock for several seconds. So allow userspace
++	 * to cancel operation. */
++	err = -ERESTARTSYS;
++	if (mutex_lock_interruptible(&bus->sprom_mutex))
++		goto out_kfree;
++	err = ssb_devices_freeze(bus);
++	if (err == -EOPNOTSUPP) {
++		ssb_printk(KERN_ERR PFX "SPROM write: Could not freeze devices. "
++			   "No suspend support. Is CONFIG_PM enabled?\n");
++		goto out_unlock;
++	}
++	if (err) {
++		ssb_printk(KERN_ERR PFX "SPROM write: Could not freeze all devices\n");
++		goto out_unlock;
++	}
++	res = sprom_write(bus, sprom);
++	err = ssb_devices_thaw(bus);
++	if (err)
++		ssb_printk(KERN_ERR PFX "SPROM write: Could not thaw all devices\n");
++out_unlock:
++	mutex_unlock(&bus->sprom_mutex);
++out_kfree:
++	kfree(sprom);
++out:
++	if (res)
++		return res;
++	return err ? err : count;
++}


--- linux-2.6-rt2x00-configure_filter.patch DELETED ---


--- linux-2.6-wireless-pending-too.patch DELETED ---




More information about the fedora-extras-commits mailing list