diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/recv.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/recv.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c index cece1c4c6bda..c00b9051bb53 100644 --- a/drivers/net/wireless/ath/ath9k/recv.c +++ b/drivers/net/wireless/ath/ath9k/recv.c | |||
@@ -619,13 +619,18 @@ static void ath_rx_send_to_mac80211(struct ath_softc *sc, struct sk_buff *skb, | |||
619 | if (aphy == NULL) | 619 | if (aphy == NULL) |
620 | continue; | 620 | continue; |
621 | nskb = skb_copy(skb, GFP_ATOMIC); | 621 | nskb = skb_copy(skb, GFP_ATOMIC); |
622 | if (nskb) | 622 | if (nskb) { |
623 | __ieee80211_rx(aphy->hw, nskb, rx_status); | 623 | memcpy(IEEE80211_SKB_RXCB(nskb), rx_status, |
624 | sizeof(*rx_status)); | ||
625 | ieee80211_rx(aphy->hw, nskb); | ||
626 | } | ||
624 | } | 627 | } |
625 | __ieee80211_rx(sc->hw, skb, rx_status); | 628 | memcpy(IEEE80211_SKB_RXCB(skb), rx_status, sizeof(*rx_status)); |
629 | ieee80211_rx(sc->hw, skb); | ||
626 | } else { | 630 | } else { |
627 | /* Deliver unicast frames based on receiver address */ | 631 | /* Deliver unicast frames based on receiver address */ |
628 | __ieee80211_rx(ath_get_virt_hw(sc, hdr), skb, rx_status); | 632 | memcpy(IEEE80211_SKB_RXCB(skb), rx_status, sizeof(*rx_status)); |
633 | ieee80211_rx(ath_get_virt_hw(sc, hdr), skb); | ||
629 | } | 634 | } |
630 | } | 635 | } |
631 | 636 | ||