aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/adm8211.c3
-rw-r--r--drivers/net/wireless/at76c50x-usb.c3
-rw-r--r--drivers/net/wireless/ath/ar9170/main.c6
-rw-r--r--drivers/net/wireless/ath/ath5k/base.c3
-rw-r--r--drivers/net/wireless/ath/ath9k/recv.c13
-rw-r--r--drivers/net/wireless/b43/xmit.c3
-rw-r--r--drivers/net/wireless/b43legacy/xmit.c3
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-3945.c3
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-rx.c3
-rw-r--r--drivers/net/wireless/libertas_tf/main.c3
-rw-r--r--drivers/net/wireless/mac80211_hwsim.c3
-rw-r--r--drivers/net/wireless/mwl8k.c3
-rw-r--r--drivers/net/wireless/p54/p54common.c3
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00dev.c3
-rw-r--r--drivers/net/wireless/rtl818x/rtl8180_dev.c3
-rw-r--r--drivers/net/wireless/rtl818x/rtl8187_dev.c3
-rw-r--r--drivers/net/wireless/wl12xx/wl1251_rx.c3
-rw-r--r--drivers/net/wireless/zd1211rw/zd_mac.c3
18 files changed, 45 insertions, 22 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
924void ar9170_rx(struct ar9170 *ar, struct sk_buff *skb) 926void 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;
676drop: 677drop:
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;
597drop: 598drop:
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}
509EXPORT_SYMBOL_GPL(lbtf_rx); 510EXPORT_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
157static void wl1251_rx_ack(struct wl1251 *wl) 158static 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