rpms/kernel/devel linux-2.6-bcm43xx-mac80211-phy-rev-1-fix.patch, NONE, 1.1 git-iwlwifi-fixes.patch, 1.1, 1.2 kernel-2.6.spec, 1.3056, 1.3057

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Wed Apr 11 19:48:00 UTC 2007


Author: linville

Update of /cvs/dist/rpms/kernel/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv6363

Modified Files:
	git-iwlwifi-fixes.patch kernel-2.6.spec 
Added Files:
	linux-2.6-bcm43xx-mac80211-phy-rev-1-fix.patch 
Log Message:


linux-2.6-bcm43xx-mac80211-phy-rev-1-fix.patch:
 bcm43xx_phy.c |   50 +++++++++++++++++++++++++++++---------------------
 1 files changed, 29 insertions(+), 21 deletions(-)

--- NEW FILE linux-2.6-bcm43xx-mac80211-phy-rev-1-fix.patch ---
--- linux-2.6.20.noarch/drivers/net/wireless/mac80211/bcm43xx/bcm43xx_phy.c.orig	2007-04-11 14:52:39.000000000 -0400
+++ linux-2.6.20.noarch/drivers/net/wireless/mac80211/bcm43xx/bcm43xx_phy.c	2007-04-11 14:53:22.000000000 -0400
@@ -1362,7 +1362,7 @@ static void bcm43xx_phy_initb6(struct bc
 static void bcm43xx_calc_loopback_gain(struct bcm43xx_wldev *dev)
 {
 	struct bcm43xx_phy *phy = &dev->phy;
-	u16 backup_phy[16];
+	u16 backup_phy[16] = {0};
 	u16 backup_radio[3];
 	u16 backup_bband;
 	u16 i, j, loop_i_max;
@@ -1373,8 +1373,10 @@ static void bcm43xx_calc_loopback_gain(s
 	backup_phy[1] = bcm43xx_phy_read(dev, BCM43xx_PHY_CCKBBANDCFG);
 	backup_phy[2] = bcm43xx_phy_read(dev, BCM43xx_PHY_RFOVER);
 	backup_phy[3] = bcm43xx_phy_read(dev, BCM43xx_PHY_RFOVERVAL);
-	backup_phy[4] = bcm43xx_phy_read(dev, BCM43xx_PHY_ANALOGOVER);
-	backup_phy[5] = bcm43xx_phy_read(dev, BCM43xx_PHY_ANALOGOVERVAL);
+	if (phy->rev != 1) {
+		backup_phy[4] = bcm43xx_phy_read(dev, BCM43xx_PHY_ANALOGOVER);
+		backup_phy[5] = bcm43xx_phy_read(dev, BCM43xx_PHY_ANALOGOVERVAL);
+	}
 	backup_phy[6] = bcm43xx_phy_read(dev, BCM43xx_PHY_BASE(0x5A));
 	backup_phy[7] = bcm43xx_phy_read(dev, BCM43xx_PHY_BASE(0x59));
 	backup_phy[8] = bcm43xx_phy_read(dev, BCM43xx_PHY_BASE(0x58));
@@ -1402,14 +1404,16 @@ static void bcm43xx_calc_loopback_gain(s
 			  bcm43xx_phy_read(dev, BCM43xx_PHY_RFOVER) | 0x0001);
 	bcm43xx_phy_write(dev, BCM43xx_PHY_RFOVERVAL,
 			  bcm43xx_phy_read(dev, BCM43xx_PHY_RFOVERVAL) & 0xFFFE);
-	bcm43xx_phy_write(dev, BCM43xx_PHY_ANALOGOVER,
-			  bcm43xx_phy_read(dev, BCM43xx_PHY_ANALOGOVER) | 0x0001);
-	bcm43xx_phy_write(dev, BCM43xx_PHY_ANALOGOVERVAL,
-			  bcm43xx_phy_read(dev, BCM43xx_PHY_ANALOGOVERVAL) & 0xFFFE);
-	bcm43xx_phy_write(dev, BCM43xx_PHY_ANALOGOVER,
-			  bcm43xx_phy_read(dev, BCM43xx_PHY_ANALOGOVER) | 0x0002);
-	bcm43xx_phy_write(dev, BCM43xx_PHY_ANALOGOVERVAL,
-			  bcm43xx_phy_read(dev, BCM43xx_PHY_ANALOGOVERVAL) & 0xFFFD);
+	if (phy->rev != 1) {
+		bcm43xx_phy_write(dev, BCM43xx_PHY_ANALOGOVER,
+				  bcm43xx_phy_read(dev, BCM43xx_PHY_ANALOGOVER) | 0x0001);
+		bcm43xx_phy_write(dev, BCM43xx_PHY_ANALOGOVERVAL,
+				  bcm43xx_phy_read(dev, BCM43xx_PHY_ANALOGOVERVAL) & 0xFFFE);
+		bcm43xx_phy_write(dev, BCM43xx_PHY_ANALOGOVER,
+				  bcm43xx_phy_read(dev, BCM43xx_PHY_ANALOGOVER) | 0x0002);
+		bcm43xx_phy_write(dev, BCM43xx_PHY_ANALOGOVERVAL,
+				  bcm43xx_phy_read(dev, BCM43xx_PHY_ANALOGOVERVAL) & 0xFFFD);
+	}
 	bcm43xx_phy_write(dev, BCM43xx_PHY_RFOVER,
 			  bcm43xx_phy_read(dev, BCM43xx_PHY_RFOVER) | 0x000C);
 	bcm43xx_phy_write(dev, BCM43xx_PHY_RFOVER,
@@ -1426,10 +1430,12 @@ static void bcm43xx_calc_loopback_gain(s
 
 	bcm43xx_phy_write(dev, BCM43xx_PHY_BASE(0x0A),
 			  bcm43xx_phy_read(dev, BCM43xx_PHY_BASE(0x0A)) | 0x2000);
-	bcm43xx_phy_write(dev, BCM43xx_PHY_ANALOGOVER,
-			  bcm43xx_phy_read(dev, BCM43xx_PHY_ANALOGOVER) | 0x0004);
-	bcm43xx_phy_write(dev, BCM43xx_PHY_ANALOGOVERVAL,
-			  bcm43xx_phy_read(dev, BCM43xx_PHY_ANALOGOVERVAL) & 0xFFFB);
+	if (phy->rev != 1) {
+		bcm43xx_phy_write(dev, BCM43xx_PHY_ANALOGOVER,
+				  bcm43xx_phy_read(dev, BCM43xx_PHY_ANALOGOVER) | 0x0004);
+		bcm43xx_phy_write(dev, BCM43xx_PHY_ANALOGOVERVAL,
+				  bcm43xx_phy_read(dev, BCM43xx_PHY_ANALOGOVERVAL) & 0xFFFB);
+	}
 	bcm43xx_phy_write(dev, BCM43xx_PHY_BASE(0x03),
 			  (bcm43xx_phy_read(dev, BCM43xx_PHY_BASE(0x03))
 			   & 0xFF9F) | 0x40);
@@ -1522,8 +1528,10 @@ exit_loop1:
 		trsw_rx = 0x18;
 exit_loop2:
 
-	bcm43xx_phy_write(dev, BCM43xx_PHY_ANALOGOVER, backup_phy[4]);
-	bcm43xx_phy_write(dev, BCM43xx_PHY_ANALOGOVERVAL, backup_phy[5]);
+	if (phy->rev != 1) {
+		bcm43xx_phy_write(dev, BCM43xx_PHY_ANALOGOVER, backup_phy[4]);
+		bcm43xx_phy_write(dev, BCM43xx_PHY_ANALOGOVERVAL, backup_phy[5]);
+	}
 	bcm43xx_phy_write(dev, BCM43xx_PHY_BASE(0x5A), backup_phy[6]);
 	bcm43xx_phy_write(dev, BCM43xx_PHY_BASE(0x59), backup_phy[7]);
 	bcm43xx_phy_write(dev, BCM43xx_PHY_BASE(0x58), backup_phy[8]);
@@ -1576,7 +1584,7 @@ static void bcm43xx_phy_initg(struct bcm
 		bcm43xx_phy_write(dev, BCM43xx_PHY_RFOVER, 0x400);
 		bcm43xx_phy_write(dev, BCM43xx_PHY_PGACTL, 0xC0);
 	}
-	if (phy->gmode) {
+	if (phy->gmode && phy->rev >= 2) {
 		tmp = bcm43xx_phy_read(dev, BCM43xx_PHY_VERSION_OFDM);
 		tmp &= BCM43xx_PHYVER_VERSION;
 		if (tmp == 3 || tmp == 5) {
@@ -1635,7 +1643,7 @@ static void bcm43xx_phy_initg(struct bcm
 		else
 			bcm43xx_phy_write(dev, BCM43xx_PHY_BASE(0x2F), 0x202);
 	}
-	if (phy->gmode) {
+	if (phy->gmode && phy->rev != 1) {
 		bcm43xx_lo_adjust(dev);
 		bcm43xx_phy_write(dev, BCM43xx_PHY_LO_MASK, 0x8078);
 	}
@@ -1649,8 +1657,8 @@ static void bcm43xx_phy_initg(struct bcm
 		 */
 		bcm43xx_nrssi_hw_update(dev, 0xFFFF);//FIXME?
 		bcm43xx_calc_nrssi_threshold(dev);
-	} else {
-		if (phy->gmode && phy->nrssi[0] == -1000) {
+	} else if (phy->gmode && phy->rev != 1) {
+		if (phy->nrssi[0] == -1000) {
 			assert(phy->nrssi[1] == -1000);
 			bcm43xx_calc_nrssi_slope(dev);
 		} else

git-iwlwifi-fixes.patch:
 base.c    |    1 +
 iwlwifi.h |    2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

Index: git-iwlwifi-fixes.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/git-iwlwifi-fixes.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- git-iwlwifi-fixes.patch	23 Mar 2007 18:13:09 -0000	1.1
+++ git-iwlwifi-fixes.patch	11 Apr 2007 19:47:58 -0000	1.2
@@ -1,6 +1,6 @@
---- linux-2.6.20.noarch/drivers/net/wireless/mac80211/iwlwifi/base.c.orig	2007-03-22 14:13:12.000000000 -0400
-+++ linux-2.6.20.noarch/drivers/net/wireless/mac80211/iwlwifi/base.c	2007-03-22 14:13:23.000000000 -0400
-@@ -12377,6 +12377,7 @@ static int ipw_pci_probe(struct pci_dev 
+--- linux-2.6.20.noarch/drivers/net/wireless/mac80211/iwlwifi/base.c.orig	2007-04-11 15:15:22.000000000 -0400
++++ linux-2.6.20.noarch/drivers/net/wireless/mac80211/iwlwifi/base.c	2007-04-11 15:15:27.000000000 -0400
+@@ -12970,6 +12970,7 @@ static int ipw_pci_probe(struct pci_dev 
  	err = ipw_read_ucode(priv);
  	if (err) {
  		IPW_ERROR("Could not read microcode from disk: %d\n", err);
@@ -8,3 +8,14 @@
  		goto out_remove_sysfs;
  	}
  
+--- linux-2.6.20.noarch/drivers/net/wireless/mac80211/iwlwifi/iwlwifi.h.orig	2007-04-11 15:17:53.000000000 -0400
++++ linux-2.6.20.noarch/drivers/net/wireless/mac80211/iwlwifi/iwlwifi.h	2007-04-11 15:18:59.000000000 -0400
+@@ -180,7 +180,7 @@ do { if (ipw_debug_level & (level)) \
+ #define IPW_DL_QOS           (1<<31)
+ 
+ #define IPW_ERROR(f, a...) printk(KERN_ERR DRV_NAME ": " f, ## a)
+-#define IPW_WARNING(f, a...) printk(KERN_ERR DRV_NAME ": " f, ## a)
++#define IPW_WARNING(f, a...) printk(KERN_WARN DRV_NAME ": " f, ## a)
+ #define IPW_DEBUG_INFO(f, a...)    IPW_DEBUG(IPW_DL_INFO, f, ## a)
+ 
+ #define IPW_DEBUG_MAC80211(f, a...)     IPW_DEBUG(IPW_DL_MAC80211, f, ## a)


Index: kernel-2.6.spec
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/kernel-2.6.spec,v
retrieving revision 1.3056
retrieving revision 1.3057
diff -u -r1.3056 -r1.3057
--- kernel-2.6.spec	10 Apr 2007 18:09:20 -0000	1.3056
+++ kernel-2.6.spec	11 Apr 2007 19:47:58 -0000	1.3057
@@ -382,14 +382,15 @@
 Patch14: git-iwlwifi.patch
 Patch15: git-iwlwifi-fixes.patch
 Patch16: linux-2.6-rt2x00-scan-fix.patch
+Patch17: linux-2.6-bcm43xx-mac80211-phy-rev-1-fix.patch
 
-Patch17: linux-2.6-fix-pmops-1.patch
-Patch18: linux-2.6-fix-pmops-2.patch
-Patch19: linux-2.6-fix-pmops-3.patch
-Patch20: linux-2.6-fix-pmops-4.patch
+Patch18: linux-2.6-fix-pmops-1.patch
+Patch19: linux-2.6-fix-pmops-2.patch
+Patch20: linux-2.6-fix-pmops-3.patch
+Patch21: linux-2.6-fix-pmops-4.patch
 
 # enable sysrq-c on all kernels, not only kexec
-Patch21: linux-2.6-sysrq-c.patch
+Patch22: linux-2.6-sysrq-c.patch
 
 # Patches 100 through 500 are meant for architecture patches
 
@@ -983,14 +984,16 @@
 %patch15 -p1
 # fix up scanning in rt2x00
 %patch16 -p1
-# Power management fixes
+# fix oops on ppc for bcm43xx-mac80211 w/ phy rev 1
 %patch17 -p1
+# Power management fixes
 %patch18 -p1
 %patch19 -p1
 %patch20 -p1
+%patch21 -p1
 
 # sysrq works always
-%patch21 -p1
+%patch22 -p1
 
 # Architecture patches
 
@@ -2252,6 +2255,10 @@
 #  - tux.
 
 %changelog
+* Tue Apr 11 2007 John W. Linville <linville at redhat.com>
+- Add fix for bcm43xx-mac80211 oops on ppc w/ phy rev 1
+- Set IPW_WARNING to KERN_WARN to make iwlwifi less chatty
+
 * Tue Apr 10 2007 John W. Linville <linville at redhat.com>
 - Add fix for using WPA with mac80211 drivers
 




More information about the fedora-cvs-commits mailing list