Loading MAINTAINERS +1 −4 Original line number Original line Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading Loading @@ -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 Loading @@ -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 Loading drivers/net/b44.c +70 −74 Original line number Original line Diff line number Diff line Loading @@ -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); } } Loading @@ -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); } } Loading Loading @@ -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); Loading Loading @@ -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; } } Loading Loading @@ -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); } } Loading @@ -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; Loading Loading @@ -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); Loading Loading @@ -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; Loading Loading @@ -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; Loading @@ -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; Loading @@ -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) Loading @@ -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; } } Loading @@ -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 Loading @@ -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; Loading @@ -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 Loading @@ -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; Loading Loading @@ -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, Loading drivers/net/wireless/ath/ath5k/Makefile +1 −0 Original line number Original line Diff line number Diff line Loading @@ -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 drivers/net/wireless/ath/ath5k/ani.c +10 −10 Original line number Original line Diff line number Diff line Loading @@ -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; } } Loading Loading @@ -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; } } Loading @@ -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; } } Loading Loading @@ -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; Loading drivers/net/wireless/ath/ath5k/ath5k.h +7 −0 Original line number Original line Diff line number Diff line Loading @@ -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 Loading Loading @@ -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; Loading Loading @@ -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); Loading Loading @@ -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); Loading @@ -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 Loading
MAINTAINERS +1 −4 Original line number Original line Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading Loading @@ -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 Loading @@ -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 Loading
drivers/net/b44.c +70 −74 Original line number Original line Diff line number Diff line Loading @@ -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); } } Loading @@ -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); } } Loading Loading @@ -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); Loading Loading @@ -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; } } Loading Loading @@ -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); } } Loading @@ -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; Loading Loading @@ -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); Loading Loading @@ -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; Loading Loading @@ -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; Loading @@ -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; Loading @@ -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) Loading @@ -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; } } Loading @@ -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 Loading @@ -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; Loading @@ -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 Loading @@ -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; Loading Loading @@ -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, Loading
drivers/net/wireless/ath/ath5k/Makefile +1 −0 Original line number Original line Diff line number Diff line Loading @@ -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
drivers/net/wireless/ath/ath5k/ani.c +10 −10 Original line number Original line Diff line number Diff line Loading @@ -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; } } Loading Loading @@ -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; } } Loading @@ -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; } } Loading Loading @@ -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; Loading
drivers/net/wireless/ath/ath5k/ath5k.h +7 −0 Original line number Original line Diff line number Diff line Loading @@ -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 Loading Loading @@ -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; Loading Loading @@ -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); Loading Loading @@ -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); Loading @@ -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