aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/b43/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/b43/main.c')
-rw-r--r--drivers/net/wireless/b43/main.c38
1 files changed, 11 insertions, 27 deletions
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
index 316a913860d..aa33d741e5e 100644
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -637,10 +637,17 @@ static void b43_upload_card_macaddress(struct b43_wldev *dev)
637static void b43_set_slot_time(struct b43_wldev *dev, u16 slot_time) 637static void b43_set_slot_time(struct b43_wldev *dev, u16 slot_time)
638{ 638{
639 /* slot_time is in usec. */ 639 /* slot_time is in usec. */
640 if (dev->phy.type != B43_PHYTYPE_G) 640 /* This test used to exit for all but a G PHY. */
641 if (b43_current_band(dev->wl) == IEEE80211_BAND_5GHZ)
641 return; 642 return;
642 b43_write16(dev, 0x684, 510 + slot_time); 643 b43_write16(dev, B43_MMIO_IFSSLOT, 510 + slot_time);
643 b43_shm_write16(dev, B43_SHM_SHARED, 0x0010, slot_time); 644 /* Shared memory location 0x0010 is the slot time and should be
645 * set to slot_time; however, this register is initially 0 and changing
646 * the value adversely affects the transmit rate for BCM4311
647 * devices. Until this behavior is unterstood, delete this step
648 *
649 * b43_shm_write16(dev, B43_SHM_SHARED, 0x0010, slot_time);
650 */
644} 651}
645 652
646static void b43_short_slot_timing_enable(struct b43_wldev *dev) 653static void b43_short_slot_timing_enable(struct b43_wldev *dev)
@@ -3349,27 +3356,6 @@ out_unlock:
3349 return err; 3356 return err;
3350} 3357}
3351 3358
3352static int b43_op_get_tx_stats(struct ieee80211_hw *hw,
3353 struct ieee80211_tx_queue_stats *stats)
3354{
3355 struct b43_wl *wl = hw_to_b43_wl(hw);
3356 struct b43_wldev *dev;
3357 int err = -ENODEV;
3358
3359 mutex_lock(&wl->mutex);
3360 dev = wl->current_dev;
3361 if (dev && b43_status(dev) >= B43_STAT_STARTED) {
3362 if (b43_using_pio_transfers(dev))
3363 b43_pio_get_tx_stats(dev, stats);
3364 else
3365 b43_dma_get_tx_stats(dev, stats);
3366 err = 0;
3367 }
3368 mutex_unlock(&wl->mutex);
3369
3370 return err;
3371}
3372
3373static int b43_op_get_stats(struct ieee80211_hw *hw, 3359static int b43_op_get_stats(struct ieee80211_hw *hw,
3374 struct ieee80211_low_level_stats *stats) 3360 struct ieee80211_low_level_stats *stats)
3375{ 3361{
@@ -3980,6 +3966,7 @@ static int b43_wireless_core_start(struct b43_wldev *dev)
3980 } 3966 }
3981 3967
3982 /* We are ready to run. */ 3968 /* We are ready to run. */
3969 ieee80211_wake_queues(dev->wl->hw);
3983 b43_set_status(dev, B43_STAT_STARTED); 3970 b43_set_status(dev, B43_STAT_STARTED);
3984 3971
3985 /* Start data flow (TX/RX). */ 3972 /* Start data flow (TX/RX). */
@@ -4389,8 +4376,6 @@ static int b43_wireless_core_init(struct b43_wldev *dev)
4389 4376
4390 ieee80211_wake_queues(dev->wl->hw); 4377 ieee80211_wake_queues(dev->wl->hw);
4391 4378
4392 ieee80211_wake_queues(dev->wl->hw);
4393
4394 b43_set_status(dev, B43_STAT_INITIALIZED); 4379 b43_set_status(dev, B43_STAT_INITIALIZED);
4395 4380
4396out: 4381out:
@@ -4596,7 +4581,6 @@ static const struct ieee80211_ops b43_hw_ops = {
4596 .set_key = b43_op_set_key, 4581 .set_key = b43_op_set_key,
4597 .update_tkip_key = b43_op_update_tkip_key, 4582 .update_tkip_key = b43_op_update_tkip_key,
4598 .get_stats = b43_op_get_stats, 4583 .get_stats = b43_op_get_stats,
4599 .get_tx_stats = b43_op_get_tx_stats,
4600 .get_tsf = b43_op_get_tsf, 4584 .get_tsf = b43_op_get_tsf,
4601 .set_tsf = b43_op_set_tsf, 4585 .set_tsf = b43_op_set_tsf,
4602 .start = b43_op_start, 4586 .start = b43_op_start,