SOURCES (LINUX_2_6): kernel-bcm43xx-patch_2.6.18.1_for_PCI-E.patch...

zbyniu zbyniu at pld-linux.org
Sat Dec 9 11:23:44 CET 2006


Author: zbyniu                       Date: Sat Dec  9 10:23:43 2006 GMT
Module: SOURCES                       Tag: LINUX_2_6
---- Log message:
- up, not all in sources

---- Files affected:
SOURCES:
   kernel-bcm43xx-patch_2.6.18.1_for_PCI-E.patch (1.1 -> 1.1.2.1) 

---- Diffs:

================================================================
Index: SOURCES/kernel-bcm43xx-patch_2.6.18.1_for_PCI-E.patch
diff -u SOURCES/kernel-bcm43xx-patch_2.6.18.1_for_PCI-E.patch:1.1 SOURCES/kernel-bcm43xx-patch_2.6.18.1_for_PCI-E.patch:1.1.2.1
--- SOURCES/kernel-bcm43xx-patch_2.6.18.1_for_PCI-E.patch:1.1	Mon Oct 16 00:36:49 2006
+++ SOURCES/kernel-bcm43xx-patch_2.6.18.1_for_PCI-E.patch	Sat Dec  9 11:23:38 2006
@@ -1,31 +1,3 @@
-Index: linux-2.6.18/drivers/net/wireless/bcm43xx/bcm43xx_dma.h
-===================================================================
---- linux-2.6.18.orig/drivers/net/wireless/bcm43xx/bcm43xx_dma.h
-+++ linux-2.6.18/drivers/net/wireless/bcm43xx/bcm43xx_dma.h
-@@ -314,6 +314,23 @@ int bcm43xx_dma_tx(struct bcm43xx_privat
- 		   struct ieee80211_txb *txb);
- void bcm43xx_dma_rx(struct bcm43xx_dmaring *ring);
- 
-+/* Helper function that returns the dma mask for this device. */
-+static inline
-+u64 bcm43xx_get_supported_dma_mask(struct bcm43xx_private *bcm)
-+{
-+	int dma64 = bcm43xx_read32(bcm, BCM43xx_CIR_SBTMSTATEHIGH) &
-+				   BCM43xx_SBTMSTATEHIGH_DMA64BIT;
-+	u16 mmio_base = bcm43xx_dmacontroller_base(dma64, 0);
-+	u32 mask = BCM43xx_DMA32_TXADDREXT_MASK;
-+
-+	if (dma64)
-+		return DMA_64BIT_MASK;
-+	bcm43xx_write32(bcm, mmio_base + BCM43xx_DMA32_TXCTL, mask);
-+	if (bcm43xx_read32(bcm, mmio_base + BCM43xx_DMA32_TXCTL) & mask)
-+		return DMA_32BIT_MASK;
-+	return DMA_30BIT_MASK;
-+}
-+
- #else /* CONFIG_BCM43XX_DMA */
- 
- 
 Index: linux-2.6.18/drivers/net/wireless/bcm43xx/bcm43xx_main.c
 ===================================================================
 --- linux-2.6.18.orig/drivers/net/wireless/bcm43xx/bcm43xx_main.c
@@ -96,22 +68,6 @@
  		bcm43xx_write32(bcm, BCM43xx_CIR_SBIMCONFIGLOW, sbimconfiglow);
  	}
  
-@@ -2924,10 +2925,13 @@ static int bcm43xx_wireless_core_init(st
- 		bcm43xx_write16(bcm, 0x043C, 0x000C);
- 
- 	if (active_wlcore) {
--		if (bcm43xx_using_pio(bcm))
-+		if (bcm43xx_using_pio(bcm)) {
- 			err = bcm43xx_pio_init(bcm);
--		else
-+		} else {
- 			err = bcm43xx_dma_init(bcm);
-+			if (err == -ENOSYS)
-+				err = bcm43xx_pio_init(bcm);
-+		}
- 		if (err)
- 			goto err_chip_cleanup;
- 	}
 @@ -2983,22 +2987,64 @@ static void bcm43xx_pcicore_broadcast_va
  
  static int bcm43xx_pcicore_commit_settings(struct bcm43xx_private *bcm)
@@ -266,87 +222,6 @@
  			phy_rev_ok = 0;
  		bcm->ieee->modulation = IEEE80211_OFDM_MODULATION |
  					IEEE80211_CCK_MODULATION;
-@@ -3986,8 +4058,6 @@ static int bcm43xx_init_private(struct b
- 				struct net_device *net_dev,
- 				struct pci_dev *pci_dev)
- {
--	int err;
--
- 	bcm43xx_set_status(bcm, BCM43xx_STAT_UNINIT);
- 	bcm->ieee = netdev_priv(net_dev);
- 	bcm->softmac = ieee80211_priv(net_dev);
-@@ -4005,22 +4075,8 @@ static int bcm43xx_init_private(struct b
- 		     (void (*)(unsigned long))bcm43xx_interrupt_tasklet,
- 		     (unsigned long)bcm);
- 	tasklet_disable_nosync(&bcm->isr_tasklet);
--	if (modparam_pio) {
-+	if (modparam_pio)
- 		bcm->__using_pio = 1;
--	} else {
--		err = pci_set_dma_mask(pci_dev, DMA_30BIT_MASK);
--		err |= pci_set_consistent_dma_mask(pci_dev, DMA_30BIT_MASK);
--		if (err) {
--#ifdef CONFIG_BCM43XX_PIO
--			printk(KERN_WARNING PFX "DMA not supported. Falling back to PIO.\n");
--			bcm->__using_pio = 1;
--#else
--			printk(KERN_ERR PFX "FATAL: DMA not supported and PIO not configured. "
--					    "Recompile the driver with PIO support, please.\n");
--			return -ENODEV;
--#endif /* CONFIG_BCM43XX_PIO */
--		}
--	}
- 	bcm->rts_threshold = BCM43xx_DEFAULT_RTS_THRESHOLD;
- 
- 	/* default to sw encryption for now */
-Index: linux-2.6.18/drivers/net/wireless/bcm43xx/bcm43xx_dma.c
-===================================================================
---- linux-2.6.18.orig/drivers/net/wireless/bcm43xx/bcm43xx_dma.c
-+++ linux-2.6.18/drivers/net/wireless/bcm43xx/bcm43xx_dma.c
-@@ -705,11 +705,30 @@ int bcm43xx_dma_init(struct bcm43xx_priv
- 	struct bcm43xx_dmaring *ring;
- 	int err = -ENOMEM;
- 	int dma64 = 0;
--	u32 sbtmstatehi;
-+	u64 mask = bcm43xx_get_supported_dma_mask(bcm);
-+	int nobits;
- 
--	sbtmstatehi = bcm43xx_read32(bcm, BCM43xx_CIR_SBTMSTATEHIGH);
--	if (sbtmstatehi & BCM43xx_SBTMSTATEHIGH_DMA64BIT)
-+	if (mask == DMA_64BIT_MASK) {
- 		dma64 = 1;
-+		nobits = 64;
-+	} else if (mask == DMA_32BIT_MASK)
-+		nobits = 32;
-+	else
-+		nobits = 30;
-+	err = pci_set_dma_mask(bcm->pci_dev, mask);
-+	err |= pci_set_consistent_dma_mask(bcm->pci_dev, mask);
-+	if (err) {
-+#ifdef CONFIG_BCM43XX_PIO
-+		printk(KERN_WARNING PFX "DMA not supported on this device."
-+					" Falling back to PIO.\n");
-+		bcm->__using_pio = 1;
-+		return -ENOSYS;
-+#else
-+		printk(KERN_ERR PFX "FATAL: DMA not supported and PIO not configured. "
-+				    "Please recompile the driver with PIO support.\n");
-+		return -ENODEV;
-+#endif /* CONFIG_BCM43XX_PIO */
-+	}
- 
- 	/* setup TX DMA channels. */
- 	ring = bcm43xx_setup_dmaring(bcm, 0, 1, dma64);
-@@ -755,8 +774,7 @@ int bcm43xx_dma_init(struct bcm43xx_priv
- 		dma->rx_ring3 = ring;
- 	}
- 
--	dprintk(KERN_INFO PFX "%s DMA initialized\n",
--			dma64 ? "64-bit" : "32-bit");
-+	dprintk(KERN_INFO PFX "%d-bit DMA initialized\n", nobits);
- 	err = 0;
- out:
- 	return err;
 Index: linux-2.6.18/drivers/net/wireless/bcm43xx/bcm43xx.h
 ===================================================================
 --- linux-2.6.18.orig/drivers/net/wireless/bcm43xx/bcm43xx.h
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/SOURCES/kernel-bcm43xx-patch_2.6.18.1_for_PCI-E.patch?r1=1.1&r2=1.1.2.1&f=u



More information about the pld-cvs-commit mailing list