rpms/kernel/F-8 config-generic, 1.48, 1.49 kernel.spec, 1.354, 1.355 linux-2.6-cfg80211-extras.patch, 1.2, 1.3 linux-2.6-wireless-pending.patch, 1.27, 1.28 linux-2.6-wireless.patch, 1.24, 1.25

John W. Linville (linville) fedora-extras-commits at redhat.com
Thu Feb 21 19:12:17 UTC 2008


Author: linville

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

Modified Files:
	config-generic kernel.spec linux-2.6-cfg80211-extras.patch 
	linux-2.6-wireless-pending.patch linux-2.6-wireless.patch 
Log Message:
recent wireless fixes and updates from upstream


Index: config-generic
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-8/config-generic,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -r1.48 -r1.49
--- config-generic	15 Feb 2008 23:58:52 -0000	1.48
+++ config-generic	21 Feb 2008 19:11:27 -0000	1.49
@@ -1243,6 +1243,7 @@
 
 CONFIG_ADM8211=m
 CONFIG_ATH5K=m
+CONFIG_ATH5K_DEBUG=y
 CONFIG_AIRO=m
 CONFIG_AIRO_CS=m
 CONFIG_ATMEL=m
@@ -1300,12 +1301,17 @@
 # CONFIG_RT2X00_DEBUG is not set
 CONFIG_RT2400PCI=m
 CONFIG_RT2400PCI_RFKILL=y
+CONFIG_RT2400PCI_LEDS=y
 CONFIG_RT2500PCI=m
 CONFIG_RT2500PCI_RFKILL=y
+CONFIG_RT2500PCI_LEDS=y
 CONFIG_RT61PCI=m
 CONFIG_RT61PCI_RFKILL=y
+CONFIG_RT61PCI_LEDS=y
 CONFIG_RT2500USB=m
+CONFIG_RT2500USB_LEDS=y
 CONFIG_RT73USB=m
+CONFIG_RT73USB_LEDS=y
 CONFIG_RTL8180=m
 CONFIG_RTL8187=m
 CONFIG_TMD_HERMES=m


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-8/kernel.spec,v
retrieving revision 1.354
retrieving revision 1.355
diff -u -r1.354 -r1.355
--- kernel.spec	20 Feb 2008 23:57:10 -0000	1.354
+++ kernel.spec	21 Feb 2008 19:11:27 -0000	1.355
@@ -659,7 +659,6 @@
 Patch681: linux-2.6-wireless-pending.patch
 Patch690: linux-2.6-at76.patch
 Patch691: linux-2.6-rndis_wlan.patch
-Patch692: linux-2.6-ath5k-use-soft-wep.patch
 Patch700: linux-2.6-cfg80211-extras.patch
 Patch701: linux-2.6-zd1211rw-module-alias.patch
 Patch720: linux-2.6-e1000-bad-csum-allow.patch
@@ -1243,9 +1242,6 @@
 ApplyPatch linux-2.6-at76.patch
 ApplyPatch linux-2.6-rndis_wlan.patch
 
-# Make ath5k use software WEP
-ApplyPatch linux-2.6-ath5k-use-soft-wep.patch
-
 # Restore ability to add/remove virtual i/fs to mac80211 devices
 ApplyPatch linux-2.6-cfg80211-extras.patch
 
@@ -1923,6 +1919,53 @@
 
 
 %changelog
+* Thu Feb 21 2008 John W. Linville <linville at redhat.com> 2.6.24.2-8
+- wireless: Fix WARN_ON() with ieee802.11b
+- rt2x00: Rate structure overhaul
+- rt2x00: Remove HWMODE_{A,B,G}
+- rt2x00: Use ieee80211_channel_to_frequency()
+- rt2x00: Make use of MAC80211_LED_TRIGGERS
+- rt2x00: Enable LED class support for rt2500usb/rt73usb
+- rt2x00: Fix rate initialization
+- rt2x00: Release rt2x00 2.1.0
+- cfg80211 API for channels/bitrates, mac80211 and driver conversion
+- nl80211: export hardware bitrate/channel capabilities
+- mac80211: fix scan band off-by-one error
+- mac80211: remove port control enable switch, clean up sta flags
+- wireless: fix ERP rate flags
+- mac80211: split ieee80211_txrx_result
+- mac80211: split RX_DROP
+- mac80211: clean up some things in the RX path
+- mac80211: remove "dynamic" RX/TX handlers
+- mac80211: move some code into ieee80211_invoke_rx_handlers
+- ath5k: Port to new bitrate/channel API
+- ath5k: Cleanup after API changes
+- ath5k: ath5k_copy_channels() was not setting the channel band
+- ath5k: Use our own Kconfig file, we'll be expanding this shortly
+- ath5k: Port debug.c over to the new band API and enable as build option
+- ath5k: Use software encryption for now
+- ath5k/phy.c: fix negative array index
+- nl80211: Add monitor interface configuration flags
+- mac80211: Use monitor configuration flags
+- mac80211: Add cooked monitor mode support
+- iwlwifi: initialize ieee80211_channel->hw_value
+- iwlwifi: set rate_idx correctly from plcp
+- rc80211-pid: fix rate adjustment
+- iwlwifi: Fix HT compilation breakage caused by cfg80211 API for channels/bitrates patch
+- ath5k: Fix build warnings on some 64-bit platforms.
+- p54usb: add USB ID for Phillips CPWUA054
+- WDEV: ath5k, fix lock imbalance
+- WDEV, ath5k, don't return int from bool function
+- rtl818x: fix sparse warnings
+- zd1211rw: fix sparse warnings
+- p54usb: add USB ID for Linksys WUSB54G ver 2
+- ssb: Fix serial console on new bcm47xx devices
+- ssb: Fix watchdog access for devices without a chipcommon
+- ssb: Fix the GPIO API
+- ssb: Make the GPIO API reentrancy safe
+- ssb: Fix pcicore cardbus mode
+- ssb: Fix support for PCI devices behind a SSB->PCI bridge
+
 * Mon Feb 18 2008 John W. Linville <linville at redhat.com> 2.6.24.2-7
 - ath5k: correct padding in tx descriptors
 - ipw2200: fix ucode assertion for RX queue overrun

linux-2.6-cfg80211-extras.patch:

Index: linux-2.6-cfg80211-extras.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-8/linux-2.6-cfg80211-extras.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux-2.6-cfg80211-extras.patch	18 Feb 2008 21:31:42 -0000	1.2
+++ linux-2.6-cfg80211-extras.patch	21 Feb 2008 19:11:27 -0000	1.3
@@ -21,7 +21,7 @@
 +
 +	rtnl_lock();
 +	res = rdev->ops->add_virtual_intf(&rdev->wiphy, (char*)buf,
-+					  NL80211_IFTYPE_UNSPECIFIED);
++					  NL80211_IFTYPE_UNSPECIFIED, NULL);
 +	rtnl_unlock();
 +
 +	return res ? res : len;

linux-2.6-wireless-pending.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.27 -r 1.28 linux-2.6-wireless-pending.patch
Index: linux-2.6-wireless-pending.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-8/linux-2.6-wireless-pending.patch,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -r1.27 -r1.28
--- linux-2.6-wireless-pending.patch	18 Feb 2008 21:31:42 -0000	1.27
+++ linux-2.6-wireless-pending.patch	21 Feb 2008 19:11:27 -0000	1.28
@@ -1,3 +1,560 @@
+commit 5e6cb1b66a3047b48b0c335890e478e95e5dd20f
+Author: Michael Wu <flamingice at sourmilk.net>
+Date:   Thu Jan 31 19:48:27 2008 +0100
+
+    mac80211: Add cooked monitor mode support
+    
+    This adds "cooked" monitor mode to mac80211. A monitor interface
+    in "cooked" mode will see all frames that mac80211 has not used
+    internally.
+    
+    Signed-off-by: Michael Wu <flamingice at sourmilk.net>
+    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 5b0916ba933a872bf621c62830ada98bfe694cfd
+Author: Johannes Berg <johannes at sipsolutions.net>
+Date:   Thu Jan 31 19:48:26 2008 +0100
+
+    mac80211: move some code into ieee80211_invoke_rx_handlers
+    
+    There is some duplicated code that sits in front of each function
+    call to ieee80211_invoke_rx_handlers() that can very well be part
+    of that function if it gets slightly different arguments.
+    
+    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 0726201a20a9242ab67bdfc8673a95f93d251227
+Author: Johannes Berg <johannes at sipsolutions.net>
+Date:   Thu Jan 31 19:48:25 2008 +0100
+
+    mac80211: remove "dynamic" RX/TX handlers
+    
+    It doesn't really make sense to have extra pointers to the RX/TX
+    handler arrays instead of just using the arrays directly, that
+    also allows us to make them static.
+    
+    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit bd4c55e4477d32c9f72f3cd3b19ed35bba383ec1
+Author: Johannes Berg <johannes at sipsolutions.net>
+Date:   Thu Jan 31 19:48:24 2008 +0100
+
+    mac80211: clean up some things in the RX path
+    
+    Uninline ieee80211_invoke_rx_handlers to save .text space,
+    make the code more readable in some places and remove the
+    "optimisation" that is hit only very few times and unclear
+    to start with.
+    
+    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 9078446b31494114b234838323cc5bb923ba448e
+Author: Michael Wu <flamingice at sourmilk.net>
+Date:   Thu Jan 31 19:48:23 2008 +0100
+
+    mac80211: Use monitor configuration flags
+    
+    Take advantage of the monitor configuration flags now provided by cfg80211.
+    
+    Signed-off-by: Michael Wu <flamingice at sourmilk.net>
+    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 1c35a228492e0a03f50d20182171fa007b960b73
+Author: Michael Wu <flamingice at sourmilk.net>
+Date:   Thu Jan 31 19:48:22 2008 +0100
+
+    nl80211: Add monitor interface configuration flags
+    
+    This allows precise control over what a monitor interface shows.
+    
+    Signed-off-by: Michael Wu <flamingice at sourmilk.net>
+    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 15a81dee0a7cce70fe80c137017c9a6c29ce1f73
+Author: Johannes Berg <johannes at sipsolutions.net>
+Date:   Thu Jan 31 19:48:21 2008 +0100
+
+    mac80211: split RX_DROP
+    
+    Some instances of RX_DROP mean that the frame was useless,
+    others mean that the frame should be visible in userspace
+    on "cooked" monitor interfaces. This patch splits up RX_DROP
+    and changes each instance appropriately.
+    
+    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit c88814a8c837f715cbbfb572fb69e673736d17e0
+Author: Johannes Berg <johannes at sipsolutions.net>
+Date:   Thu Jan 31 19:48:20 2008 +0100
+
+    mac80211: split ieee80211_txrx_result
+    
+    The _DROP result will need to be split in the RX path but not
+    in the TX path, so for preparation split up the type into two
+    types, one for RX and one for TX. Also make sure (via sparse)
+    that they cannot be confused.
+    
+    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit da0f327448621d15408786f1b3b14e78e34f0220
+Author: Tomas Winkler <tomas.winkler at intel.com>
+Date:   Wed Feb 6 02:37:18 2008 +0200
+
+    iwlwifi: Fix HT compilation breakage caused by cfg80211 API for channels/bitrates patch
+    
+    This patch fixes compilation breakage caused by 'cfg80211 API for
+    channels/bitrates' patch.
+    however it doesn't fix the driver's functional problems caused by that
+    patch.
+    
+    Signed-off-by: Tomas Winkler <tomas.winkler at intel.com>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit eee6153f3b25acd64a6166276a75e37aa3864216
+Author: Ivo van Doorn <ivdoorn at gmail.com>
+Date:   Sun Feb 3 15:56:02 2008 +0100
+
+    rt2x00: Release rt2x00 2.1.0
+    
+    Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 19af196155726979211c493ff5a49c03851dc163
+Author: Ivo van Doorn <ivdoorn at gmail.com>
+Date:   Sun Feb 3 15:54:34 2008 +0100
+
+    rt2x00: Fix rate initialization
+    
+    Fix typo in rate initialization. This fixes the WARN_ON()
+    in net/wireless/util.cpp:83
+    
+    Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 5bc04e1939821bc606955c93d337d7e3b7583796
+Author: Ivo van Doorn <ivdoorn at gmail.com>
+Date:   Sun Feb 3 15:54:11 2008 +0100
+
+    rt2x00: Enable LED class support for rt2500usb/rt73usb
+    
+    Add kerneldoc for vendor request functions in rt2x00usb.
+    Add asynchroneous vendor request function in rt2x00usb.
+    
+    With the availability of the asynchroneuous vendor request
+    we can now enable LED class support for rt2500usb and rt73usb.
+    Since LED handling is not important, it doesn't really matter
+    if a register call fails (This solution is better then no
+    LED class support at all).
+    
+    Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 403555df712b0607ae48d367ce29e56e90891d2d
+Author: Ivo van Doorn <ivdoorn at gmail.com>
+Date:   Sun Feb 3 15:53:40 2008 +0100
+
+    rt2x00: Make use of MAC80211_LED_TRIGGERS
+    
+    Make use of the led triggers provided by mac80211 to control
+    the led status. This can be enabled through a per-driver
+    configuration option which will automatically enable the
+    generic handler in rt2x00lib.
+    
+    This has been enabled for rt2500usb and rt73usb for the moment
+    since the led class will call set_brightness in irq context which
+    will not work correctly with the usb drivers who need to sleep.
+    
+    Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 3ae9ff1ee8c7567b51123baacbd9084373ddba21
+Author: Ivo van Doorn <ivdoorn at gmail.com>
+Date:   Sun Feb 3 15:52:45 2008 +0100
+
+    rt2x00: Use ieee80211_channel_to_frequency()
+    
+    No need to perform the calculation ourselves when
+    wireless provides a helper function for it.
+    
+    Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 4470d5f7dfddd1ad165567666c3118f98db757de
+Author: Ivo van Doorn <ivdoorn at gmail.com>
[...28179 lines suppressed...]
-+	.desc_size		= RXD_DESC_SIZE,
-+	.priv_size		= sizeof(struct queue_entry_priv_usb_rx),
+ #define ath5k_hw_hasbssidmask(_ah) \
+diff -up linux-2.6.24.noarch/drivers/net/wireless/rtl8180_max2820.c.orig linux-2.6.24.noarch/drivers/net/wireless/rtl8180_max2820.c
+--- linux-2.6.24.noarch/drivers/net/wireless/rtl8180_max2820.c.orig	2008-02-18 13:29:37.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rtl8180_max2820.c	2008-02-18 14:29:43.000000000 -0500
+@@ -78,8 +78,9 @@ static void max2820_rf_set_channel(struc
+ 				   struct ieee80211_conf *conf)
+ {
+ 	struct rtl8180_priv *priv = dev->priv;
+-	unsigned int chan_idx = conf ? conf->channel - 1 : 0;
+-	u32 txpw = priv->channels[chan_idx].val & 0xFF;
++	int channel = ieee80211_frequency_to_channel(conf->channel->center_freq);
++	unsigned int chan_idx = channel - 1;
++	u32 txpw = priv->channels[chan_idx].hw_value & 0xFF;
+ 	u32 chan = max2820_chan[chan_idx];
+ 
+ 	/* While philips SA2400 drive the PA bias from
+diff -up linux-2.6.24.noarch/drivers/net/wireless/adm8211.c.orig linux-2.6.24.noarch/drivers/net/wireless/adm8211.c
+--- linux-2.6.24.noarch/drivers/net/wireless/adm8211.c.orig	2008-02-18 13:29:36.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/adm8211.c	2008-02-18 14:29:43.000000000 -0500
+@@ -48,6 +48,32 @@ static struct pci_device_id adm8211_pci_
+ 	{ 0 }
+ };
+ 
++static struct ieee80211_rate adm8211_rates[] = {
++	{ .bitrate = 10, .flags = IEEE80211_RATE_SHORT_PREAMBLE },
++	{ .bitrate = 20, .flags = IEEE80211_RATE_SHORT_PREAMBLE },
++	{ .bitrate = 55, .flags = IEEE80211_RATE_SHORT_PREAMBLE },
++	{ .bitrate = 110, .flags = IEEE80211_RATE_SHORT_PREAMBLE },
++	{ .bitrate = 220, .flags = IEEE80211_RATE_SHORT_PREAMBLE }, /* XX ?? */
 +};
 +
-+static const struct data_queue_desc rt73usb_queue_tx = {
-+	.entry_num		= TX_ENTRIES,
-+	.data_size		= DATA_FRAME_SIZE,
-+	.desc_size		= TXD_DESC_SIZE,
-+	.priv_size		= sizeof(struct queue_entry_priv_usb_tx),
++static const struct ieee80211_channel adm8211_channels[] = {
++	{ .center_freq = 2412},
++	{ .center_freq = 2417},
++	{ .center_freq = 2422},
++	{ .center_freq = 2427},
++	{ .center_freq = 2432},
++	{ .center_freq = 2437},
++	{ .center_freq = 2442},
++	{ .center_freq = 2447},
++	{ .center_freq = 2452},
++	{ .center_freq = 2457},
++	{ .center_freq = 2462},
++	{ .center_freq = 2467},
++	{ .center_freq = 2472},
++	{ .center_freq = 2484},
 +};
 +
-+static const struct data_queue_desc rt73usb_queue_bcn = {
-+	.entry_num		= 4 * BEACON_ENTRIES,
-+	.data_size		= MGMT_FRAME_SIZE,
-+	.desc_size		= TXINFO_SIZE,
-+	.priv_size		= sizeof(struct queue_entry_priv_usb_tx),
-+};
 +
- static const struct rt2x00_ops rt73usb_ops = {
- 	.name		= KBUILD_MODNAME,
--	.rxd_size	= RXD_DESC_SIZE,
--	.txd_size	= TXD_DESC_SIZE,
-+	.max_sta_intf	= 1,
-+	.max_ap_intf	= 4,
- 	.eeprom_size	= EEPROM_SIZE,
- 	.rf_size	= RF_SIZE,
-+	.rx		= &rt73usb_queue_rx,
-+	.tx		= &rt73usb_queue_tx,
-+	.bcn		= &rt73usb_queue_bcn,
- 	.lib		= &rt73usb_rt2x00_ops,
- 	.hw		= &rt73usb_mac80211_ops,
- #ifdef CONFIG_RT2X00_LIB_DEBUGFS
+ static void adm8211_eeprom_register_read(struct eeprom_93cx6 *eeprom)
+ {
+ 	struct adm8211_priv *priv = eeprom->data;
+@@ -155,17 +181,17 @@ static int adm8211_read_eeprom(struct ie
+ 	printk(KERN_DEBUG "%s (adm8211): Channel range: %d - %d\n",
+ 	       pci_name(priv->pdev), (int)chan_range.min, (int)chan_range.max);
+ 
+-	priv->modes[0].num_channels = chan_range.max - chan_range.min + 1;
+-	priv->modes[0].channels = priv->channels;
++	BUILD_BUG_ON(sizeof(priv->channels) != sizeof(adm8211_channels));
+ 
+-	memcpy(priv->channels, adm8211_channels, sizeof(adm8211_channels));
++	memcpy(priv->channels, adm8211_channels, sizeof(priv->channels));
++	priv->band.channels = priv->channels;
++	priv->band.n_channels = ARRAY_SIZE(adm8211_channels);
++	priv->band.bitrates = adm8211_rates;
++	priv->band.n_bitrates = ARRAY_SIZE(adm8211_rates);
+ 
+ 	for (i = 1; i <= ARRAY_SIZE(adm8211_channels); i++)
+-		if (i >= chan_range.min && i <= chan_range.max)
+-			priv->channels[i - 1].flag =
+-				IEEE80211_CHAN_W_SCAN |
+-				IEEE80211_CHAN_W_ACTIVE_SCAN |
+-				IEEE80211_CHAN_W_IBSS;
++		if (i < chan_range.min || i > chan_range.max)
++			priv->channels[i - 1].flags |= IEEE80211_CHAN_DISABLED;
+ 
+ 	switch (priv->eeprom->specific_bbptype) {
+ 	case ADM8211_BBP_RFMD3000:
+@@ -347,7 +373,6 @@ static void adm8211_interrupt_rci(struct
+ 	unsigned int pktlen;
+ 	struct sk_buff *skb, *newskb;
+ 	unsigned int limit = priv->rx_ring_size;
+-	static const u8 rate_tbl[] = {10, 20, 55, 110, 220};
+ 	u8 rssi, rate;
+ 
+ 	while (!(priv->rx_ring[entry].status & cpu_to_le32(RDES0_STATUS_OWN))) {
+@@ -425,12 +450,10 @@ static void adm8211_interrupt_rci(struct
+ 			else
+ 				rx_status.ssi = 100 - rssi;
+ 
+-			if (rate <= 4)
+-				rx_status.rate = rate_tbl[rate];
++			rx_status.rate_idx = rate;
+ 
+-			rx_status.channel = priv->channel;
+-			rx_status.freq = adm8211_channels[priv->channel - 1].freq;
+-			rx_status.phymode = MODE_IEEE80211B;
++			rx_status.freq = adm8211_channels[priv->channel - 1].center_freq;
++			rx_status.band = IEEE80211_BAND_2GHZ;
+ 
+ 			ieee80211_rx_irqsafe(dev, skb, &rx_status);
+ 		}
+@@ -1054,7 +1077,7 @@ static int adm8211_set_rate(struct ieee8
+ 	if (priv->pdev->revision != ADM8211_REV_BA) {
+ 		rate_buf[0] = ARRAY_SIZE(adm8211_rates);
+ 		for (i = 0; i < ARRAY_SIZE(adm8211_rates); i++)
+-			rate_buf[i + 1] = (adm8211_rates[i].rate / 5) | 0x80;
++			rate_buf[i + 1] = (adm8211_rates[i].bitrate / 5) | 0x80;
+ 	} else {
+ 		/* workaround for rev BA specific bug */
+ 		rate_buf[0] = 0x04;
+@@ -1303,9 +1326,10 @@ static int adm8211_set_ssid(struct ieee8
+ static int adm8211_config(struct ieee80211_hw *dev, struct ieee80211_conf *conf)
+ {
+ 	struct adm8211_priv *priv = dev->priv;
++	int channel = ieee80211_frequency_to_channel(conf->channel->center_freq);
+ 
+-	if (conf->channel != priv->channel) {
+-		priv->channel = conf->channel;
++	if (channel != priv->channel) {
++		priv->channel = channel;
+ 		adm8211_rf_set_channel(dev, priv->channel);
+ 	}
+ 
+@@ -1680,10 +1704,10 @@ static int adm8211_tx(struct ieee80211_h
+ 
+ 	if (control->tx_rate < 0) {
+ 		short_preamble = 1;
+-		plcp_signal = -control->tx_rate;
++		plcp_signal = -control->tx_rate->bitrate;
+ 	} else {
+ 		short_preamble = 0;
+-		plcp_signal = control->tx_rate;
++		plcp_signal = control->tx_rate->bitrate;
+ 	}
+ 
+ 	hdr = (struct ieee80211_hdr *)skb->data;
+@@ -1880,18 +1904,11 @@ static int __devinit adm8211_probe(struc
+ 	SET_IEEE80211_PERM_ADDR(dev, perm_addr);
+ 
+ 	dev->extra_tx_headroom = sizeof(struct adm8211_tx_hdr);
+-	dev->flags = IEEE80211_HW_DEFAULT_REG_DOMAIN_CONFIGURED;
+-	/* IEEE80211_HW_RX_INCLUDES_FCS in promisc mode */
++	/* dev->flags = IEEE80211_HW_RX_INCLUDES_FCS in promisc mode */
+ 
+ 	dev->channel_change_time = 1000;
+ 	dev->max_rssi = 100;	/* FIXME: find better value */
+ 
+-	priv->modes[0].mode = MODE_IEEE80211B;
+-	/* channel info filled in by adm8211_read_eeprom */
+-	memcpy(priv->rates, adm8211_rates, sizeof(adm8211_rates));
+-	priv->modes[0].num_rates = ARRAY_SIZE(adm8211_rates);
+-	priv->modes[0].rates = priv->rates;
+-
+ 	dev->queues = 1; /* ADM8211C supports more, maybe ADM8211B too */
+ 
+ 	priv->retry_limit = 3;
+@@ -1917,14 +1934,7 @@ static int __devinit adm8211_probe(struc
+ 		goto err_free_desc;
+ 	}
+ 
+-	priv->channel = priv->modes[0].channels[0].chan;
+-
+-	err = ieee80211_register_hwmode(dev, &priv->modes[0]);
+-	if (err) {
+-		printk(KERN_ERR "%s (adm8211): Can't register hwmode\n",
+-		       pci_name(pdev));
+-		goto err_free_desc;
+-	}
++	priv->channel = 1;
+ 
+ 	err = ieee80211_register_hw(dev);
+ 	if (err) {

linux-2.6-wireless.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.24 -r 1.25 linux-2.6-wireless.patch
Index: linux-2.6-wireless.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-8/linux-2.6-wireless.patch,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- linux-2.6-wireless.patch	18 Feb 2008 21:31:42 -0000	1.24
+++ linux-2.6-wireless.patch	21 Feb 2008 19:11:27 -0000	1.25
@@ -1,3 +1,170 @@
+commit fc71acc846c577473ada72a46c5ea9c935eca086
+Author: Michael Buesch <mb at bu3sch.de>
+Date:   Sat Feb 16 18:13:36 2008 +0100
+
+    ssb: Fix support for PCI devices behind a SSB->PCI bridge
+    
+    We must pin all resources and make sure the PCI subsystem
+    won't relocate us, as the addresses are hardwired into hardware.
+    
+    Signed-off-by: Michael Buesch <mb at bu3sch.de>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 5078ed50712aa3df1099540b524d01075aee653f
+Author: Johannes Berg <johannes at sipsolutions.net>
+Date:   Wed Feb 20 12:09:25 2008 +0100
+
+    zd1211rw: fix sparse warnings
+    
+    This silences sparse when run on zd1211rw.
+    
+    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 1955fd0b533d05828bff7ed290213d2a0fc0f04f
+Author: Johannes Berg <johannes at sipsolutions.net>
+Date:   Wed Feb 20 12:05:59 2008 +0100
+
+    rtl818x: fix sparse warnings
+    
+    This silences a few sparse warnings. There are two more where
+    I can't follow the code.
+    
+    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 7cb4461520f307a6e3fb2bb32cb8daee45aa1fae
+Author: Michael Buesch <mb at bu3sch.de>
+Date:   Tue Feb 19 17:46:48 2008 +0100
+
+    ssb: Fix pcicore cardbus mode
+    
+    This fixes the pcicore driver to not die a horrible
+    crash death when inserting a cardbus card.
+    
+    Signed-off-by: Michael Buesch <mb at bu3sch.de>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 53521d8c90d366191b6c134f88a8ebe83de60614
+Author: Michael Buesch <mb at bu3sch.de>
+Date:   Tue Feb 19 16:22:50 2008 +0100
+
+    ssb: Make the GPIO API reentrancy safe
+    
+    This fixes the GPIO API to be reentrancy safe.
+    
+    Signed-off-by: Michael Buesch <mb at bu3sch.de>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit c2bcbe65fc88d61f9a806367ff6eab76c9eabb3a
+Author: Michael Buesch <mb at bu3sch.de>
+Date:   Tue Feb 19 14:53:35 2008 +0100
+
+    ssb: Fix the GPIO API
+    
+    This fixes the GPIO API to be usable.
+    
+    Signed-off-by: Michael Buesch <mb at bu3sch.de>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 42bfad4f71637c4eb4791aa8062063c4a8526522
+Author: Michael Buesch <mb at bu3sch.de>
+Date:   Tue Feb 19 12:41:30 2008 +0100
+
+    ssb: Fix watchdog access for devices without a chipcommon
+    
+    This fixes the SSB watchdog access for devices without a chipcommon.
+    These devices have the watchdog on the extif.
+    
+    Signed-off-by: Michael Buesch <mb at bu3sch.de>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 58ff70d4feae29cbb7ace410fa6585ef3afb44b6
+Author: Michael Buesch <mb at bu3sch.de>
+Date:   Mon Feb 18 21:44:39 2008 +0100
+
+    ssb: Fix serial console on new bcm47xx devices
+    
+    This fixes the baud settings for new devices
+    like the Linksys WRT350n.
+    
+    Signed-off-by: Michael Buesch <mb at bu3sch.de>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 04f93a87a2db84e7214a4ec56fccd2289e973ce5
+Author: David Miller <davem at davemloft.net>
+Date:   Fri Feb 15 16:08:59 2008 -0800
+
+    ath5k: Fix build warnings on some 64-bit platforms.
+    
+    'u64' is not necessarily 'unsigned long long'
+    
+    drivers/net/wireless/ath5k/base.c: In function 'ath5k_beacon_update_timers':
+    drivers/net/wireless/ath5k/base.c:2130: warning: format '%llx' expects type 'long long unsigned int', but argument 4 has type 'u64'
+    drivers/net/wireless/ath5k/base.c:2130: warning: format '%llx' expects type 'long long unsigned int', but argument 5 has type 'u64'
+    drivers/net/wireless/ath5k/base.c: In function 'ath5k_intr':
+    drivers/net/wireless/ath5k/base.c:2391: warning: format '%llx' expects type 'long long unsigned int', but argument 6 has type 'u64'
+    
+    Signed-off-by: David S. Miller <davem at davemloft.net>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit b988763857426020e50a19434c8434a1e08e70eb
+Author: Jiri Slaby <jirislaby at gmail.com>
+Date:   Fri Feb 15 21:58:52 2008 +0100
+
+    WDEV, ath5k, don't return int from bool function
+    
+    sparse sees int -> bool cast as an error:
+    hw.c:3754:10: warning: cast truncates bits from constant value (ffffffea becomes 0)
+    Fix it by converting the rettype to int and check appropriately.
+    
+    Signed-off-by: Jiri Slaby <jirislaby at gmail.com>
+    Cc: Nick Kossifidis <mickflemm at gmail.com>
+    Cc: Luis R. Rodriguez <mcgrof at gmail.com>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 65872e6b434ca463123f7d03b530f143aabc6333
+Author: Jiri Slaby <jirislaby at gmail.com>
+Date:   Fri Feb 15 21:58:51 2008 +0100
+
+    WDEV: ath5k, fix lock imbalance
+    
+    Omitted lock causes sparse warning
+    drivers/net/wireless/ath5k/base.c:1682:1: warning: context imbalance in 'ath5k_tasklet_rx' - different lock contexts for basic block
+    
+    Add the lock to the guilty fail path.
+    
+    Signed-off-by: Jiri Slaby <jirislaby at gmail.com>
+    Acked-by: Nick Kossifidis <mickflemm at gmail.com>
+    Cc: Luis R. Rodriguez <mcgrof at gmail.com>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 387e100ac24a6c8f2b6f4ce572098447d2893008
+Author: John W. Linville <linville at tuxdriver.com>
+Date:   Wed Feb 20 15:06:02 2008 -0500
+
+    p54usb: add USB ID for Linksys WUSB54G ver 2
+    
+    Based on report from Cavan Carroll <cavancarroll at hotmail.com>:
+    
+    	http://bugzilla.kernel.org/show_bug.cgi?id=9863
+    
+    Cc: Cavan Carroll <cavancarroll at hotmail.com>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 1a17582e64dcc690a7edcd7dcf6fe89f1aa0ef97
+Author: Ivo Couckuyt <iv0co at yahoo.co.uk>
+Date:   Wed Feb 20 14:58:00 2008 -0500
+
+    p54usb: add USB ID for Phillips CPWUA054
+    
+    Retarget of an old patch against prism54usb in linux-wireless archive:
+    
+    	http://marc.info/?l=linux-wireless&m=117449935810254&w=2
+    
+    Cc: Ivo Couckuyt <iv0co at yahoo.co.uk>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
 commit 6fff1c64ffd899e0b70fbb0201c6603f078ea942
 Author: Stefano Brivio <stefano.brivio at polimi.it>
 Date:   Sat Feb 9 07:20:43 2008 +0100
@@ -7814,8 +7981,8 @@
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
 diff -up linux-2.6.24.noarch/include/linux/nl80211.h.orig linux-2.6.24.noarch/include/linux/nl80211.h
---- linux-2.6.24.noarch/include/linux/nl80211.h.orig	2008-02-18 15:32:35.000000000 -0500
-+++ linux-2.6.24.noarch/include/linux/nl80211.h	2008-02-18 15:32:43.000000000 -0500
+--- linux-2.6.24.noarch/include/linux/nl80211.h.orig	2008-02-21 13:54:41.000000000 -0500
++++ linux-2.6.24.noarch/include/linux/nl80211.h	2008-02-21 13:54:47.000000000 -0500
 @@ -7,6 +7,18 @@
   */
  
@@ -8017,8 +8184,8 @@
 +
  #endif /* __LINUX_NL80211_H */
 diff -up linux-2.6.24.noarch/include/linux/wireless.h.orig linux-2.6.24.noarch/include/linux/wireless.h
---- linux-2.6.24.noarch/include/linux/wireless.h.orig	2008-02-18 15:32:35.000000000 -0500
-+++ linux-2.6.24.noarch/include/linux/wireless.h	2008-02-18 15:32:43.000000000 -0500
+--- linux-2.6.24.noarch/include/linux/wireless.h.orig	2008-02-21 13:54:42.000000000 -0500
++++ linux-2.6.24.noarch/include/linux/wireless.h	2008-02-21 13:54:47.000000000 -0500
 @@ -541,6 +541,16 @@
  /* Maximum size of returned data */
[...3869 lines suppressed...]
++
++	spin_lock_irqsave(&bus->gpio_lock, flags);
++	if (ssb_chipco_available(&bus->chipco))
++		res = ssb_chipco_gpio_polarity(&bus->chipco, mask, value);
++	else if (ssb_extif_available(&bus->extif))
++		res = ssb_extif_gpio_polarity(&bus->extif, mask, value);
++	else
++		SSB_WARN_ON(1);
++	spin_unlock_irqrestore(&bus->gpio_lock, flags);
++
++	return res;
++}
++EXPORT_SYMBOL(ssb_gpio_polarity);
+diff -up linux-2.6.24.noarch/drivers/ssb/driver_extif.c.orig linux-2.6.24.noarch/drivers/ssb/driver_extif.c
+--- linux-2.6.24.noarch/drivers/ssb/driver_extif.c.orig	2008-01-24 17:58:37.000000000 -0500
++++ linux-2.6.24.noarch/drivers/ssb/driver_extif.c	2008-02-21 13:55:35.000000000 -0500
+@@ -27,12 +27,14 @@ static inline void extif_write32(struct 
+ 	ssb_write32(extif->dev, offset, value);
+ }
+ 
+-static inline void extif_write32_masked(struct ssb_extif *extif, u16 offset,
+-					u32 mask, u32 value)
++static inline u32 extif_write32_masked(struct ssb_extif *extif, u16 offset,
++				       u32 mask, u32 value)
+ {
+ 	value &= mask;
+ 	value |= extif_read32(extif, offset) & ~mask;
+ 	extif_write32(extif, offset, value);
++
++	return value;
+ }
+ 
+ #ifdef CONFIG_SSB_SERIAL
+@@ -110,20 +112,35 @@ void ssb_extif_get_clockcontrol(struct s
+ 	*m = extif_read32(extif, SSB_EXTIF_CLOCK_SB);
+ }
+ 
++void ssb_extif_watchdog_timer_set(struct ssb_extif *extif,
++				  u32 ticks)
++{
++	extif_write32(extif, SSB_EXTIF_WATCHDOG, ticks);
++}
++
+ u32 ssb_extif_gpio_in(struct ssb_extif *extif, u32 mask)
+ {
+ 	return extif_read32(extif, SSB_EXTIF_GPIO_IN) & mask;
+ }
+ 
+-void ssb_extif_gpio_out(struct ssb_extif *extif, u32 mask, u32 value)
++u32 ssb_extif_gpio_out(struct ssb_extif *extif, u32 mask, u32 value)
+ {
+ 	return extif_write32_masked(extif, SSB_EXTIF_GPIO_OUT(0),
+ 				   mask, value);
+ }
+ 
+-void ssb_extif_gpio_outen(struct ssb_extif *extif, u32 mask, u32 value)
++u32 ssb_extif_gpio_outen(struct ssb_extif *extif, u32 mask, u32 value)
+ {
+ 	return extif_write32_masked(extif, SSB_EXTIF_GPIO_OUTEN(0),
+ 				   mask, value);
+ }
+ 
++u32 ssb_extif_gpio_polarity(struct ssb_extif *extif, u32 mask, u32 value)
++{
++	return extif_write32_masked(extif, SSB_EXTIF_GPIO_INTPOL, mask, value);
++}
++
++u32 ssb_extif_gpio_intmask(struct ssb_extif *extif, u32 mask, u32 value)
++{
++	return extif_write32_masked(extif, SSB_EXTIF_GPIO_INTMASK, mask, value);
++}
+diff -up linux-2.6.24.noarch/drivers/ssb/driver_pcicore.c.orig linux-2.6.24.noarch/drivers/ssb/driver_pcicore.c
+--- linux-2.6.24.noarch/drivers/ssb/driver_pcicore.c.orig	2008-01-24 17:58:37.000000000 -0500
++++ linux-2.6.24.noarch/drivers/ssb/driver_pcicore.c	2008-02-21 13:55:35.000000000 -0500
+@@ -11,6 +11,7 @@
+ #include <linux/ssb/ssb.h>
+ #include <linux/pci.h>
+ #include <linux/delay.h>
++#include <linux/ssb/ssb_embedded.h>
+ 
+ #include "ssb_private.h"
+ 
+@@ -27,6 +28,18 @@ void pcicore_write32(struct ssb_pcicore 
+ 	ssb_write32(pc->dev, offset, value);
+ }
+ 
++static inline
++u16 pcicore_read16(struct ssb_pcicore *pc, u16 offset)
++{
++	return ssb_read16(pc->dev, offset);
++}
++
++static inline
++void pcicore_write16(struct ssb_pcicore *pc, u16 offset, u16 value)
++{
++	ssb_write16(pc->dev, offset, value);
++}
++
+ /**************************************************
+  * Code for hostmode operation.
+  **************************************************/
+@@ -66,6 +79,7 @@ int pcibios_plat_dev_init(struct pci_dev
+ 			base = &ssb_pcicore_pcibus_iobase;
+ 		else
+ 			base = &ssb_pcicore_pcibus_membase;
++		res->flags |= IORESOURCE_PCI_FIXED;
+ 		if (res->end) {
+ 			size = res->end - res->start + 1;
+ 			if (*base & (size - 1))
+@@ -88,10 +102,12 @@ int pcibios_plat_dev_init(struct pci_dev
+ 
+ static void __init ssb_fixup_pcibridge(struct pci_dev *dev)
+ {
++	u8 lat;
++
+ 	if (dev->bus->number != 0 || PCI_SLOT(dev->devfn) != 0)
+ 		return;
+ 
+-	ssb_printk(KERN_INFO "PCI: fixing up bridge\n");
++	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);
+@@ -101,7 +117,10 @@ static void __init ssb_fixup_pcibridge(s
+ 	pci_write_config_dword(dev, SSB_BAR1_CONTROL, 3);
+ 
+ 	/* Make sure our latency is high enough to handle the devices behind us */
+-	pci_write_config_byte(dev, PCI_LATENCY_TIMER, 0xa8);
++	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_fixup_pcibridge);
+ 
+@@ -117,8 +136,10 @@ static u32 get_cfgspace_addr(struct ssb_
+ 	u32 addr = 0;
+ 	u32 tmp;
+ 
+-	if (unlikely(pc->cardbusmode && dev > 1))
++	/* We do only have one cardbus device behind the bridge. */
++	if (pc->cardbusmode && (dev >= 1))
+ 		goto out;
++
+ 	if (bus == 0) {
+ 		/* Type 0 transaction */
+ 		if (unlikely(dev >= SSB_PCI_SLOT_MAX))
+@@ -279,14 +300,14 @@ static struct resource ssb_pcicore_mem_r
+ 	.name	= "SSB PCIcore external memory",
+ 	.start	= SSB_PCI_DMA,
+ 	.end	= SSB_PCI_DMA + SSB_PCI_DMA_SZ - 1,
+-	.flags	= IORESOURCE_MEM,
++	.flags	= IORESOURCE_MEM | IORESOURCE_PCI_FIXED,
+ };
+ 
+ static struct resource ssb_pcicore_io_resource = {
+ 	.name	= "SSB PCIcore external I/O",
+ 	.start	= 0x100,
+ 	.end	= 0x7FF,
+-	.flags	= IORESOURCE_IO,
++	.flags	= IORESOURCE_IO | IORESOURCE_PCI_FIXED,
+ };
+ 
+ static struct pci_controller ssb_pcicore_controller = {
+@@ -318,7 +339,16 @@ static void ssb_pcicore_init_hostmode(st
+ 	pcicore_write32(pc, SSB_PCICORE_ARBCTL, val);
+ 	udelay(1); /* Assertion time demanded by the PCI standard */
+ 
+-	/*TODO cardbus mode */
++	if (pc->dev->bus->has_cardbus_slot) {
++		ssb_dprintk(KERN_INFO PFX "CardBus slot detected\n");
++		pc->cardbusmode = 1;
++		/* GPIO 1 resets the bridge */
++		ssb_gpio_out(pc->dev->bus, 1, 1);
++		ssb_gpio_outen(pc->dev->bus, 1, 1);
++		pcicore_write16(pc, SSB_PCICORE_SPROM(0),
++				pcicore_read16(pc, SSB_PCICORE_SPROM(0))
++				| 0x0400);
++	}
+ 
+ 	/* 64MB I/O window */
+ 	pcicore_write32(pc, SSB_PCICORE_SBTOPCI0,
+@@ -344,7 +374,8 @@ static void ssb_pcicore_init_hostmode(st
+ 	/* Ok, ready to run, register it to the system.
+ 	 * The following needs change, if we want to port hostmode
+ 	 * to non-MIPS platform. */
+-	set_io_port_base((unsigned long)ioremap_nocache(SSB_PCI_MEM, 0x04000000));
++	ssb_pcicore_controller.io_map_base = (unsigned long)ioremap_nocache(SSB_PCI_MEM, 0x04000000);
++	set_io_port_base(ssb_pcicore_controller.io_map_base);
+ 	/* Give some time to the PCI controller to configure itself with the new
+ 	 * values. Not waiting at this point causes crashes of the machine. */
+ 	mdelay(10);
 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-02-18 15:32:36.000000000 -0500
-+++ linux-2.6.24.noarch/Documentation/feature-removal-schedule.txt	2008-02-18 15:32:44.000000000 -0500
+--- linux-2.6.24.noarch/Documentation/feature-removal-schedule.txt.orig	2008-02-21 13:54:42.000000000 -0500
++++ linux-2.6.24.noarch/Documentation/feature-removal-schedule.txt	2008-02-21 13:54:48.000000000 -0500
 @@ -332,4 +332,36 @@ Why:	This driver has been marked obsolet
  	2.4 or later kernels, provides richer features and is more robust.
  Who:	Stephen Hemminger <shemminger at linux-foundation.org>




More information about the fedora-extras-commits mailing list