diff options
Diffstat (limited to 'drivers')
21 files changed, 51 insertions, 25 deletions
diff --git a/drivers/net/wireless/adm8211.c b/drivers/net/wireless/adm8211.c index 2b9e379994a1..ecc93834533f 100644 --- a/drivers/net/wireless/adm8211.c +++ b/drivers/net/wireless/adm8211.c | |||
@@ -452,7 +452,8 @@ static void adm8211_interrupt_rci(struct ieee80211_hw *dev) | |||
452 | rx_status.freq = adm8211_channels[priv->channel - 1].center_freq; | 452 | rx_status.freq = adm8211_channels[priv->channel - 1].center_freq; |
453 | rx_status.band = IEEE80211_BAND_2GHZ; | 453 | rx_status.band = IEEE80211_BAND_2GHZ; |
454 | 454 | ||
455 | ieee80211_rx_irqsafe(dev, skb, &rx_status); | 455 | memcpy(IEEE80211_SKB_RXCB(skb), &rx_status, sizeof(rx_status)); |
456 | ieee80211_rx_irqsafe(dev, skb); | ||
456 | } | 457 | } |
457 | 458 | ||
458 | entry = (++priv->cur_rx) % priv->rx_ring_size; | 459 | entry = (++priv->cur_rx) % priv->rx_ring_size; |
diff --git a/drivers/net/wireless/at76c50x-usb.c b/drivers/net/wireless/at76c50x-usb.c index 4efbdbe6d6bf..13303fa34734 100644 --- a/drivers/net/wireless/at76c50x-usb.c +++ b/drivers/net/wireless/at76c50x-usb.c | |||
@@ -1568,7 +1568,8 @@ static void at76_rx_tasklet(unsigned long param) | |||
1568 | 1568 | ||
1569 | at76_dbg(DBG_MAC80211, "calling ieee80211_rx_irqsafe(): %d/%d", | 1569 | at76_dbg(DBG_MAC80211, "calling ieee80211_rx_irqsafe(): %d/%d", |
1570 | priv->rx_skb->len, priv->rx_skb->data_len); | 1570 | priv->rx_skb->len, priv->rx_skb->data_len); |
1571 | ieee80211_rx_irqsafe(priv->hw, priv->rx_skb, &rx_status); | 1571 | memcpy(IEEE80211_SKB_RXCB(priv->rx_skb), &rx_status, sizeof(rx_status)); |
1572 | ieee80211_rx_irqsafe(priv->hw, priv->rx_skb); | ||
1572 | 1573 | ||
1573 | /* Use a new skb for the next receive */ | 1574 | /* Use a new skb for the next receive */ |
1574 | priv->rx_skb = NULL; | 1575 | priv->rx_skb = NULL; |
diff --git a/drivers/net/wireless/ath/ar9170/main.c b/drivers/net/wireless/ath/ar9170/main.c index 9d38cf60a0db..51753ed1b8ba 100644 --- a/drivers/net/wireless/ath/ar9170/main.c +++ b/drivers/net/wireless/ath/ar9170/main.c | |||
@@ -917,8 +917,10 @@ static void ar9170_handle_mpdu(struct ar9170 *ar, u8 *buf, int len) | |||
917 | ar9170_rx_phy_status(ar, phy, &status); | 917 | ar9170_rx_phy_status(ar, phy, &status); |
918 | 918 | ||
919 | skb = ar9170_rx_copy_data(buf, mpdu_len); | 919 | skb = ar9170_rx_copy_data(buf, mpdu_len); |
920 | if (likely(skb)) | 920 | if (likely(skb)) { |
921 | ieee80211_rx_irqsafe(ar->hw, skb, &status); | 921 | memcpy(IEEE80211_SKB_RXCB(skb), &status, sizeof(status)); |
922 | ieee80211_rx_irqsafe(ar->hw, skb); | ||
923 | } | ||
922 | } | 924 | } |
923 | 925 | ||
924 | void ar9170_rx(struct ar9170 *ar, struct sk_buff *skb) | 926 | void ar9170_rx(struct ar9170 *ar, struct sk_buff *skb) |
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c index f26a68960622..c6e70919435c 100644 --- a/drivers/net/wireless/ath/ath5k/base.c +++ b/drivers/net/wireless/ath/ath5k/base.c | |||
@@ -1905,7 +1905,8 @@ accept: | |||
1905 | if (sc->opmode == NL80211_IFTYPE_ADHOC) | 1905 | if (sc->opmode == NL80211_IFTYPE_ADHOC) |
1906 | ath5k_check_ibss_tsf(sc, skb, &rxs); | 1906 | ath5k_check_ibss_tsf(sc, skb, &rxs); |
1907 | 1907 | ||
1908 | __ieee80211_rx(sc->hw, skb, &rxs); | 1908 | memcpy(IEEE80211_SKB_RXCB(skb), &rxs, sizeof(rxs)); |
1909 | ieee80211_rx(sc->hw, skb); | ||
1909 | 1910 | ||
1910 | bf->skb = next_skb; | 1911 | bf->skb = next_skb; |
1911 | bf->skbaddr = next_skb_addr; | 1912 | bf->skbaddr = next_skb_addr; |
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 | ||
diff --git a/drivers/net/wireless/b43/xmit.c b/drivers/net/wireless/b43/xmit.c index 55f36a7254d9..5b85e7d73592 100644 --- a/drivers/net/wireless/b43/xmit.c +++ b/drivers/net/wireless/b43/xmit.c | |||
@@ -670,7 +670,8 @@ void b43_rx(struct b43_wldev *dev, struct sk_buff *skb, const void *_rxhdr) | |||
670 | goto drop; | 670 | goto drop; |
671 | } | 671 | } |
672 | 672 | ||
673 | ieee80211_rx_irqsafe(dev->wl->hw, skb, &status); | 673 | memcpy(IEEE80211_SKB_RXCB(skb), &status, sizeof(status)); |
674 | ieee80211_rx_irqsafe(dev->wl->hw, skb); | ||
674 | 675 | ||
675 | return; | 676 | return; |
676 | drop: | 677 | drop: |
diff --git a/drivers/net/wireless/b43legacy/xmit.c b/drivers/net/wireless/b43legacy/xmit.c index b8e39dd06e99..f79cee82601b 100644 --- a/drivers/net/wireless/b43legacy/xmit.c +++ b/drivers/net/wireless/b43legacy/xmit.c | |||
@@ -591,7 +591,8 @@ void b43legacy_rx(struct b43legacy_wldev *dev, | |||
591 | } | 591 | } |
592 | 592 | ||
593 | dev->stats.last_rx = jiffies; | 593 | dev->stats.last_rx = jiffies; |
594 | ieee80211_rx_irqsafe(dev->wl->hw, skb, &status); | 594 | memcpy(IEEE80211_SKB_RXCB(skb), &status, sizeof(status)); |
595 | ieee80211_rx_irqsafe(dev->wl->hw, skb); | ||
595 | 596 | ||
596 | return; | 597 | return; |
597 | drop: | 598 | drop: |
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945.c b/drivers/net/wireless/iwlwifi/iwl-3945.c index 46288e724889..777c09534cec 100644 --- a/drivers/net/wireless/iwlwifi/iwl-3945.c +++ b/drivers/net/wireless/iwlwifi/iwl-3945.c | |||
@@ -577,7 +577,8 @@ static void iwl3945_pass_packet_to_mac80211(struct iwl_priv *priv, | |||
577 | if (ieee80211_is_data(hdr->frame_control)) | 577 | if (ieee80211_is_data(hdr->frame_control)) |
578 | priv->rxtxpackets += len; | 578 | priv->rxtxpackets += len; |
579 | #endif | 579 | #endif |
580 | ieee80211_rx_irqsafe(priv->hw, rxb->skb, stats); | 580 | memcpy(IEEE80211_SKB_RXCB(rxb->skb), stats, sizeof(*stats)); |
581 | ieee80211_rx_irqsafe(priv->hw, rxb->skb); | ||
581 | rxb->skb = NULL; | 582 | rxb->skb = NULL; |
582 | } | 583 | } |
583 | 584 | ||
diff --git a/drivers/net/wireless/iwlwifi/iwl-rx.c b/drivers/net/wireless/iwlwifi/iwl-rx.c index 2b8d40b37a1c..2160795ed015 100644 --- a/drivers/net/wireless/iwlwifi/iwl-rx.c +++ b/drivers/net/wireless/iwlwifi/iwl-rx.c | |||
@@ -932,7 +932,8 @@ static void iwl_pass_packet_to_mac80211(struct iwl_priv *priv, | |||
932 | return; | 932 | return; |
933 | 933 | ||
934 | iwl_update_rx_stats(priv, le16_to_cpu(hdr->frame_control), len); | 934 | iwl_update_rx_stats(priv, le16_to_cpu(hdr->frame_control), len); |
935 | ieee80211_rx_irqsafe(priv->hw, rxb->skb, stats); | 935 | memcpy(IEEE80211_SKB_RXCB(rxb->skb), stats, sizeof(*stats)); |
936 | ieee80211_rx_irqsafe(priv->hw, rxb->skb); | ||
936 | priv->alloc_rxb_skb--; | 937 | priv->alloc_rxb_skb--; |
937 | rxb->skb = NULL; | 938 | rxb->skb = NULL; |
938 | } | 939 | } |
diff --git a/drivers/net/wireless/libertas_tf/main.c b/drivers/net/wireless/libertas_tf/main.c index 10a99e26d392..4872345a2f61 100644 --- a/drivers/net/wireless/libertas_tf/main.c +++ b/drivers/net/wireless/libertas_tf/main.c | |||
@@ -503,7 +503,8 @@ int lbtf_rx(struct lbtf_private *priv, struct sk_buff *skb) | |||
503 | skb_reserve(skb, 2); | 503 | skb_reserve(skb, 2); |
504 | } | 504 | } |
505 | 505 | ||
506 | ieee80211_rx_irqsafe(priv->hw, skb, &stats); | 506 | memcpy(IEEE80211_SKB_RXCB(skb), &stats, sizeof(stats)); |
507 | ieee80211_rx_irqsafe(priv->hw, skb); | ||
507 | return 0; | 508 | return 0; |
508 | } | 509 | } |
509 | EXPORT_SYMBOL_GPL(lbtf_rx); | 510 | EXPORT_SYMBOL_GPL(lbtf_rx); |
diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c index c47ef48f31c5..b1e4baec29f4 100644 --- a/drivers/net/wireless/mac80211_hwsim.c +++ b/drivers/net/wireless/mac80211_hwsim.c | |||
@@ -430,7 +430,8 @@ static bool mac80211_hwsim_tx_frame(struct ieee80211_hw *hw, | |||
430 | if (memcmp(hdr->addr1, data2->hw->wiphy->perm_addr, | 430 | if (memcmp(hdr->addr1, data2->hw->wiphy->perm_addr, |
431 | ETH_ALEN) == 0) | 431 | ETH_ALEN) == 0) |
432 | ack = true; | 432 | ack = true; |
433 | ieee80211_rx_irqsafe(data2->hw, nskb, &rx_status); | 433 | memcpy(IEEE80211_SKB_RXCB(nskb), &rx_status, sizeof(rx_status)); |
434 | ieee80211_rx_irqsafe(data2->hw, nskb); | ||
434 | } | 435 | } |
435 | spin_unlock(&hwsim_radio_lock); | 436 | spin_unlock(&hwsim_radio_lock); |
436 | 437 | ||
diff --git a/drivers/net/wireless/mwl8k.c b/drivers/net/wireless/mwl8k.c index a263d5c84c08..b9eded88c322 100644 --- a/drivers/net/wireless/mwl8k.c +++ b/drivers/net/wireless/mwl8k.c | |||
@@ -1047,7 +1047,8 @@ static int rxq_process(struct ieee80211_hw *hw, int index, int limit) | |||
1047 | status.flag = 0; | 1047 | status.flag = 0; |
1048 | status.band = IEEE80211_BAND_2GHZ; | 1048 | status.band = IEEE80211_BAND_2GHZ; |
1049 | status.freq = ieee80211_channel_to_frequency(rx_desc->channel); | 1049 | status.freq = ieee80211_channel_to_frequency(rx_desc->channel); |
1050 | ieee80211_rx_irqsafe(hw, skb, &status); | 1050 | memcpy(IEEE80211_SKB_RXCB(skb), &status, sizeof(status)); |
1051 | ieee80211_rx_irqsafe(hw, skb); | ||
1051 | 1052 | ||
1052 | processed++; | 1053 | processed++; |
1053 | } | 1054 | } |
diff --git a/drivers/net/wireless/p54/p54common.c b/drivers/net/wireless/p54/p54common.c index 22ca122bd798..1b15f9e0b861 100644 --- a/drivers/net/wireless/p54/p54common.c +++ b/drivers/net/wireless/p54/p54common.c | |||
@@ -794,7 +794,8 @@ static int p54_rx_data(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
794 | skb_pull(skb, header_len); | 794 | skb_pull(skb, header_len); |
795 | skb_trim(skb, le16_to_cpu(hdr->len)); | 795 | skb_trim(skb, le16_to_cpu(hdr->len)); |
796 | 796 | ||
797 | ieee80211_rx_irqsafe(dev, skb, &rx_status); | 797 | memcpy(IEEE80211_SKB_RXCB(skb), &rx_status, sizeof(rx_status)); |
798 | ieee80211_rx_irqsafe(dev, skb); | ||
798 | 799 | ||
799 | queue_delayed_work(dev->workqueue, &priv->work, | 800 | queue_delayed_work(dev->workqueue, &priv->work, |
800 | msecs_to_jiffies(P54_STATISTICS_UPDATE)); | 801 | msecs_to_jiffies(P54_STATISTICS_UPDATE)); |
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c index 57813e72c808..41e33798adb5 100644 --- a/drivers/net/wireless/rt2x00/rt2x00dev.c +++ b/drivers/net/wireless/rt2x00/rt2x00dev.c | |||
@@ -449,7 +449,8 @@ void rt2x00lib_rxdone(struct rt2x00_dev *rt2x00dev, | |||
449 | * mac80211 will clean up the skb structure. | 449 | * mac80211 will clean up the skb structure. |
450 | */ | 450 | */ |
451 | rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_RXDONE, entry->skb); | 451 | rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_RXDONE, entry->skb); |
452 | ieee80211_rx_irqsafe(rt2x00dev->hw, entry->skb, rx_status); | 452 | memcpy(IEEE80211_SKB_RXCB(entry->skb), rx_status, sizeof(*rx_status)); |
453 | ieee80211_rx_irqsafe(rt2x00dev->hw, entry->skb); | ||
453 | 454 | ||
454 | /* | 455 | /* |
455 | * Replace the skb with the freshly allocated one. | 456 | * Replace the skb with the freshly allocated one. |
diff --git a/drivers/net/wireless/rtl818x/rtl8180_dev.c b/drivers/net/wireless/rtl818x/rtl8180_dev.c index 7e65d7c31802..47521c5b6f91 100644 --- a/drivers/net/wireless/rtl818x/rtl8180_dev.c +++ b/drivers/net/wireless/rtl818x/rtl8180_dev.c | |||
@@ -143,7 +143,8 @@ static void rtl8180_handle_rx(struct ieee80211_hw *dev) | |||
143 | if (flags & RTL818X_RX_DESC_FLAG_CRC32_ERR) | 143 | if (flags & RTL818X_RX_DESC_FLAG_CRC32_ERR) |
144 | rx_status.flag |= RX_FLAG_FAILED_FCS_CRC; | 144 | rx_status.flag |= RX_FLAG_FAILED_FCS_CRC; |
145 | 145 | ||
146 | ieee80211_rx_irqsafe(dev, skb, &rx_status); | 146 | memcpy(IEEE80211_SKB_RXCB(skb), &rx_status, sizeof(rx_status)); |
147 | ieee80211_rx_irqsafe(dev, skb); | ||
147 | 148 | ||
148 | skb = new_skb; | 149 | skb = new_skb; |
149 | priv->rx_buf[priv->rx_idx] = skb; | 150 | priv->rx_buf[priv->rx_idx] = skb; |
diff --git a/drivers/net/wireless/rtl818x/rtl8187_dev.c b/drivers/net/wireless/rtl818x/rtl8187_dev.c index 294250e294dd..c9b9dbe584c6 100644 --- a/drivers/net/wireless/rtl818x/rtl8187_dev.c +++ b/drivers/net/wireless/rtl818x/rtl8187_dev.c | |||
@@ -380,7 +380,8 @@ static void rtl8187_rx_cb(struct urb *urb) | |||
380 | rx_status.flag |= RX_FLAG_TSFT; | 380 | rx_status.flag |= RX_FLAG_TSFT; |
381 | if (flags & RTL818X_RX_DESC_FLAG_CRC32_ERR) | 381 | if (flags & RTL818X_RX_DESC_FLAG_CRC32_ERR) |
382 | rx_status.flag |= RX_FLAG_FAILED_FCS_CRC; | 382 | rx_status.flag |= RX_FLAG_FAILED_FCS_CRC; |
383 | ieee80211_rx_irqsafe(dev, skb, &rx_status); | 383 | memcpy(IEEE80211_SKB_RXCB(skb), &rx_status, sizeof(rx_status)); |
384 | ieee80211_rx_irqsafe(dev, skb); | ||
384 | 385 | ||
385 | skb = dev_alloc_skb(RTL8187_MAX_RX); | 386 | skb = dev_alloc_skb(RTL8187_MAX_RX); |
386 | if (unlikely(!skb)) { | 387 | if (unlikely(!skb)) { |
diff --git a/drivers/net/wireless/wl12xx/wl1251_rx.c b/drivers/net/wireless/wl12xx/wl1251_rx.c index 48fa39ea17ed..0dbb483a0973 100644 --- a/drivers/net/wireless/wl12xx/wl1251_rx.c +++ b/drivers/net/wireless/wl12xx/wl1251_rx.c | |||
@@ -151,7 +151,8 @@ static void wl1251_rx_body(struct wl1251 *wl, | |||
151 | wl1251_debug(DEBUG_RX, "rx skb 0x%p: %d B %s", skb, skb->len, | 151 | wl1251_debug(DEBUG_RX, "rx skb 0x%p: %d B %s", skb, skb->len, |
152 | beacon ? "beacon" : ""); | 152 | beacon ? "beacon" : ""); |
153 | 153 | ||
154 | ieee80211_rx(wl->hw, skb, &status); | 154 | memcpy(IEEE80211_SKB_RXCB(skb), &status, sizeof(status)); |
155 | ieee80211_rx(wl->hw, skb); | ||
155 | } | 156 | } |
156 | 157 | ||
157 | static void wl1251_rx_ack(struct wl1251 *wl) | 158 | static void wl1251_rx_ack(struct wl1251 *wl) |
diff --git a/drivers/net/wireless/zd1211rw/zd_mac.c b/drivers/net/wireless/zd1211rw/zd_mac.c index 40b07b988224..9600b72495da 100644 --- a/drivers/net/wireless/zd1211rw/zd_mac.c +++ b/drivers/net/wireless/zd1211rw/zd_mac.c | |||
@@ -711,7 +711,8 @@ int zd_mac_rx(struct ieee80211_hw *hw, const u8 *buffer, unsigned int length) | |||
711 | 711 | ||
712 | memcpy(skb_put(skb, length), buffer, length); | 712 | memcpy(skb_put(skb, length), buffer, length); |
713 | 713 | ||
714 | ieee80211_rx_irqsafe(hw, skb, &stats); | 714 | memcpy(IEEE80211_SKB_RXCB(skb), &stats, sizeof(stats)); |
715 | ieee80211_rx_irqsafe(hw, skb); | ||
715 | return 0; | 716 | return 0; |
716 | } | 717 | } |
717 | 718 | ||
diff --git a/drivers/staging/agnx/xmit.c b/drivers/staging/agnx/xmit.c index 0e034081f3a5..42db41070cf0 100644 --- a/drivers/staging/agnx/xmit.c +++ b/drivers/staging/agnx/xmit.c | |||
@@ -384,7 +384,8 @@ void handle_rx_irq(struct agnx_priv *priv) | |||
384 | /* dump_ieee80211_hdr((struct ieee80211_hdr *)skb->data, "RX G"); */ | 384 | /* dump_ieee80211_hdr((struct ieee80211_hdr *)skb->data, "RX G"); */ |
385 | } else | 385 | } else |
386 | agnx_bug("Unknown packets type"); | 386 | agnx_bug("Unknown packets type"); |
387 | ieee80211_rx_irqsafe(priv->hw, skb, &status); | 387 | memcpy(IEEE80211_SKB_RXCB(skb), &status, sizeof(status)); |
388 | ieee80211_rx_irqsafe(priv->hw, skb); | ||
388 | rx_desc_reinit(priv, i); | 389 | rx_desc_reinit(priv, i); |
389 | 390 | ||
390 | } while (priv->rx.idx++); | 391 | } while (priv->rx.idx++); |
diff --git a/drivers/staging/stlc45xx/stlc45xx.c b/drivers/staging/stlc45xx/stlc45xx.c index cfdaac9b747e..52744faedbff 100644 --- a/drivers/staging/stlc45xx/stlc45xx.c +++ b/drivers/staging/stlc45xx/stlc45xx.c | |||
@@ -1429,7 +1429,8 @@ static int stlc45xx_rx_data(struct stlc45xx *stlc, struct sk_buff *skb) | |||
1429 | stlc45xx_debug(DEBUG_RX, "rx data 0x%p %d B", skb->data, skb->len); | 1429 | stlc45xx_debug(DEBUG_RX, "rx data 0x%p %d B", skb->data, skb->len); |
1430 | stlc45xx_dump(DEBUG_RX_CONTENT, skb->data, skb->len); | 1430 | stlc45xx_dump(DEBUG_RX_CONTENT, skb->data, skb->len); |
1431 | 1431 | ||
1432 | ieee80211_rx(stlc->hw, skb, &status); | 1432 | memcpy(IEEE80211_SKB_RXCB(skb), &status, sizeof(status)); |
1433 | ieee80211_rx(stlc->hw, skb); | ||
1433 | 1434 | ||
1434 | return 0; | 1435 | return 0; |
1435 | } | 1436 | } |
diff --git a/drivers/staging/winbond/wb35rx.c b/drivers/staging/winbond/wb35rx.c index 3e8cf08b87e6..b905e7b43a19 100644 --- a/drivers/staging/winbond/wb35rx.c +++ b/drivers/staging/winbond/wb35rx.c | |||
@@ -40,7 +40,8 @@ static void packet_came(struct ieee80211_hw *hw, char *pRxBufferAddress, int Pac | |||
40 | rx_status.phymode = MODE_IEEE80211B; | 40 | rx_status.phymode = MODE_IEEE80211B; |
41 | */ | 41 | */ |
42 | 42 | ||
43 | ieee80211_rx_irqsafe(hw, skb, &rx_status); | 43 | memcpy(IEEE80211_SKB_RXCB(skb), &rx_status, sizeof(rx_status)); |
44 | ieee80211_rx_irqsafe(hw, skb); | ||
44 | } | 45 | } |
45 | 46 | ||
46 | static void Wb35Rx_adjust(PDESCRIPTOR pRxDes) | 47 | static void Wb35Rx_adjust(PDESCRIPTOR pRxDes) |