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