Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 34a5d713 authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/linville/wireless-2.6

parents 7775c975 cb62eccd
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -630,7 +630,6 @@ struct b43_pio {

/* Context information for a noise calculation (Link Quality). */
struct b43_noise_calculation {
	u8 channel_at_start;
	bool calculation_running;
	u8 nr_samples;
	s8 samples[8][4];
+32 −33
Original line number Diff line number Diff line
@@ -795,24 +795,49 @@ struct b43_dmaring *b43_setup_dmaring(struct b43_wldev *dev,
{
	struct b43_dmaring *ring;
	int err;
	int nr_slots;
	dma_addr_t dma_test;

	ring = kzalloc(sizeof(*ring), GFP_KERNEL);
	if (!ring)
		goto out;
	ring->type = type;

	nr_slots = B43_RXRING_SLOTS;
	ring->nr_slots = B43_RXRING_SLOTS;
	if (for_tx)
		nr_slots = B43_TXRING_SLOTS;
		ring->nr_slots = B43_TXRING_SLOTS;

	ring->meta = kcalloc(nr_slots, sizeof(struct b43_dmadesc_meta),
	ring->meta = kcalloc(ring->nr_slots, sizeof(struct b43_dmadesc_meta),
			     GFP_KERNEL);
	if (!ring->meta)
		goto err_kfree_ring;

	ring->type = type;
	ring->dev = dev;
	ring->mmio_base = b43_dmacontroller_base(type, controller_index);
	ring->index = controller_index;
	if (type == B43_DMA_64BIT)
		ring->ops = &dma64_ops;
	else
		ring->ops = &dma32_ops;
	if (for_tx) {
		ring->txhdr_cache = kcalloc(nr_slots,
		ring->tx = 1;
		ring->current_slot = -1;
	} else {
		if (ring->index == 0) {
			ring->rx_buffersize = B43_DMA0_RX_BUFFERSIZE;
			ring->frameoffset = B43_DMA0_RX_FRAMEOFFSET;
		} else if (ring->index == 3) {
			ring->rx_buffersize = B43_DMA3_RX_BUFFERSIZE;
			ring->frameoffset = B43_DMA3_RX_FRAMEOFFSET;
		} else
			B43_WARN_ON(1);
	}
	spin_lock_init(&ring->lock);
#ifdef CONFIG_B43_DEBUG
	ring->last_injected_overflow = jiffies;
#endif

	if (for_tx) {
		ring->txhdr_cache = kcalloc(ring->nr_slots,
					    b43_txhdr_size(dev),
					    GFP_KERNEL);
		if (!ring->txhdr_cache)
@@ -828,7 +853,7 @@ struct b43_dmaring *b43_setup_dmaring(struct b43_wldev *dev,
					  b43_txhdr_size(dev), 1)) {
			/* ugh realloc */
			kfree(ring->txhdr_cache);
			ring->txhdr_cache = kcalloc(nr_slots,
			ring->txhdr_cache = kcalloc(ring->nr_slots,
						    b43_txhdr_size(dev),
						    GFP_KERNEL | GFP_DMA);
			if (!ring->txhdr_cache)
@@ -853,32 +878,6 @@ struct b43_dmaring *b43_setup_dmaring(struct b43_wldev *dev,
				 DMA_TO_DEVICE);
	}

	ring->dev = dev;
	ring->nr_slots = nr_slots;
	ring->mmio_base = b43_dmacontroller_base(type, controller_index);
	ring->index = controller_index;
	if (type == B43_DMA_64BIT)
		ring->ops = &dma64_ops;
	else
		ring->ops = &dma32_ops;
	if (for_tx) {
		ring->tx = 1;
		ring->current_slot = -1;
	} else {
		if (ring->index == 0) {
			ring->rx_buffersize = B43_DMA0_RX_BUFFERSIZE;
			ring->frameoffset = B43_DMA0_RX_FRAMEOFFSET;
		} else if (ring->index == 3) {
			ring->rx_buffersize = B43_DMA3_RX_BUFFERSIZE;
			ring->frameoffset = B43_DMA3_RX_FRAMEOFFSET;
		} else
			B43_WARN_ON(1);
	}
	spin_lock_init(&ring->lock);
#ifdef CONFIG_B43_DEBUG
	ring->last_injected_overflow = jiffies;
#endif

	err = alloc_ringmemory(ring);
	if (err)
		goto err_kfree_txhdr_cache;
+10 −6
Original line number Diff line number Diff line
@@ -1145,7 +1145,6 @@ static void b43_generate_noise_sample(struct b43_wldev *dev)
	b43_jssi_write(dev, 0x7F7F7F7F);
	b43_write32(dev, B43_MMIO_MACCMD,
		    b43_read32(dev, B43_MMIO_MACCMD) | B43_MACCMD_BGNOISE);
	B43_WARN_ON(dev->noisecalc.channel_at_start != dev->phy.channel);
}

static void b43_calculate_link_quality(struct b43_wldev *dev)
@@ -1154,7 +1153,6 @@ static void b43_calculate_link_quality(struct b43_wldev *dev)

	if (dev->noisecalc.calculation_running)
		return;
	dev->noisecalc.channel_at_start = dev->phy.channel;
	dev->noisecalc.calculation_running = 1;
	dev->noisecalc.nr_samples = 0;

@@ -1171,9 +1169,16 @@ static void handle_irq_noise(struct b43_wldev *dev)

	/* Bottom half of Link Quality calculation. */

	/* Possible race condition: It might be possible that the user
	 * changed to a different channel in the meantime since we
	 * started the calculation. We ignore that fact, since it's
	 * not really that much of a problem. The background noise is
	 * an estimation only anyway. Slightly wrong results will get damped
	 * by the averaging of the 8 sample rounds. Additionally the
	 * value is shortlived. So it will be replaced by the next noise
	 * calculation round soon. */

	B43_WARN_ON(!dev->noisecalc.calculation_running);
	if (dev->noisecalc.channel_at_start != phy->channel)
		goto drop_calculation;
	*((__le32 *)noise) = cpu_to_le32(b43_jssi_read(dev));
	if (noise[0] == 0x7F || noise[1] == 0x7F ||
	    noise[2] == 0x7F || noise[3] == 0x7F)
@@ -1214,7 +1219,6 @@ static void handle_irq_noise(struct b43_wldev *dev)
			average -= 48;

		dev->stats.link_noise = average;
	      drop_calculation:
		dev->noisecalc.calculation_running = 0;
		return;
	}
+10 −9
Original line number Diff line number Diff line
@@ -32,12 +32,13 @@ config RT2X00_LIB_FIRMWARE
config RT2X00_LIB_RFKILL
	boolean
	depends on RT2X00_LIB
	depends on INPUT
	select RFKILL
	select INPUT_POLLDEV

config RT2X00_LIB_LEDS
	boolean
	depends on RT2X00_LIB
	depends on RT2X00_LIB && NEW_LEDS

config RT2400PCI
	tristate "Ralink rt2400 pci/pcmcia support"
@@ -51,7 +52,7 @@ config RT2400PCI

config RT2400PCI_RFKILL
	bool "RT2400 rfkill support"
	depends on RT2400PCI
	depends on RT2400PCI && INPUT
	select RT2X00_LIB_RFKILL
	---help---
	  This adds support for integrated rt2400 devices that feature a
@@ -60,7 +61,7 @@ config RT2400PCI_RFKILL

config RT2400PCI_LEDS
	bool "RT2400 leds support"
	depends on RT2400PCI
	depends on RT2400PCI && NEW_LEDS
	select LEDS_CLASS
	select RT2X00_LIB_LEDS
	---help---
@@ -78,7 +79,7 @@ config RT2500PCI

config RT2500PCI_RFKILL
	bool "RT2500 rfkill support"
	depends on RT2500PCI
	depends on RT2500PCI && INPUT
	select RT2X00_LIB_RFKILL
	---help---
	  This adds support for integrated rt2500 devices that feature a
@@ -87,7 +88,7 @@ config RT2500PCI_RFKILL

config RT2500PCI_LEDS
	bool "RT2500 leds support"
	depends on RT2500PCI
	depends on RT2500PCI && NEW_LEDS
	select LEDS_CLASS
	select RT2X00_LIB_LEDS
	---help---
@@ -107,7 +108,7 @@ config RT61PCI

config RT61PCI_RFKILL
	bool "RT61 rfkill support"
	depends on RT61PCI
	depends on RT61PCI && INPUT
	select RT2X00_LIB_RFKILL
	---help---
	  This adds support for integrated rt61 devices that feature a
@@ -116,7 +117,7 @@ config RT61PCI_RFKILL

config RT61PCI_LEDS
	bool "RT61 leds support"
	depends on RT61PCI
	depends on RT61PCI && NEW_LEDS
	select LEDS_CLASS
	select RT2X00_LIB_LEDS
	---help---
@@ -133,7 +134,7 @@ config RT2500USB

config RT2500USB_LEDS
	bool "RT2500 leds support"
	depends on RT2500USB
	depends on RT2500USB && NEW_LEDS
	select LEDS_CLASS
	select RT2X00_LIB_LEDS
	---help---
@@ -152,7 +153,7 @@ config RT73USB

config RT73USB_LEDS
	bool "RT73 leds support"
	depends on RT73USB
	depends on RT73USB && NEW_LEDS
	select LEDS_CLASS
	select RT2X00_LIB_LEDS
	---help---
+1 −2
Original line number Diff line number Diff line
@@ -412,8 +412,7 @@ int rt2x00pci_probe(struct pci_dev *pci_dev, const struct pci_device_id *id)
	if (pci_set_mwi(pci_dev))
		ERROR_PROBE("MWI not available.\n");

	if (pci_set_dma_mask(pci_dev, DMA_64BIT_MASK) &&
	    pci_set_dma_mask(pci_dev, DMA_32BIT_MASK)) {
	if (pci_set_dma_mask(pci_dev, DMA_32BIT_MASK)) {
		ERROR_PROBE("PCI DMA not supported.\n");
		retval = -EIO;
		goto exit_disable_device;
Loading