rpms/kernel/devel kernel.spec, 1.656, 1.657 linux-2.6-wireless-pending.patch, 1.48, 1.49

John W. Linville (linville) fedora-extras-commits at redhat.com
Tue May 27 16:54:38 UTC 2008


Author: linville

Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv26723

Modified Files:
	kernel.spec linux-2.6-wireless-pending.patch 
Log Message:
wireless updates from 2008-05-22


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.656
retrieving revision 1.657
diff -u -r1.656 -r1.657
--- kernel.spec	26 May 2008 20:20:03 -0000	1.656
+++ kernel.spec	27 May 2008 16:53:53 -0000	1.657
@@ -1766,6 +1766,10 @@
 %kernel_variant_files -a /%{image_install_path}/xen*-%{KVERREL}.xen -e /etc/ld.so.conf.d/kernelcap-%{KVERREL}.xen.conf %{with_xen} xen
 
 %changelog
+* Tue May 27 2008 John W. Linville <linville at redhat.com>
+- Upstream wireless updates from 2008-05-22
+  (http://marc.info/?l=linux-wireless&m=121146112404515&w=2)
+
 * Mon May 26 2008 Dave Jones <davej at redhat.com>
 - 2.6.26-rc4
 

linux-2.6-wireless-pending.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.48 -r 1.49 linux-2.6-wireless-pending.patch
Index: linux-2.6-wireless-pending.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-wireless-pending.patch,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -r1.48 -r1.49
--- linux-2.6-wireless-pending.patch	21 May 2008 19:24:22 -0000	1.48
+++ linux-2.6-wireless-pending.patch	27 May 2008 16:53:53 -0000	1.49
@@ -1,19162 +1,8065 @@
-commit 297c3669dd481e977927dc123ed3deed10833e2a
-Author: Holger Schurig <hs4233 at mail.mn-solutions.de>
-Date:   Wed May 14 16:27:18 2008 +0200
+commit 9e72ebd686a7f39facdfff639386055f1ad7dc88
+Author: Johannes Berg <johannes at sipsolutions.net>
+Date:   Wed May 21 17:33:42 2008 +0200
 
-    libertas: remove lbs_get_data_rate()
+    mac80211: remove channel use statistics
     
-    lbs_get_data_rate() gets called, but no-one uses it's result.
+    The useless channel use statistics are quite a lot of code, currently
+    use integer divisions in the packet fast path, are rather inaccurate
+    since they do not account for retries and finally nobody even cares.
+    Hence, remove them completely.
     
-    Signed-off-by: Holger Schurig <hs4233 at mail.mn-solutions.de>
+    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 7cb92ee3af4f32ae278c6aad4d9c49fb52a99a66
-Author: Harvey Harrison <harvey.harrison at gmail.com>
-Date:   Tue May 13 18:13:35 2008 -0700
+commit 53c068566dde708cb28a4dfc06ae3d7fd7434397
+Author: Michael Buesch <mb at bu3sch.de>
+Date:   Tue May 20 00:24:36 2008 +0200
 
-    b43: use the bitrev helpers rather than rolling a private one
+    b43: Add firmware markers support
     
-    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.
+    This adds support for firmware markers.
+    With firmware markers it's easily possible to check whether the
+    firmware runs some codepath or not. The driver will throw a message
+    when the firmware executes a MARKER(x).
     
-    Signed-off-by: Harvey Harrison <harvey.harrison at gmail.com>
-    Reviewed-by: Michael Buesch <mb at bu3sch.de>
+    Signed-off-by: Michael Buesch <mb at bu3sch.de>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 8c122e14ca821402b9181f16494d9f11169deeae
-Author: Bob Copeland <me at bobcopeland.com>
-Date:   Mon May 12 21:16:44 2008 -0400
+commit afa83e239af58a93eddd10a7a43ac5618884db15
+Author: Michael Buesch <mb at bu3sch.de>
+Date:   Mon May 19 23:51:37 2008 +0200
 
-    ath5k: Fix loop variable initializations
-    
-    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.
+    b43: Add panic reason code that doesn't trigger restart
     
-    We currently initialize all but two fields in the structures, so fix
-    the other two.
+    Add a firmware panic reason code that doesn't trigger a restart.
+    This is useful for firmware debugging and avoiding endless
+    restart loops. We can use FWPANIC_DIE to halt the firmware at a
+    well defined point.
     
-    Signed-off-by: Bob Copeland <me at bobcopeland.com>
+    Signed-off-by: Michael Buesch <mb at bu3sch.de>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 01669110ba331be385af8d5310ff6c3b93b09620
-Author: Ivo van Doorn <ivdoorn at gmail.com>
-Date:   Tue May 13 15:03:02 2008 +0200
+commit 6821783271aaf541504ff8a138184fcc83fa282b
+Author: Michael Buesch <mb at bu3sch.de>
+Date:   Sat May 17 23:43:57 2008 +0200
 
-    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.
-    
-    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.
+    b43: Allow running without PCM firmware
     
-    v2: Monitor interfaces should also set IEEE80211_TXPD_REQ_TX_STATUS
+    This patch adds code to allow running the device without PCM firmware loaded.
+    Without PCM firmware we don't have hardware accelerated crypto on
+    devices with a core rev <= 10.
     
-    Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
-    Acked-by: Johannes Berg <johannes at sipsolutions.net>
+    Signed-off-by: Michael Buesch <mb at bu3sch.de>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 5e15aedb1d67c2d31643edc3fa282647b0f3befb
-Author: Huang Weiyi <weiyi.huang at gmail.com>
-Date:   Sat May 10 11:12:31 2008 +0200
+commit e48b0eeb0ab508021b654a45f332b30cac2163b9
+Author: Michael Buesch <mb at bu3sch.de>
+Date:   Sat May 17 22:44:35 2008 +0200
 
-    b43: nphy.c remove duplicated include
+    b43: Add hooks for firmware debugging
     
-    Remove duplicated include <linux/delay.h> in
-    drivers/net/wireless/b43/nphy.c
+    This patch adds some hooks for firmware debugging.
     
-    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 7ce2d429578b4e32ea68d60e7f16a2a7bb17dada
-Author: Eric W. Biederman <ebiederm at xmission.com>
-Date:   Thu May 8 14:30:18 2008 -0700
+commit e2530083609148a7835b54c431f6b8956407c1f6
+Author: Johannes Berg <johannes at sipsolutions.net>
+Date:   Sat May 17 00:57:14 2008 +0200
 
-    wireless: Add missing locking to cfg80211_dev_rename
-    
-    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.
+    mac80211: use multi-queue master netdevice
     
-    Instead implement all of the needed validity checking
-    and locking in cfg80211_dev_rename.
+    This patch updates mac80211 and drivers to be multi-queue aware and
+    use that instead of the internal queue mapping. Also does a number
+    of cleanups in various pieces of the code that fall out and reduces
+    internal mac80211 state size.
     
-    Signed-off-by: Eric W. Biederman <ebiederm at xmission.com>
-    Acked-by: Johannes Berg <johannes at sipsolutions.net>
+    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 54a5c8046dce102c1a435ca5a95f5c0699662d21
-Author: Bruno Randolf <br1 at einfach.org>
-Date:   Thu May 8 19:22:43 2008 +0200
+commit eefce91a384a64c7bbf913eb08c4adfb911c3639
+Author: Johannes Berg <johannes at sipsolutions.net>
+Date:   Sat May 17 00:57:13 2008 +0200
 
-    mac80211: make rx radiotap header more flexible
+    mac80211: dont allow fragmentation and requeuing on A-MPDU queues
     
-    use hw flags and rx flags to determine which fields are present in the header
-    and use all available information from the driver.
-    
-    make sure radiotap header starts at a naturally aligned address (mod 8) for
-    all radiotap fields.
+    There really is no reason for a driver to reject a frame on
+    an A-MPDU queue when it can stop that queue for any period
+    of time and is given frames one by one. Hence, disallow it
+    with a big warning and reduce mac80211-internal state.
+    
+    Also add a warning when we try to fragment a frame destined
+    for an A-MPDU queue and drop it, the actual bug needs to be
+    fixed elsewhere but I'm not exactly sure how to yet.
     
-    Signed-off-by: Bruno Randolf <br1 at einfach.org>
+    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+    Cc: Ron Rindjunsky <ron.rindjunsky at intel.com>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 7ccf488058d5539b1145c1605a5574ce90b68460
-Author: Bruno Randolf <br1 at einfach.org>
-Date:   Thu May 8 19:15:40 2008 +0200
+commit e93048825face354ecb0cb3ac00190c764a44f45
+Author: Larry.Finger at lwfinger.net <Larry.Finger at lwfinger.net>
+Date:   Thu May 15 14:07:36 2008 -0500
 
-    mac80211: use hardware flags for signal/noise units
-    
-    trying to clean up the signal/noise code. the previous code in mac80211 had
[...74776 lines suppressed...]
+@@ -143,8 +143,11 @@ void cfg80211_put_dev(struct cfg80211_re
+ int cfg80211_dev_rename(struct cfg80211_registered_device *rdev,
+ 			char *newname)
+ {
++	struct cfg80211_registered_device *drv;
+ 	int idx, taken = -1, result, digits;
  
- 		ieee80211_tx_status(sc->hw, skb, &txs);
--		sc->tx_stats.data[txq->qnum].count++;
-+		sc->tx_stats[txq->qnum].count++;
++	mutex_lock(&cfg80211_drv_mutex);
++
+ 	/* prohibit calling the thing phy%d when %d is not its number */
+ 	sscanf(newname, PHY_NAME "%d%n", &idx, &taken);
+ 	if (taken == strlen(newname) && idx != rdev->idx) {
+@@ -156,14 +159,30 @@ int cfg80211_dev_rename(struct cfg80211_
+ 		 * deny the name if it is phy<idx> where <idx> is printed
+ 		 * without leading zeroes. taken == strlen(newname) here
+ 		 */
++		result = -EINVAL;
+ 		if (taken == strlen(PHY_NAME) + digits)
+-			return -EINVAL;
++			goto out_unlock;
++	}
++
++
++	/* Ignore nop renames */
++	result = 0;
++	if (strcmp(newname, dev_name(&rdev->wiphy.dev)) == 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)
++			goto out_unlock;
+ 	}
  
- 		spin_lock(&sc->txbuflock);
--		sc->tx_stats.data[txq->qnum].len--;
-+		sc->tx_stats[txq->qnum].len--;
- 		list_move_tail(&bf->list, &sc->txbuf);
- 		sc->txbuf_len++;
- 		spin_unlock(&sc->txbuflock);
-diff -up linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.h.orig linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.h
---- linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.h.orig	2008-05-21 11:36:23.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.h	2008-05-21 14:47:01.000000000 -0400
-@@ -92,7 +92,8 @@ struct ath5k_softc {
- 	struct pci_dev		*pdev;		/* for dma mapping */
- 	void __iomem		*iobase;	/* address of the device */
- 	struct mutex		lock;		/* dev-level lock */
--	struct ieee80211_tx_queue_stats tx_stats;
-+	/* FIXME: how many does it really need? */
-+	struct ieee80211_tx_queue_stats tx_stats[16];
- 	struct ieee80211_low_level_stats ll_stats;
- 	struct ieee80211_hw	*hw;		/* IEEE 802.11 common */
- 	struct ieee80211_supported_band sbands[IEEE80211_NUM_BANDS];
-diff -up linux-2.6.25.noarch/drivers/net/wireless/arlan.h.orig linux-2.6.25.noarch/drivers/net/wireless/arlan.h
---- linux-2.6.25.noarch/drivers/net/wireless/arlan.h.orig	2008-04-16 22:49:44.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/arlan.h	2008-05-21 14:47:01.000000000 -0400
-@@ -330,7 +330,6 @@ struct TxParam
- #define TX_RING_SIZE 2
- /* Information that need to be kept for each board. */
- struct arlan_private {
--      struct net_device_stats stats;
-       struct arlan_shmem __iomem * card;
-       struct arlan_shmem * conf;
+-	/* this will check for collisions */
++	/* this will only check for collisions in sysfs
++	 * which is not even always compiled in.
++	 */
+ 	result = device_rename(&rdev->wiphy.dev, newname);
+ 	if (result)
+-		return result;
++		goto out_unlock;
  
-diff -up linux-2.6.25.noarch/drivers/net/wireless/adm8211.c.orig linux-2.6.25.noarch/drivers/net/wireless/adm8211.c
---- linux-2.6.25.noarch/drivers/net/wireless/adm8211.c.orig	2008-05-21 11:36:23.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/adm8211.c	2008-05-21 14:47:01.000000000 -0400
-@@ -306,11 +306,10 @@ static int adm8211_get_tx_stats(struct i
- 				struct ieee80211_tx_queue_stats *stats)
- {
- 	struct adm8211_priv *priv = dev->priv;
--	struct ieee80211_tx_queue_stats_data *data = &stats->data[0];
+ 	if (!debugfs_rename(rdev->wiphy.debugfsdir->d_parent,
+ 			    rdev->wiphy.debugfsdir,
+@@ -172,9 +191,13 @@ int cfg80211_dev_rename(struct cfg80211_
+ 		printk(KERN_ERR "cfg80211: failed to rename debugfs dir to %s!\n",
+ 		       newname);
  
--	data->len = priv->cur_tx - priv->dirty_tx;
--	data->limit = priv->tx_ring_size - 2;
--	data->count = priv->dirty_tx;
-+	stats[0].len = priv->cur_tx - priv->dirty_tx;
-+	stats[0].limit = priv->tx_ring_size - 2;
-+	stats[0].count = priv->dirty_tx;
+-	nl80211_notify_dev_rename(rdev);
++	result = 0;
++out_unlock:
++	mutex_unlock(&cfg80211_drv_mutex);
++	if (result == 0)
++		nl80211_notify_dev_rename(rdev);
  
- 	return 0;
+-	return 0;
++	return result;
  }
-@@ -446,9 +445,9 @@ static void adm8211_interrupt_rci(struct
- 			struct ieee80211_rx_status rx_status = {0};
  
- 			if (priv->pdev->revision < ADM8211_REV_CA)
--				rx_status.ssi = rssi;
-+				rx_status.signal = rssi;
- 			else
--				rx_status.ssi = 100 - rssi;
-+				rx_status.signal = 100 - rssi;
- 
- 			rx_status.rate_idx = rate;
+ /* exported functions */
+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-27 12:18:05.000000000 -0400
++++ linux-2.6.25.noarch/net/wireless/radiotap.c	2008-05-27 12:18:25.000000000 -0400
+@@ -59,23 +59,21 @@ int ieee80211_radiotap_iterator_init(
+ 		return -EINVAL;
  
-@@ -1894,9 +1893,10 @@ static int __devinit adm8211_probe(struc
+ 	/* sanity check for allowed length and radiotap length field */
+-	if (max_length < le16_to_cpu(get_unaligned(&radiotap_header->it_len)))
++	if (max_length < get_unaligned_le16(&radiotap_header->it_len))
+ 		return -EINVAL;
  
- 	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;
+ 	iterator->rtheader = radiotap_header;
+-	iterator->max_length = le16_to_cpu(get_unaligned(
+-						&radiotap_header->it_len));
++	iterator->max_length = get_unaligned_le16(&radiotap_header->it_len);
+ 	iterator->arg_index = 0;
+-	iterator->bitmap_shifter = le32_to_cpu(get_unaligned(
+-						&radiotap_header->it_present));
++	iterator->bitmap_shifter = get_unaligned_le32(&radiotap_header->it_present);
+ 	iterator->arg = (u8 *)radiotap_header + sizeof(*radiotap_header);
+ 	iterator->this_arg = NULL;
  
- 	dev->channel_change_time = 1000;
--	dev->max_rssi = 100;	/* FIXME: find better value */
-+	dev->max_signal = 100;    /* FIXME: find better value */
+ 	/* find payload start allowing for extended bitmap(s) */
  
- 	dev->queues = 1; /* ADM8211C supports more, maybe ADM8211B too */
+ 	if (unlikely(iterator->bitmap_shifter & (1<<IEEE80211_RADIOTAP_EXT))) {
+-		while (le32_to_cpu(get_unaligned((__le32 *)iterator->arg)) &
+-				   (1<<IEEE80211_RADIOTAP_EXT)) {
++		while (get_unaligned_le32(iterator->arg) &
++		       (1 << IEEE80211_RADIOTAP_EXT)) {
+ 			iterator->arg += sizeof(u32);
  
-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-21 11:36:24.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/ssb/pci.c	2008-05-21 14:47:01.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");
+ 			/*
+@@ -241,8 +239,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 = le32_to_cpu(
+-					get_unaligned(iterator->next_bitmap));
++				iterator->bitmap_shifter =
++				    get_unaligned_le32(iterator->next_bitmap);
+ 				iterator->next_bitmap++;
+ 			} else
+ 				/* no more bitmaps: end */




More information about the fedora-extras-commits mailing list