On Wednesday 21 November 2007 20:31:53 Larry Finger wrote: > The BCM94311MCG rev 02 chip has an 802.11 core with revision 13 and > has not been supported until now. The changes include the following: > > (1) Add the 802.11 rev 13 device to the ssb_device_id table to load b43. > (2) Add PHY revision 9 to the supported list. > (3) Fix 64-bit addressing errors. > (4) Remove some magic numbers in the DMA setup. > > The DMA implementation for this chip supports full 64-bit addressing with > one exception. Whenever the Descriptor Ring Buffer is in high memory, a > fatal DMA error occurs. This problem was not present in 2.6.24-rc2 due > to code to "Bias the placement of kernel pages at lower PFNs". When > commit 44048d70 reverted that code, the DMA error appeared. As a "fix", > use the GFP_DMA flag when allocating the buffer for 64-bit DMA. At present, > this problem is thought to arise from a hardware error. The present driver > allocates one ring buffer for RX and six for TX; however, only one of the > TX buffers is used. To minimize any system impact associated with using low > memory, this patch removes the allocation of the unused buffers. > > This patch has been tested by Cédric Caumont <icare40@xxxxxxxxxxx>. > > @@ -954,19 +955,21 @@ int b43_dma_init(struct b43_wldev *dev) > > err = -ENOMEM; > /* setup TX DMA channels. */ > - ring = b43_setup_dmaring(dev, 0, 1, dma64); > + ring = b43_setup_dmaring(dev, 1, 1, dma64); > if (!ring) > goto out; > - dma->tx_ring0 = ring; > + dma->tx_ring1 = ring; > > - ring = b43_setup_dmaring(dev, 1, 1, dma64); > + /* The driver only uses ring1 for TX - skip setup for the rest */ > +#if 0 NACK. > + ring = b43_setup_dmaring(dev, 0, 1, dma64); > if (!ring) > - goto err_destroy_tx0; > - dma->tx_ring1 = ring; > + goto err_destroy_tx1; > + dma->tx_ring0 = ring; > > ring = b43_setup_dmaring(dev, 2, 1, dma64); > if (!ring) > - goto err_destroy_tx1; > + goto err_destroy_tx0; > dma->tx_ring2 = ring; > > ring = b43_setup_dmaring(dev, 3, 1, dma64); > @@ -983,6 +986,7 @@ int b43_dma_init(struct b43_wldev *dev) > if (!ring) > goto err_destroy_tx4; > dma->tx_ring5 = ring; > +#endif -- Greetings Michael. - To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html