rpms/kernel/F-9 linux-2.6-wireless-p54-fix-regression-due-to-delete-NETDEVICES_MULTIQUEUE-option.patch, NONE, 1.1 linux-2.6-wireless-revert-b43-add-RFKILL_STATE_HARD_BLOCKED-support.patch, NONE, 1.1 kernel.spec, 1.773, 1.774

Kyle McMartin kyle at fedoraproject.org
Tue Sep 23 17:32:55 UTC 2008


Author: kyle

Update of /cvs/pkgs/rpms/kernel/F-9
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv6625

Modified Files:
	kernel.spec 
Added Files:
	linux-2.6-wireless-p54-fix-regression-due-to-delete-NETDEVICES_MULTIQUEUE-option.patch 
	linux-2.6-wireless-revert-b43-add-RFKILL_STATE_HARD_BLOCKED-support.patch 
Log Message:
* Tue Sep 23 2008 Kyle McMartin <kyle at redhat.com> 2.6.26.5-47
- two more wireless fixes from John
   p54: Fix regression due to "net: Delete NETDEVICES_MULTIQUEUE kconfig option
   Revert "b43/b43legacy: add RFKILL_STATE_HARD_BLOCKED support"


linux-2.6-wireless-p54-fix-regression-due-to-delete-NETDEVICES_MULTIQUEUE-option.patch:

--- NEW FILE linux-2.6-wireless-p54-fix-regression-due-to-delete-NETDEVICES_MULTIQUEUE-option.patch ---
commit aaa1553512b9105699113ea7e2ea726f3d9d4de2
Author: Christian Lamparter <chunkeey at web.de>
Date:   Sat Aug 9 19:20:47 2008 -0500

    p54: Fix regression due to "net: Delete NETDEVICES_MULTIQUEUE kconfig option"
    
    Commit b19fa1f, entitled "net: Delete NETDEVICES_MULTIQUEUE kconfig
    option" breaks p54pci and p54usb.
    
    Additionally, the old logic always tx'ed cts frames (if enabled)
    with a short preamble when [rate > 3]. (i.e. with any 802.11g rate).
    Of course this isn't that bad, but it's still wrong!
    
    (This patch also clarifies the meanings of some of the fields in the tx
    header for the hardware. -- JWL)
    
    Signed-off-by: Christian Lamparter <chunkeey at web.de>
    Acked-by: Larry Finger <Larry.Finger at lwfinger.net>
    Cc: <stable at kernel.org>		[2.6.25.x, 2.6.26.x]
    Signed-off-by: John W. Linville <linville at tuxdriver.com>

diff --git a/drivers/net/wireless/p54/p54common.c b/drivers/net/wireless/p54/p54common.c
index 83cd85e..49afd20 100644
--- a/drivers/net/wireless/p54/p54common.c
+++ b/drivers/net/wireless/p54/p54common.c
@@ -413,12 +413,12 @@ static void p54_rx_frame_sent(struct ieee80211_hw *dev, struct sk_buff *skb)
 			last_addr = range->end_addr;
 			__skb_unlink(entry, &priv->tx_queue);
 			memset(&info->status, 0, sizeof(info->status));
-			priv->tx_stats[skb_get_queue_mapping(skb)].len--;
 			entry_hdr = (struct p54_control_hdr *) entry->data;
 			entry_data = (struct p54_tx_control_allocdata *) entry_hdr->data;
 			if ((entry_hdr->magic1 & cpu_to_le16(0x4000)) != 0)
 				pad = entry_data->align[0];
 
+			priv->tx_stats[entry_data->hw_queue - 4].len--;
 			if (!(info->flags & IEEE80211_TX_CTL_NO_ACK)) {
 				if (!(payload->status & 0x01))
 					info->flags |= IEEE80211_TX_STAT_ACK;
@@ -557,6 +557,7 @@ static int p54_tx(struct ieee80211_hw *dev, struct sk_buff *skb)
 	struct p54_tx_control_allocdata *txhdr;
 	size_t padding, len;
 	u8 rate;
+	u8 cts_rate = 0x20;
 
 	current_queue = &priv->tx_stats[skb_get_queue_mapping(skb)];
 	if (unlikely(current_queue->len > current_queue->limit))
@@ -581,28 +582,28 @@ static int p54_tx(struct ieee80211_hw *dev, struct sk_buff *skb)
 	hdr->type = (info->flags & IEEE80211_TX_CTL_NO_ACK) ? 0 : cpu_to_le16(1);
 	hdr->retry1 = hdr->retry2 = info->control.retry_limit;
 
-	memset(txhdr->wep_key, 0x0, 16);
-	txhdr->padding = 0;
-	txhdr->padding2 = 0;
-
 	/* TODO: add support for alternate retry TX rates */
 	rate = ieee80211_get_tx_rate(dev, info)->hw_value;
-	if (info->flags & IEEE80211_TX_CTL_SHORT_PREAMBLE)
+	if (info->flags & IEEE80211_TX_CTL_SHORT_PREAMBLE) {
 		rate |= 0x10;
-	if (info->flags & IEEE80211_TX_CTL_USE_RTS_CTS)
+		cts_rate |= 0x10;
+	}
+	if (info->flags & IEEE80211_TX_CTL_USE_RTS_CTS) {
 		rate |= 0x40;
-	else if (info->flags & IEEE80211_TX_CTL_USE_CTS_PROTECT)
+		cts_rate |= ieee80211_get_rts_cts_rate(dev, info)->hw_value;
+	} else if (info->flags & IEEE80211_TX_CTL_USE_CTS_PROTECT) {
 		rate |= 0x20;
+		cts_rate |= ieee80211_get_rts_cts_rate(dev, info)->hw_value;
+	}
 	memset(txhdr->rateset, rate, 8);
-	txhdr->wep_key_present = 0;
-	txhdr->wep_key_len = 0;
-	txhdr->frame_type = cpu_to_le32(skb_get_queue_mapping(skb) + 4);
-	txhdr->magic4 = 0;
-	txhdr->antenna = (info->antenna_sel_tx == 0) ?
+	txhdr->key_type = 0;
+	txhdr->key_len = 0;
+	txhdr->hw_queue = skb_get_queue_mapping(skb) + 4;
+	txhdr->tx_antenna = (info->antenna_sel_tx == 0) ?
 		2 : info->antenna_sel_tx - 1;
 	txhdr->output_power = 0x7f; // HW Maximum
-	txhdr->magic5 = (info->flags & IEEE80211_TX_CTL_NO_ACK) ?
-		0 : ((rate > 0x3) ? cpu_to_le32(0x33) : cpu_to_le32(0x23));
+	txhdr->cts_rate = (info->flags & IEEE80211_TX_CTL_NO_ACK) ?
+			  0 : cts_rate;
 	if (padding)
 		txhdr->align[0] = padding;
 
diff --git a/drivers/net/wireless/p54/p54common.h b/drivers/net/wireless/p54/p54common.h
index 2245fcc..8db6c0e 100644
--- a/drivers/net/wireless/p54/p54common.h
+++ b/drivers/net/wireless/p54/p54common.h
@@ -183,16 +183,16 @@ struct p54_frame_sent_hdr {
 
 struct p54_tx_control_allocdata {
 	u8 rateset[8];
-	u16 padding;
-	u8 wep_key_present;
-	u8 wep_key_len;
-	u8 wep_key[16];
-	__le32 frame_type;
-	u32 padding2;
-	__le16 magic4;
-	u8 antenna;
+	u8 unalloc0[2];
+	u8 key_type;
+	u8 key_len;
+	u8 key[16];
+	u8 hw_queue;
+	u8 unalloc1[9];
+	u8 tx_antenna;
 	u8 output_power;
-	__le32 magic5;
+	u8 cts_rate;
+	u8 unalloc2[3];
 	u8 align[0];
 } __attribute__ ((packed));
 

linux-2.6-wireless-revert-b43-add-RFKILL_STATE_HARD_BLOCKED-support.patch:

--- NEW FILE linux-2.6-wireless-revert-b43-add-RFKILL_STATE_HARD_BLOCKED-support.patch ---
commit e95926d05d028a6bf0ab60b21b484c3d622fdcd1
Author: Linus Torvalds <torvalds at linux-foundation.org>
Date:   Tue Sep 16 19:32:30 2008 -0700

    Revert "b43/b43legacy: add RFKILL_STATE_HARD_BLOCKED support"
    
    This reverts commit bc19d6e0b74ef03a3baf035412c95192b54dfc6f, which as
    Larry Finger reports causes the radio LED on his system to no longer
    respond to rfkill switch events.
    
    Reported-by: Larry Finger <Larry.Finger at lwfinger.net>
    Requested-by: John W. Linville <linville at tuxdriver.com>
    Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>

diff --git a/drivers/net/wireless/b43/rfkill.c b/drivers/net/wireless/b43/rfkill.c
index fec5645..34ae125 100644
--- a/drivers/net/wireless/b43/rfkill.c
+++ b/drivers/net/wireless/b43/rfkill.c
@@ -43,23 +43,6 @@ static bool b43_is_hw_radio_enabled(struct b43_wldev *dev)
 	return 0;
 }
 
-/* Update the rfkill state */
-static void b43_rfkill_update_state(struct b43_wldev *dev)
-{
-	struct b43_rfkill *rfk = &(dev->wl->rfkill);
-
-	if (!dev->radio_hw_enable) {
-		rfk->rfkill->state = RFKILL_STATE_HARD_BLOCKED;
-		return;
-	}
-
-	if (!dev->phy.radio_on)
-		rfk->rfkill->state = RFKILL_STATE_SOFT_BLOCKED;
-	else
-		rfk->rfkill->state = RFKILL_STATE_UNBLOCKED;
-
-}
-
 /* The poll callback for the hardware button. */
 static void b43_rfkill_poll(struct input_polled_dev *poll_dev)
 {
@@ -77,7 +60,6 @@ static void b43_rfkill_poll(struct input_polled_dev *poll_dev)
 	if (unlikely(enabled != dev->radio_hw_enable)) {
 		dev->radio_hw_enable = enabled;
 		report_change = 1;
-		b43_rfkill_update_state(dev);
 		b43info(wl, "Radio hardware status changed to %s\n",
 			enabled ? "ENABLED" : "DISABLED");
 	}
diff --git a/drivers/net/wireless/b43legacy/rfkill.c b/drivers/net/wireless/b43legacy/rfkill.c
index 476add9..b32bf6a 100644
--- a/drivers/net/wireless/b43legacy/rfkill.c
+++ b/drivers/net/wireless/b43legacy/rfkill.c
@@ -44,23 +44,6 @@ static bool b43legacy_is_hw_radio_enabled(struct b43legacy_wldev *dev)
 	return 0;
 }
 
-/* Update the rfkill state */
-static void b43legacy_rfkill_update_state(struct b43legacy_wldev *dev)
-{
-	struct b43legacy_rfkill *rfk = &(dev->wl->rfkill);
-
-	if (!dev->radio_hw_enable) {
-		rfk->rfkill->state = RFKILL_STATE_HARD_BLOCKED;
-		return;
-	}
-
-	if (!dev->phy.radio_on)
-		rfk->rfkill->state = RFKILL_STATE_SOFT_BLOCKED;
-	else
-		rfk->rfkill->state = RFKILL_STATE_UNBLOCKED;
-
-}
-
 /* The poll callback for the hardware button. */
 static void b43legacy_rfkill_poll(struct input_polled_dev *poll_dev)
 {
@@ -78,7 +61,6 @@ static void b43legacy_rfkill_poll(struct input_polled_dev *poll_dev)
 	if (unlikely(enabled != dev->radio_hw_enable)) {
 		dev->radio_hw_enable = enabled;
 		report_change = 1;
-		b43legacy_rfkill_update_state(dev);
 		b43legacyinfo(wl, "Radio hardware status changed to %s\n",
 			enabled ? "ENABLED" : "DISABLED");
 	}


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-9/kernel.spec,v
retrieving revision 1.773
retrieving revision 1.774
diff -u -r1.773 -r1.774
--- kernel.spec	23 Sep 2008 00:51:50 -0000	1.773
+++ kernel.spec	23 Sep 2008 17:32:24 -0000	1.774
@@ -652,9 +652,12 @@
 Patch681: linux-2.6-wireless-pending.patch
 #Patch682: linux-2.6-wireless-fixups.patch
 Patch683: linux-2.6-wireless-stable-backports.patch
-Patch685: linux-2.6-rt2500usb-fix.patch
-Patch686: linux-2.6-wireless-rt2500pci-restoring-missing-line.patch
-Patch690: linux-2.6-at76.patch
+Patch685: linux-2.6-wireless-rt2500pci-restoring-missing-line.patch
+Patch686: linux-2.6-wireless-p54-fix-regression-due-to-delete-NETDEVICES_MULTIQUEUE-option.patch
+Patch687: linux-2.6-wireless-revert-b43-add-RFKILL_STATE_HARD_BLOCKED-support.patch
+
+Patch698: linux-2.6-rt2500usb-fix.patch
+Patch699: linux-2.6-at76.patch
 
 Patch700: linux-2.6-nfs-client-mounts-hang.patch
 
@@ -1249,6 +1252,10 @@
 
 # bf4634afd8bb72936d2d56425ec792ca1bfa92a2
 ApplyPatch linux-2.6-wireless-rt2500pci-restoring-missing-line.patch
+# e95926d05d028a6bf0ab60b21b484c3d622fdcd1
+ApplyPatch linux-2.6-wireless-revert-b43-add-RFKILL_STATE_HARD_BLOCKED-support.patch
+# aaa1553512b9105699113ea7e2ea726f3d9d4de2
+ApplyPatch linux-2.6-wireless-p54-fix-regression-due-to-delete-NETDEVICES_MULTIQUEUE-option.patch
 
 # implement smarter atime updates support.
 ApplyPatch linux-2.6-smarter-relatime.patch
@@ -1885,6 +1892,11 @@
 %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 Sep 23 2008 Kyle McMartin <kyle at redhat.com> 2.6.26.5-47
+- two more wireless fixes from John
+   p54: Fix regression due to "net: Delete NETDEVICES_MULTIQUEUE kconfig option
+   Revert "b43/b43legacy: add RFKILL_STATE_HARD_BLOCKED support"
+  
 * Mon Sep 22 2008 Chuck Ebbert <cebbert at redhat.com> 2.6.26.5-46
 - pcmcia: Fix broken abuse of dev->driver_data (#462178)
 




More information about the fedora-extras-commits mailing list