aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/b43
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/b43')
-rw-r--r--drivers/net/wireless/b43/b43.h3
-rw-r--r--drivers/net/wireless/b43/dma.c1
-rw-r--r--drivers/net/wireless/b43/xmit.c17
3 files changed, 13 insertions, 8 deletions
diff --git a/drivers/net/wireless/b43/b43.h b/drivers/net/wireless/b43/b43.h
index b4573101278..beaf18d6e8a 100644
--- a/drivers/net/wireless/b43/b43.h
+++ b/drivers/net/wireless/b43/b43.h
@@ -550,9 +550,6 @@ struct b43_noise_calculation {
550 550
551struct b43_stats { 551struct b43_stats {
552 u8 link_noise; 552 u8 link_noise;
553 /* Store the last TX/RX times here for updating the leds. */
554 unsigned long last_tx;
555 unsigned long last_rx;
556}; 553};
557 554
558struct b43_key { 555struct b43_key {
diff --git a/drivers/net/wireless/b43/dma.c b/drivers/net/wireless/b43/dma.c
index 92e1c0189a6..0cc804d0a21 100644
--- a/drivers/net/wireless/b43/dma.c
+++ b/drivers/net/wireless/b43/dma.c
@@ -1425,7 +1425,6 @@ void b43_dma_handle_txstatus(struct b43_wldev *dev,
1425 break; 1425 break;
1426 slot = next_slot(ring, slot); 1426 slot = next_slot(ring, slot);
1427 } 1427 }
1428 dev->stats.last_tx = jiffies;
1429 if (ring->stopped) { 1428 if (ring->stopped) {
1430 B43_WARN_ON(free_slots(ring) < TX_SLOTS_PER_FRAME); 1429 B43_WARN_ON(free_slots(ring) < TX_SLOTS_PER_FRAME);
1431 ieee80211_wake_queue(dev->wl->hw, ring->queue_prio); 1430 ieee80211_wake_queue(dev->wl->hw, ring->queue_prio);
diff --git a/drivers/net/wireless/b43/xmit.c b/drivers/net/wireless/b43/xmit.c
index eae9b805265..0f53c7e5e01 100644
--- a/drivers/net/wireless/b43/xmit.c
+++ b/drivers/net/wireless/b43/xmit.c
@@ -538,8 +538,14 @@ void b43_rx(struct b43_wldev *dev, struct sk_buff *skb, const void *_rxhdr)
538 chanstat = le16_to_cpu(rxhdr->channel); 538 chanstat = le16_to_cpu(rxhdr->channel);
539 phytype = chanstat & B43_RX_CHAN_PHYTYPE; 539 phytype = chanstat & B43_RX_CHAN_PHYTYPE;
540 540
541 if (macstat & B43_RX_MAC_FCSERR) 541 if (unlikely(macstat & B43_RX_MAC_FCSERR)) {
542 dev->wl->ieee_stats.dot11FCSErrorCount++; 542 dev->wl->ieee_stats.dot11FCSErrorCount++;
543 status.flag |= RX_FLAG_FAILED_FCS_CRC;
544 }
545 if (unlikely(phystat0 & (B43_RX_PHYST0_PLCPHCF | B43_RX_PHYST0_PLCPFV)))
546 status.flag |= RX_FLAG_FAILED_PLCP_CRC;
547 if (phystat0 & B43_RX_PHYST0_SHORTPRMBL)
548 status.flag |= RX_FLAG_SHORTPRE;
543 if (macstat & B43_RX_MAC_DECERR) { 549 if (macstat & B43_RX_MAC_DECERR) {
544 /* Decryption with the given key failed. 550 /* Decryption with the given key failed.
545 * Drop the packet. We also won't be able to decrypt it with 551 * Drop the packet. We also won't be able to decrypt it with
@@ -606,8 +612,12 @@ void b43_rx(struct b43_wldev *dev, struct sk_buff *skb, const void *_rxhdr)
606 phytype == B43_PHYTYPE_A); 612 phytype == B43_PHYTYPE_A);
607 else 613 else
608 status.rate_idx = b43_plcp_get_bitrate_idx_cck(plcp); 614 status.rate_idx = b43_plcp_get_bitrate_idx_cck(plcp);
609 if (unlikely(status.rate_idx == -1)) 615 if (unlikely(status.rate_idx == -1)) {
610 goto drop; 616 /* PLCP seems to be corrupted.
617 * Drop the frame, if we are not interested in corrupted frames. */
618 if (!(dev->wl->filter_flags & FIF_PLCPFAIL))
619 goto drop;
620 }
611 status.antenna = !!(phystat0 & B43_RX_PHYST0_ANT); 621 status.antenna = !!(phystat0 & B43_RX_PHYST0_ANT);
612 622
613 /* 623 /*
@@ -661,7 +671,6 @@ void b43_rx(struct b43_wldev *dev, struct sk_buff *skb, const void *_rxhdr)
661 goto drop; 671 goto drop;
662 } 672 }
663 673
664 dev->stats.last_rx = jiffies;
665 ieee80211_rx_irqsafe(dev->wl->hw, skb, &status); 674 ieee80211_rx_irqsafe(dev->wl->hw, skb, &status);
666 675
667 return; 676 return;