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

Commit 14599f1e authored by David S. Miller's avatar David S. Miller
Browse files
Conflicts:
	drivers/net/wireless/wl12xx/wl1271.h
	drivers/net/wireless/wl12xx/wl1271_cmd.h
parents d8d1f30b 832c10fd
Loading
Loading
Loading
Loading
+1 −4
Original line number Original line Diff line number Diff line
@@ -2978,7 +2978,6 @@ F: drivers/net/ixgb/
F:	drivers/net/ixgbe/
F:	drivers/net/ixgbe/


INTEL PRO/WIRELESS 2100 NETWORK CONNECTION SUPPORT
INTEL PRO/WIRELESS 2100 NETWORK CONNECTION SUPPORT
M:	Zhu Yi <yi.zhu@intel.com>
M:	Reinette Chatre <reinette.chatre@intel.com>
M:	Reinette Chatre <reinette.chatre@intel.com>
M:	Intel Linux Wireless <ilw@linux.intel.com>
M:	Intel Linux Wireless <ilw@linux.intel.com>
L:	linux-wireless@vger.kernel.org
L:	linux-wireless@vger.kernel.org
@@ -2988,7 +2987,6 @@ F: Documentation/networking/README.ipw2100
F:	drivers/net/wireless/ipw2x00/ipw2100.*
F:	drivers/net/wireless/ipw2x00/ipw2100.*


INTEL PRO/WIRELESS 2915ABG NETWORK CONNECTION SUPPORT
INTEL PRO/WIRELESS 2915ABG NETWORK CONNECTION SUPPORT
M:	Zhu Yi <yi.zhu@intel.com>
M:	Reinette Chatre <reinette.chatre@intel.com>
M:	Reinette Chatre <reinette.chatre@intel.com>
M:	Intel Linux Wireless <ilw@linux.intel.com>
M:	Intel Linux Wireless <ilw@linux.intel.com>
L:	linux-wireless@vger.kernel.org
L:	linux-wireless@vger.kernel.org
@@ -3019,8 +3017,8 @@ F: drivers/net/wimax/i2400m/
F:	include/linux/wimax/i2400m.h
F:	include/linux/wimax/i2400m.h


INTEL WIRELESS WIFI LINK (iwlwifi)
INTEL WIRELESS WIFI LINK (iwlwifi)
M:	Zhu Yi <yi.zhu@intel.com>
M:	Reinette Chatre <reinette.chatre@intel.com>
M:	Reinette Chatre <reinette.chatre@intel.com>
M:	Wey-Yi Guy <wey-yi.w.guy@intel.com>
M:	Intel Linux Wireless <ilw@linux.intel.com>
M:	Intel Linux Wireless <ilw@linux.intel.com>
L:	linux-wireless@vger.kernel.org
L:	linux-wireless@vger.kernel.org
W:	http://intellinuxwireless.org
W:	http://intellinuxwireless.org
@@ -3030,7 +3028,6 @@ F: drivers/net/wireless/iwlwifi/


INTEL WIRELESS MULTICOMM 3200 WIFI (iwmc3200wifi)
INTEL WIRELESS MULTICOMM 3200 WIFI (iwmc3200wifi)
M:	Samuel Ortiz <samuel.ortiz@intel.com>
M:	Samuel Ortiz <samuel.ortiz@intel.com>
M:	Zhu Yi <yi.zhu@intel.com>
M:	Intel Linux Wireless <ilw@linux.intel.com>
M:	Intel Linux Wireless <ilw@linux.intel.com>
L:	linux-wireless@vger.kernel.org
L:	linux-wireless@vger.kernel.org
S:	Supported
S:	Supported
+70 −74
Original line number Original line Diff line number Diff line
@@ -150,8 +150,7 @@ static inline void b44_sync_dma_desc_for_device(struct ssb_device *sdev,
						unsigned long offset,
						unsigned long offset,
						enum dma_data_direction dir)
						enum dma_data_direction dir)
{
{
	ssb_dma_sync_single_range_for_device(sdev, dma_base,
	dma_sync_single_for_device(sdev->dma_dev, dma_base + offset,
					     offset & dma_desc_align_mask,
				   dma_desc_sync_size, dir);
				   dma_desc_sync_size, dir);
}
}


@@ -160,8 +159,7 @@ static inline void b44_sync_dma_desc_for_cpu(struct ssb_device *sdev,
					     unsigned long offset,
					     unsigned long offset,
					     enum dma_data_direction dir)
					     enum dma_data_direction dir)
{
{
	ssb_dma_sync_single_range_for_cpu(sdev, dma_base,
	dma_sync_single_for_cpu(sdev->dma_dev, dma_base + offset,
					  offset & dma_desc_align_mask,
				dma_desc_sync_size, dir);
				dma_desc_sync_size, dir);
}
}


@@ -608,7 +606,7 @@ static void b44_tx(struct b44 *bp)


		BUG_ON(skb == NULL);
		BUG_ON(skb == NULL);


		ssb_dma_unmap_single(bp->sdev,
		dma_unmap_single(bp->sdev->dma_dev,
				 rp->mapping,
				 rp->mapping,
				 skb->len,
				 skb->len,
				 DMA_TO_DEVICE);
				 DMA_TO_DEVICE);
@@ -648,29 +646,29 @@ static int b44_alloc_rx_skb(struct b44 *bp, int src_idx, u32 dest_idx_unmasked)
	if (skb == NULL)
	if (skb == NULL)
		return -ENOMEM;
		return -ENOMEM;


	mapping = ssb_dma_map_single(bp->sdev, skb->data,
	mapping = dma_map_single(bp->sdev->dma_dev, skb->data,
				 RX_PKT_BUF_SZ,
				 RX_PKT_BUF_SZ,
				 DMA_FROM_DEVICE);
				 DMA_FROM_DEVICE);


	/* Hardware bug work-around, the chip is unable to do PCI DMA
	/* Hardware bug work-around, the chip is unable to do PCI DMA
	   to/from anything above 1GB :-( */
	   to/from anything above 1GB :-( */
	if (ssb_dma_mapping_error(bp->sdev, mapping) ||
	if (dma_mapping_error(bp->sdev->dma_dev, mapping) ||
		mapping + RX_PKT_BUF_SZ > DMA_BIT_MASK(30)) {
		mapping + RX_PKT_BUF_SZ > DMA_BIT_MASK(30)) {
		/* Sigh... */
		/* Sigh... */
		if (!ssb_dma_mapping_error(bp->sdev, mapping))
		if (!dma_mapping_error(bp->sdev->dma_dev, mapping))
			ssb_dma_unmap_single(bp->sdev, mapping,
			dma_unmap_single(bp->sdev->dma_dev, mapping,
					     RX_PKT_BUF_SZ, DMA_FROM_DEVICE);
					     RX_PKT_BUF_SZ, DMA_FROM_DEVICE);
		dev_kfree_skb_any(skb);
		dev_kfree_skb_any(skb);
		skb = __netdev_alloc_skb(bp->dev, RX_PKT_BUF_SZ, GFP_ATOMIC|GFP_DMA);
		skb = __netdev_alloc_skb(bp->dev, RX_PKT_BUF_SZ, GFP_ATOMIC|GFP_DMA);
		if (skb == NULL)
		if (skb == NULL)
			return -ENOMEM;
			return -ENOMEM;
		mapping = ssb_dma_map_single(bp->sdev, skb->data,
		mapping = dma_map_single(bp->sdev->dma_dev, skb->data,
					 RX_PKT_BUF_SZ,
					 RX_PKT_BUF_SZ,
					 DMA_FROM_DEVICE);
					 DMA_FROM_DEVICE);
		if (ssb_dma_mapping_error(bp->sdev, mapping) ||
		if (dma_mapping_error(bp->sdev->dma_dev, mapping) ||
		    mapping + RX_PKT_BUF_SZ > DMA_BIT_MASK(30)) {
		    mapping + RX_PKT_BUF_SZ > DMA_BIT_MASK(30)) {
			if (!ssb_dma_mapping_error(bp->sdev, mapping))
			if (!dma_mapping_error(bp->sdev->dma_dev, mapping))
				ssb_dma_unmap_single(bp->sdev, mapping, RX_PKT_BUF_SZ,DMA_FROM_DEVICE);
				dma_unmap_single(bp->sdev->dma_dev, mapping, RX_PKT_BUF_SZ,DMA_FROM_DEVICE);
			dev_kfree_skb_any(skb);
			dev_kfree_skb_any(skb);
			return -ENOMEM;
			return -ENOMEM;
		}
		}
@@ -745,7 +743,7 @@ static void b44_recycle_rx(struct b44 *bp, int src_idx, u32 dest_idx_unmasked)
					     dest_idx * sizeof(*dest_desc),
					     dest_idx * sizeof(*dest_desc),
					     DMA_BIDIRECTIONAL);
					     DMA_BIDIRECTIONAL);


	ssb_dma_sync_single_for_device(bp->sdev, dest_map->mapping,
	dma_sync_single_for_device(bp->sdev->dma_dev, dest_map->mapping,
				   RX_PKT_BUF_SZ,
				   RX_PKT_BUF_SZ,
				   DMA_FROM_DEVICE);
				   DMA_FROM_DEVICE);
}
}
@@ -767,7 +765,7 @@ static int b44_rx(struct b44 *bp, int budget)
		struct rx_header *rh;
		struct rx_header *rh;
		u16 len;
		u16 len;


		ssb_dma_sync_single_for_cpu(bp->sdev, map,
		dma_sync_single_for_cpu(bp->sdev->dma_dev, map,
					RX_PKT_BUF_SZ,
					RX_PKT_BUF_SZ,
					DMA_FROM_DEVICE);
					DMA_FROM_DEVICE);
		rh = (struct rx_header *) skb->data;
		rh = (struct rx_header *) skb->data;
@@ -801,7 +799,7 @@ static int b44_rx(struct b44 *bp, int budget)
			skb_size = b44_alloc_rx_skb(bp, cons, bp->rx_prod);
			skb_size = b44_alloc_rx_skb(bp, cons, bp->rx_prod);
			if (skb_size < 0)
			if (skb_size < 0)
				goto drop_it;
				goto drop_it;
			ssb_dma_unmap_single(bp->sdev, map,
			dma_unmap_single(bp->sdev->dma_dev, map,
					 skb_size, DMA_FROM_DEVICE);
					 skb_size, DMA_FROM_DEVICE);
			/* Leave out rx_header */
			/* Leave out rx_header */
			skb_put(skb, len + RX_PKT_OFFSET);
			skb_put(skb, len + RX_PKT_OFFSET);
@@ -954,24 +952,24 @@ static netdev_tx_t b44_start_xmit(struct sk_buff *skb, struct net_device *dev)
		goto err_out;
		goto err_out;
	}
	}


	mapping = ssb_dma_map_single(bp->sdev, skb->data, len, DMA_TO_DEVICE);
	mapping = dma_map_single(bp->sdev->dma_dev, skb->data, len, DMA_TO_DEVICE);
	if (ssb_dma_mapping_error(bp->sdev, mapping) || mapping + len > DMA_BIT_MASK(30)) {
	if (dma_mapping_error(bp->sdev->dma_dev, mapping) || mapping + len > DMA_BIT_MASK(30)) {
		struct sk_buff *bounce_skb;
		struct sk_buff *bounce_skb;


		/* Chip can't handle DMA to/from >1GB, use bounce buffer */
		/* Chip can't handle DMA to/from >1GB, use bounce buffer */
		if (!ssb_dma_mapping_error(bp->sdev, mapping))
		if (!dma_mapping_error(bp->sdev->dma_dev, mapping))
			ssb_dma_unmap_single(bp->sdev, mapping, len,
			dma_unmap_single(bp->sdev->dma_dev, mapping, len,
					     DMA_TO_DEVICE);
					     DMA_TO_DEVICE);


		bounce_skb = __netdev_alloc_skb(dev, len, GFP_ATOMIC | GFP_DMA);
		bounce_skb = __netdev_alloc_skb(dev, len, GFP_ATOMIC | GFP_DMA);
		if (!bounce_skb)
		if (!bounce_skb)
			goto err_out;
			goto err_out;


		mapping = ssb_dma_map_single(bp->sdev, bounce_skb->data,
		mapping = dma_map_single(bp->sdev->dma_dev, bounce_skb->data,
					 len, DMA_TO_DEVICE);
					 len, DMA_TO_DEVICE);
		if (ssb_dma_mapping_error(bp->sdev, mapping) || mapping + len > DMA_BIT_MASK(30)) {
		if (dma_mapping_error(bp->sdev->dma_dev, mapping) || mapping + len > DMA_BIT_MASK(30)) {
			if (!ssb_dma_mapping_error(bp->sdev, mapping))
			if (!dma_mapping_error(bp->sdev->dma_dev, mapping))
				ssb_dma_unmap_single(bp->sdev, mapping,
				dma_unmap_single(bp->sdev->dma_dev, mapping,
						     len, DMA_TO_DEVICE);
						     len, DMA_TO_DEVICE);
			dev_kfree_skb_any(bounce_skb);
			dev_kfree_skb_any(bounce_skb);
			goto err_out;
			goto err_out;
@@ -1068,7 +1066,7 @@ static void b44_free_rings(struct b44 *bp)


		if (rp->skb == NULL)
		if (rp->skb == NULL)
			continue;
			continue;
		ssb_dma_unmap_single(bp->sdev, rp->mapping, RX_PKT_BUF_SZ,
		dma_unmap_single(bp->sdev->dma_dev, rp->mapping, RX_PKT_BUF_SZ,
				 DMA_FROM_DEVICE);
				 DMA_FROM_DEVICE);
		dev_kfree_skb_any(rp->skb);
		dev_kfree_skb_any(rp->skb);
		rp->skb = NULL;
		rp->skb = NULL;
@@ -1080,7 +1078,7 @@ static void b44_free_rings(struct b44 *bp)


		if (rp->skb == NULL)
		if (rp->skb == NULL)
			continue;
			continue;
		ssb_dma_unmap_single(bp->sdev, rp->mapping, rp->skb->len,
		dma_unmap_single(bp->sdev->dma_dev, rp->mapping, rp->skb->len,
				 DMA_TO_DEVICE);
				 DMA_TO_DEVICE);
		dev_kfree_skb_any(rp->skb);
		dev_kfree_skb_any(rp->skb);
		rp->skb = NULL;
		rp->skb = NULL;
@@ -1103,14 +1101,12 @@ static void b44_init_rings(struct b44 *bp)
	memset(bp->tx_ring, 0, B44_TX_RING_BYTES);
	memset(bp->tx_ring, 0, B44_TX_RING_BYTES);


	if (bp->flags & B44_FLAG_RX_RING_HACK)
	if (bp->flags & B44_FLAG_RX_RING_HACK)
		ssb_dma_sync_single_for_device(bp->sdev, bp->rx_ring_dma,
		dma_sync_single_for_device(bp->sdev->dma_dev, bp->rx_ring_dma,
					       DMA_TABLE_BYTES,
					   DMA_TABLE_BYTES, DMA_BIDIRECTIONAL);
					       DMA_BIDIRECTIONAL);


	if (bp->flags & B44_FLAG_TX_RING_HACK)
	if (bp->flags & B44_FLAG_TX_RING_HACK)
		ssb_dma_sync_single_for_device(bp->sdev, bp->tx_ring_dma,
		dma_sync_single_for_device(bp->sdev->dma_dev, bp->tx_ring_dma,
					       DMA_TABLE_BYTES,
					   DMA_TABLE_BYTES, DMA_TO_DEVICE);
					       DMA_TO_DEVICE);


	for (i = 0; i < bp->rx_pending; i++) {
	for (i = 0; i < bp->rx_pending; i++) {
		if (b44_alloc_rx_skb(bp, -1, i) < 0)
		if (b44_alloc_rx_skb(bp, -1, i) < 0)
@@ -1130,27 +1126,23 @@ static void b44_free_consistent(struct b44 *bp)
	bp->tx_buffers = NULL;
	bp->tx_buffers = NULL;
	if (bp->rx_ring) {
	if (bp->rx_ring) {
		if (bp->flags & B44_FLAG_RX_RING_HACK) {
		if (bp->flags & B44_FLAG_RX_RING_HACK) {
			ssb_dma_unmap_single(bp->sdev, bp->rx_ring_dma,
			dma_unmap_single(bp->sdev->dma_dev, bp->rx_ring_dma,
					     DMA_TABLE_BYTES,
					 DMA_TABLE_BYTES, DMA_BIDIRECTIONAL);
					     DMA_BIDIRECTIONAL);
			kfree(bp->rx_ring);
			kfree(bp->rx_ring);
		} else
		} else
			ssb_dma_free_consistent(bp->sdev, DMA_TABLE_BYTES,
			dma_free_coherent(bp->sdev->dma_dev, DMA_TABLE_BYTES,
						bp->rx_ring, bp->rx_ring_dma,
					  bp->rx_ring, bp->rx_ring_dma);
						GFP_KERNEL);
		bp->rx_ring = NULL;
		bp->rx_ring = NULL;
		bp->flags &= ~B44_FLAG_RX_RING_HACK;
		bp->flags &= ~B44_FLAG_RX_RING_HACK;
	}
	}
	if (bp->tx_ring) {
	if (bp->tx_ring) {
		if (bp->flags & B44_FLAG_TX_RING_HACK) {
		if (bp->flags & B44_FLAG_TX_RING_HACK) {
			ssb_dma_unmap_single(bp->sdev, bp->tx_ring_dma,
			dma_unmap_single(bp->sdev->dma_dev, bp->tx_ring_dma,
					     DMA_TABLE_BYTES,
					 DMA_TABLE_BYTES, DMA_TO_DEVICE);
					     DMA_TO_DEVICE);
			kfree(bp->tx_ring);
			kfree(bp->tx_ring);
		} else
		} else
			ssb_dma_free_consistent(bp->sdev, DMA_TABLE_BYTES,
			dma_free_coherent(bp->sdev->dma_dev, DMA_TABLE_BYTES,
						bp->tx_ring, bp->tx_ring_dma,
					  bp->tx_ring, bp->tx_ring_dma);
						GFP_KERNEL);
		bp->tx_ring = NULL;
		bp->tx_ring = NULL;
		bp->flags &= ~B44_FLAG_TX_RING_HACK;
		bp->flags &= ~B44_FLAG_TX_RING_HACK;
	}
	}
@@ -1175,7 +1167,8 @@ static int b44_alloc_consistent(struct b44 *bp, gfp_t gfp)
		goto out_err;
		goto out_err;


	size = DMA_TABLE_BYTES;
	size = DMA_TABLE_BYTES;
	bp->rx_ring = ssb_dma_alloc_consistent(bp->sdev, size, &bp->rx_ring_dma, gfp);
	bp->rx_ring = dma_alloc_coherent(bp->sdev->dma_dev, size,
					 &bp->rx_ring_dma, gfp);
	if (!bp->rx_ring) {
	if (!bp->rx_ring) {
		/* Allocation may have failed due to pci_alloc_consistent
		/* Allocation may have failed due to pci_alloc_consistent
		   insisting on use of GFP_DMA, which is more restrictive
		   insisting on use of GFP_DMA, which is more restrictive
@@ -1187,11 +1180,11 @@ static int b44_alloc_consistent(struct b44 *bp, gfp_t gfp)
		if (!rx_ring)
		if (!rx_ring)
			goto out_err;
			goto out_err;


		rx_ring_dma = ssb_dma_map_single(bp->sdev, rx_ring,
		rx_ring_dma = dma_map_single(bp->sdev->dma_dev, rx_ring,
					     DMA_TABLE_BYTES,
					     DMA_TABLE_BYTES,
					     DMA_BIDIRECTIONAL);
					     DMA_BIDIRECTIONAL);


		if (ssb_dma_mapping_error(bp->sdev, rx_ring_dma) ||
		if (dma_mapping_error(bp->sdev->dma_dev, rx_ring_dma) ||
			rx_ring_dma + size > DMA_BIT_MASK(30)) {
			rx_ring_dma + size > DMA_BIT_MASK(30)) {
			kfree(rx_ring);
			kfree(rx_ring);
			goto out_err;
			goto out_err;
@@ -1202,7 +1195,8 @@ static int b44_alloc_consistent(struct b44 *bp, gfp_t gfp)
		bp->flags |= B44_FLAG_RX_RING_HACK;
		bp->flags |= B44_FLAG_RX_RING_HACK;
	}
	}


	bp->tx_ring = ssb_dma_alloc_consistent(bp->sdev, size, &bp->tx_ring_dma, gfp);
	bp->tx_ring = dma_alloc_coherent(bp->sdev->dma_dev, size,
					 &bp->tx_ring_dma, gfp);
	if (!bp->tx_ring) {
	if (!bp->tx_ring) {
		/* Allocation may have failed due to ssb_dma_alloc_consistent
		/* Allocation may have failed due to ssb_dma_alloc_consistent
		   insisting on use of GFP_DMA, which is more restrictive
		   insisting on use of GFP_DMA, which is more restrictive
@@ -1214,11 +1208,11 @@ static int b44_alloc_consistent(struct b44 *bp, gfp_t gfp)
		if (!tx_ring)
		if (!tx_ring)
			goto out_err;
			goto out_err;


		tx_ring_dma = ssb_dma_map_single(bp->sdev, tx_ring,
		tx_ring_dma = dma_map_single(bp->sdev->dma_dev, tx_ring,
					     DMA_TABLE_BYTES,
					     DMA_TABLE_BYTES,
					     DMA_TO_DEVICE);
					     DMA_TO_DEVICE);


		if (ssb_dma_mapping_error(bp->sdev, tx_ring_dma) ||
		if (dma_mapping_error(bp->sdev->dma_dev, tx_ring_dma) ||
			tx_ring_dma + size > DMA_BIT_MASK(30)) {
			tx_ring_dma + size > DMA_BIT_MASK(30)) {
			kfree(tx_ring);
			kfree(tx_ring);
			goto out_err;
			goto out_err;
@@ -2176,12 +2170,14 @@ static int __devinit b44_init_one(struct ssb_device *sdev,
			"Failed to powerup the bus\n");
			"Failed to powerup the bus\n");
		goto err_out_free_dev;
		goto err_out_free_dev;
	}
	}
	err = ssb_dma_set_mask(sdev, DMA_BIT_MASK(30));

	if (err) {
	if (dma_set_mask(sdev->dma_dev, DMA_BIT_MASK(30)) ||
	    dma_set_coherent_mask(sdev->dma_dev, DMA_BIT_MASK(30))) {
		dev_err(sdev->dev,
		dev_err(sdev->dev,
			"Required 30BIT DMA mask unsupported by the system\n");
			"Required 30BIT DMA mask unsupported by the system\n");
		goto err_out_powerdown;
		goto err_out_powerdown;
	}
	}

	err = b44_get_invariants(bp);
	err = b44_get_invariants(bp);
	if (err) {
	if (err) {
		dev_err(sdev->dev,
		dev_err(sdev->dev,
+1 −0
Original line number Original line Diff line number Diff line
@@ -13,5 +13,6 @@ ath5k-y += base.o
ath5k-y				+= led.o
ath5k-y				+= led.o
ath5k-y				+= rfkill.o
ath5k-y				+= rfkill.o
ath5k-y				+= ani.o
ath5k-y				+= ani.o
ath5k-y				+= sysfs.o
ath5k-$(CONFIG_ATH5K_DEBUG)	+= debug.o
ath5k-$(CONFIG_ATH5K_DEBUG)	+= debug.o
obj-$(CONFIG_ATH5K)		+= ath5k.o
obj-$(CONFIG_ATH5K)		+= ath5k.o
+10 −10
Original line number Original line Diff line number Diff line
@@ -74,8 +74,8 @@ ath5k_ani_set_noise_immunity_level(struct ath5k_hw *ah, int level)
	const s8 fr[] = { -78, -80 };
	const s8 fr[] = { -78, -80 };
#endif
#endif
	if (level < 0 || level >= ARRAY_SIZE(sz)) {
	if (level < 0 || level >= ARRAY_SIZE(sz)) {
		ATH5K_DBG_UNLIMIT(ah->ah_sc, ATH5K_DEBUG_ANI,
		ATH5K_ERR(ah->ah_sc, "noise immuniy level %d out of range",
			"level out of range %d", level);
			  level);
		return;
		return;
	}
	}


@@ -106,8 +106,8 @@ ath5k_ani_set_spur_immunity_level(struct ath5k_hw *ah, int level)


	if (level < 0 || level >= ARRAY_SIZE(val) ||
	if (level < 0 || level >= ARRAY_SIZE(val) ||
	    level > ah->ah_sc->ani_state.max_spur_level) {
	    level > ah->ah_sc->ani_state.max_spur_level) {
		ATH5K_DBG_UNLIMIT(ah->ah_sc, ATH5K_DEBUG_ANI,
		ATH5K_ERR(ah->ah_sc, "spur immunity level %d out of range",
			"level out of range %d", level);
			  level);
		return;
		return;
	}
	}


@@ -130,8 +130,7 @@ ath5k_ani_set_firstep_level(struct ath5k_hw *ah, int level)
	const int val[] = { 0, 4, 8 };
	const int val[] = { 0, 4, 8 };


	if (level < 0 || level >= ARRAY_SIZE(val)) {
	if (level < 0 || level >= ARRAY_SIZE(val)) {
		ATH5K_DBG_UNLIMIT(ah->ah_sc, ATH5K_DEBUG_ANI,
		ATH5K_ERR(ah->ah_sc, "firstep level %d out of range", level);
			"level out of range %d", level);
		return;
		return;
	}
	}


@@ -481,14 +480,15 @@ ath5k_ani_calibration(struct ath5k_hw *ah)
	struct ath5k_ani_state *as = &ah->ah_sc->ani_state;
	struct ath5k_ani_state *as = &ah->ah_sc->ani_state;
	int listen, ofdm_high, ofdm_low, cck_high, cck_low;
	int listen, ofdm_high, ofdm_low, cck_high, cck_low;


	if (as->ani_mode != ATH5K_ANI_MODE_AUTO)
		return;

	/* get listen time since last call and add it to the counter because we
	/* get listen time since last call and add it to the counter because we
	 * might not have restarted the "ani period" last time */
	 * might not have restarted the "ani period" last time.
	 * always do this to calculate the busy time also in manual mode */
	listen = ath5k_hw_ani_get_listen_time(ah, as);
	listen = ath5k_hw_ani_get_listen_time(ah, as);
	as->listen_time += listen;
	as->listen_time += listen;


	if (as->ani_mode != ATH5K_ANI_MODE_AUTO)
		return;

	ath5k_ani_save_and_clear_phy_errors(ah, as);
	ath5k_ani_save_and_clear_phy_errors(ah, as);


	ofdm_high = as->listen_time * ATH5K_ANI_OFDM_TRIG_HIGH / 1000;
	ofdm_high = as->listen_time * ATH5K_ANI_OFDM_TRIG_HIGH / 1000;
+7 −0
Original line number Original line Diff line number Diff line
@@ -204,6 +204,7 @@
#define AR5K_TUNE_TPC_TXPOWER			false
#define AR5K_TUNE_TPC_TXPOWER			false
#define ATH5K_TUNE_CALIBRATION_INTERVAL_FULL    10000   /* 10 sec */
#define ATH5K_TUNE_CALIBRATION_INTERVAL_FULL    10000   /* 10 sec */
#define ATH5K_TUNE_CALIBRATION_INTERVAL_ANI	1000	/* 1 sec */
#define ATH5K_TUNE_CALIBRATION_INTERVAL_ANI	1000	/* 1 sec */
#define ATH5K_TUNE_CALIBRATION_INTERVAL_NF	60000	/* 60 sec */


#define AR5K_INIT_CARR_SENSE_EN			1
#define AR5K_INIT_CARR_SENSE_EN			1


@@ -1118,6 +1119,7 @@ struct ath5k_hw {
	/* Calibration timestamp */
	/* Calibration timestamp */
	unsigned long		ah_cal_next_full;
	unsigned long		ah_cal_next_full;
	unsigned long		ah_cal_next_ani;
	unsigned long		ah_cal_next_ani;
	unsigned long		ah_cal_next_nf;


	/* Calibration mask */
	/* Calibration mask */
	u8			ah_cal_mask;
	u8			ah_cal_mask;
@@ -1148,6 +1150,9 @@ struct ath5k_hw {
int ath5k_hw_attach(struct ath5k_softc *sc);
int ath5k_hw_attach(struct ath5k_softc *sc);
void ath5k_hw_detach(struct ath5k_hw *ah);
void ath5k_hw_detach(struct ath5k_hw *ah);


int ath5k_sysfs_register(struct ath5k_softc *sc);
void ath5k_sysfs_unregister(struct ath5k_softc *sc);

/* LED functions */
/* LED functions */
int ath5k_init_leds(struct ath5k_softc *sc);
int ath5k_init_leds(struct ath5k_softc *sc);
void ath5k_led_enable(struct ath5k_softc *sc);
void ath5k_led_enable(struct ath5k_softc *sc);
@@ -1270,6 +1275,7 @@ int ath5k_hw_channel(struct ath5k_hw *ah, struct ieee80211_channel *channel);
void ath5k_hw_init_nfcal_hist(struct ath5k_hw *ah);
void ath5k_hw_init_nfcal_hist(struct ath5k_hw *ah);
int ath5k_hw_phy_calibrate(struct ath5k_hw *ah,
int ath5k_hw_phy_calibrate(struct ath5k_hw *ah,
			   struct ieee80211_channel *channel);
			   struct ieee80211_channel *channel);
void ath5k_hw_update_noise_floor(struct ath5k_hw *ah);
/* Spur mitigation */
/* Spur mitigation */
bool ath5k_hw_chan_has_spur_noise(struct ath5k_hw *ah,
bool ath5k_hw_chan_has_spur_noise(struct ath5k_hw *ah,
				  struct ieee80211_channel *channel);
				  struct ieee80211_channel *channel);
@@ -1280,6 +1286,7 @@ u16 ath5k_hw_radio_revision(struct ath5k_hw *ah, unsigned int chan);
int ath5k_hw_phy_disable(struct ath5k_hw *ah);
int ath5k_hw_phy_disable(struct ath5k_hw *ah);
/* Antenna control */
/* Antenna control */
void ath5k_hw_set_antenna_mode(struct ath5k_hw *ah, u8 ant_mode);
void ath5k_hw_set_antenna_mode(struct ath5k_hw *ah, u8 ant_mode);
void ath5k_hw_set_antenna_switch(struct ath5k_hw *ah, u8 ee_mode);
/* TX power setup */
/* TX power setup */
int ath5k_hw_txpower(struct ath5k_hw *ah, struct ieee80211_channel *channel,
int ath5k_hw_txpower(struct ath5k_hw *ah, struct ieee80211_channel *channel,
		     u8 ee_mode, u8 txpower);
		     u8 ee_mode, u8 txpower);
Loading