diff options
Diffstat (limited to 'drivers/net/wireless/brcm80211/brcmsmac/main.c')
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmsmac/main.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmsmac/main.c b/drivers/net/wireless/brcm80211/brcmsmac/main.c index 231ddf4a674f..7083db75b00c 100644 --- a/drivers/net/wireless/brcm80211/brcmsmac/main.c +++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c | |||
@@ -7614,6 +7614,7 @@ brcms_c_recvctl(struct brcms_c_info *wlc, struct d11rxhdr *rxh, | |||
7614 | { | 7614 | { |
7615 | int len_mpdu; | 7615 | int len_mpdu; |
7616 | struct ieee80211_rx_status rx_status; | 7616 | struct ieee80211_rx_status rx_status; |
7617 | struct ieee80211_hdr *hdr; | ||
7617 | 7618 | ||
7618 | memset(&rx_status, 0, sizeof(rx_status)); | 7619 | memset(&rx_status, 0, sizeof(rx_status)); |
7619 | prep_mac80211_status(wlc, rxh, p, &rx_status); | 7620 | prep_mac80211_status(wlc, rxh, p, &rx_status); |
@@ -7623,6 +7624,13 @@ brcms_c_recvctl(struct brcms_c_info *wlc, struct d11rxhdr *rxh, | |||
7623 | skb_pull(p, D11_PHY_HDR_LEN); | 7624 | skb_pull(p, D11_PHY_HDR_LEN); |
7624 | __skb_trim(p, len_mpdu); | 7625 | __skb_trim(p, len_mpdu); |
7625 | 7626 | ||
7627 | /* unmute transmit */ | ||
7628 | if (wlc->hw->suspended_fifos) { | ||
7629 | hdr = (struct ieee80211_hdr *)p->data; | ||
7630 | if (ieee80211_is_beacon(hdr->frame_control)) | ||
7631 | brcms_b_mute(wlc->hw, false); | ||
7632 | } | ||
7633 | |||
7626 | memcpy(IEEE80211_SKB_RXCB(p), &rx_status, sizeof(rx_status)); | 7634 | memcpy(IEEE80211_SKB_RXCB(p), &rx_status, sizeof(rx_status)); |
7627 | ieee80211_rx_irqsafe(wlc->pub->ieee_hw, p); | 7635 | ieee80211_rx_irqsafe(wlc->pub->ieee_hw, p); |
7628 | } | 7636 | } |