From: Felix Fietkau Date: Sun, 7 Apr 2013 22:05:36 +0000 (+0000) Subject: mac80211: merge an idle handling fix (fixes ath9k_htc client mode), refresh patches X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=b5a27f260bb5355e9d7f1bb91849913cff6ce84e;p=openwrt%2Fstaging%2Fldir.git mac80211: merge an idle handling fix (fixes ath9k_htc client mode), refresh patches Signed-off-by: Felix Fietkau SVN-Revision: 36265 --- diff --git a/package/mac80211/patches/300-pending_work.patch b/package/mac80211/patches/300-pending_work.patch index 3a09420321..ee4232d2f4 100644 --- a/package/mac80211/patches/300-pending_work.patch +++ b/package/mac80211/patches/300-pending_work.patch @@ -158,6 +158,15 @@ TEST(TDLS_PEER_AUTH), TEST(4ADDR_EVENT), --- a/net/mac80211/iface.c +++ b/net/mac80211/iface.c +@@ -78,7 +78,7 @@ void ieee80211_recalc_txpower(struct iee + ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_TXPOWER); + } + +-static u32 ieee80211_idle_off(struct ieee80211_local *local) ++u32 ieee80211_idle_off(struct ieee80211_local *local) + { + if (!(local->hw.conf.flags & IEEE80211_CONF_IDLE)) + return 0; @@ -107,7 +107,7 @@ void ieee80211_recalc_idle(struct ieee80 lockdep_assert_held(&local->mtx); @@ -300,7 +309,7 @@ static void ieee80211_iface_work(struct work_struct *work) { struct ieee80211_sub_if_data *sdata = -@@ -1126,6 +1175,9 @@ static void ieee80211_iface_work(struct +@@ -1126,6 +1175,9 @@ static void ieee80211_iface_work(struct break; ieee80211_mesh_rx_queued_mgmt(sdata, skb); break; @@ -961,3 +970,58 @@ sta->dead = true; local->num_sta--; +--- a/net/mac80211/chan.c ++++ b/net/mac80211/chan.c +@@ -63,6 +63,7 @@ ieee80211_new_chanctx(struct ieee80211_l + enum ieee80211_chanctx_mode mode) + { + struct ieee80211_chanctx *ctx; ++ u32 changed; + int err; + + lockdep_assert_held(&local->chanctx_mtx); +@@ -76,6 +77,13 @@ ieee80211_new_chanctx(struct ieee80211_l + ctx->conf.rx_chains_dynamic = 1; + ctx->mode = mode; + ++ /* acquire mutex to prevent idle from changing */ ++ mutex_lock(&local->mtx); ++ /* turn idle off *before* setting channel -- some drivers need that */ ++ changed = ieee80211_idle_off(local); ++ if (changed) ++ ieee80211_hw_config(local, changed); ++ + if (!local->use_chanctx) { + local->_oper_channel_type = + cfg80211_get_chandef_type(chandef); +@@ -85,14 +93,17 @@ ieee80211_new_chanctx(struct ieee80211_l + err = drv_add_chanctx(local, ctx); + if (err) { + kfree(ctx); +- return ERR_PTR(err); ++ ctx = ERR_PTR(err); ++ ++ ieee80211_recalc_idle(local); ++ goto out; + } + } + ++ /* and keep the mutex held until the new chanctx is on the list */ + list_add_rcu(&ctx->list, &local->chanctx_list); + +- mutex_lock(&local->mtx); +- ieee80211_recalc_idle(local); ++ out: + mutex_unlock(&local->mtx); + + return ctx; +--- a/net/mac80211/ieee80211_i.h ++++ b/net/mac80211/ieee80211_i.h +@@ -1366,6 +1366,7 @@ int ieee80211_if_change_type(struct ieee + enum nl80211_iftype type); + void ieee80211_if_remove(struct ieee80211_sub_if_data *sdata); + void ieee80211_remove_interfaces(struct ieee80211_local *local); ++u32 ieee80211_idle_off(struct ieee80211_local *local); + void ieee80211_recalc_idle(struct ieee80211_local *local); + void ieee80211_adjust_monitor_flags(struct ieee80211_sub_if_data *sdata, + const int offset); diff --git a/package/mac80211/patches/402-ath9k-fix-invalid-mac-address-handling.patch b/package/mac80211/patches/402-ath9k-fix-invalid-mac-address-handling.patch index 3dbdba054a..40c4cb755c 100644 --- a/package/mac80211/patches/402-ath9k-fix-invalid-mac-address-handling.patch +++ b/package/mac80211/patches/402-ath9k-fix-invalid-mac-address-handling.patch @@ -8,7 +8,7 @@ #include #include "hw.h" -@@ -519,8 +520,16 @@ static int ath9k_hw_init_macaddr(struct +@@ -519,8 +520,16 @@ static int ath9k_hw_init_macaddr(struct common->macaddr[2 * i] = eeval >> 8; common->macaddr[2 * i + 1] = eeval & 0xff; } diff --git a/package/mac80211/patches/411-ath5k_allow_adhoc_and_ap.patch b/package/mac80211/patches/411-ath5k_allow_adhoc_and_ap.patch index 3d885bb2fd..22d911370f 100644 --- a/package/mac80211/patches/411-ath5k_allow_adhoc_and_ap.patch +++ b/package/mac80211/patches/411-ath5k_allow_adhoc_and_ap.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath5k/mac80211-ops.c +++ b/drivers/net/wireless/ath/ath5k/mac80211-ops.c -@@ -89,13 +89,8 @@ ath5k_add_interface(struct ieee80211_hw +@@ -89,13 +89,8 @@ ath5k_add_interface(struct ieee80211_hw goto end; } diff --git a/package/mac80211/patches/431-add_platform_eeprom_support_to_ath5k.patch b/package/mac80211/patches/431-add_platform_eeprom_support_to_ath5k.patch index d4967b6b4b..6cafa236a7 100644 --- a/package/mac80211/patches/431-add_platform_eeprom_support_to_ath5k.patch +++ b/package/mac80211/patches/431-add_platform_eeprom_support_to_ath5k.patch @@ -17,7 +17,7 @@ */ static bool ath5k_pci_eeprom_read(struct ath_common *common, u32 offset, u16 *data) -@@ -82,6 +83,19 @@ ath5k_pci_eeprom_read(struct ath_common +@@ -82,6 +83,19 @@ ath5k_pci_eeprom_read(struct ath_common struct ath5k_hw *ah = (struct ath5k_hw *) common->ah; u32 status, timeout; diff --git a/package/mac80211/patches/440-ath5k_channel_bw_debugfs.patch b/package/mac80211/patches/440-ath5k_channel_bw_debugfs.patch index f9c2a09dea..a2141ab24e 100644 --- a/package/mac80211/patches/440-ath5k_channel_bw_debugfs.patch +++ b/package/mac80211/patches/440-ath5k_channel_bw_debugfs.patch @@ -101,7 +101,7 @@ drivers/net/wireless/ath/ath5k/debug.c | 86 ++++++++++++++++++++++++++++++++ /* debugfs: queues etc */ -@@ -904,6 +987,9 @@ ath5k_debug_init_device(struct ath5k_hw +@@ -904,6 +987,9 @@ ath5k_debug_init_device(struct ath5k_hw debugfs_create_file("beacon", S_IWUSR | S_IRUSR, phydir, ah, &fops_beacon); diff --git a/package/mac80211/patches/522-ath9k_per_chain_signal_strength.patch b/package/mac80211/patches/522-ath9k_per_chain_signal_strength.patch index c0feedd187..6808cc4df7 100644 --- a/package/mac80211/patches/522-ath9k_per_chain_signal_strength.patch +++ b/package/mac80211/patches/522-ath9k_per_chain_signal_strength.patch @@ -175,7 +175,7 @@ switch (len - SPECTRAL_HT20_TOTAL_DATA_LEN) { --- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c +++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c -@@ -475,12 +475,12 @@ int ath9k_hw_process_rxdesc_edma(struct +@@ -475,12 +475,12 @@ int ath9k_hw_process_rxdesc_edma(struct /* XXX: Keycache */ rxs->rs_rssi = MS(rxsp->status5, AR_RxRSSICombined); @@ -236,7 +236,7 @@ if (ads.ds_rxstatus8 & AR_RxKeyIdxValid) --- a/drivers/net/wireless/ath/ath9k/debug.c +++ b/drivers/net/wireless/ath/ath9k/debug.c -@@ -940,12 +940,12 @@ void ath_debug_stat_rx(struct ath_softc +@@ -940,12 +940,12 @@ void ath_debug_stat_rx(struct ath_softc #ifdef CONFIG_ATH9K_MAC_DEBUG spin_lock(&sc->debug.samp_lock); RX_SAMP_DBG(jiffies) = jiffies; @@ -277,7 +277,7 @@ __NL80211_STA_INFO_AFTER_LAST, --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c -@@ -3082,6 +3082,32 @@ static bool nl80211_put_sta_rate(struct +@@ -3082,6 +3082,32 @@ static bool nl80211_put_sta_rate(struct return true; } @@ -372,7 +372,7 @@ * hardware stores this as 8 bit signed value. --- a/drivers/net/wireless/ath/ath9k/antenna.c +++ b/drivers/net/wireless/ath/ath9k/antenna.c -@@ -546,14 +546,14 @@ void ath_ant_comb_scan(struct ath_softc +@@ -546,14 +546,14 @@ void ath_ant_comb_scan(struct ath_softc struct ath_ant_comb *antcomb = &sc->ant_comb; int alt_ratio = 0, alt_rssi_avg = 0, main_rssi_avg = 0, curr_alt_set; int curr_main_set; diff --git a/package/mac80211/patches/523-mac80211_configure_antenna_gain.patch b/package/mac80211/patches/523-mac80211_configure_antenna_gain.patch index 8c13f324af..99bd2e3ba5 100644 --- a/package/mac80211/patches/523-mac80211_configure_antenna_gain.patch +++ b/package/mac80211/patches/523-mac80211_configure_antenna_gain.patch @@ -47,11 +47,10 @@ }; /* policy for the key attributes */ -@@ -1705,6 +1706,22 @@ static int nl80211_set_wiphy(struct sk_b - if (result) +@@ -1706,6 +1707,22 @@ static int nl80211_set_wiphy(struct sk_b goto bad_res; } -+ + + if (info->attrs[NL80211_ATTR_WIPHY_ANTENNA_GAIN]) { + int idx, dbi = 0; + @@ -67,9 +66,10 @@ + if (result) + goto bad_res; + } - ++ if (info->attrs[NL80211_ATTR_WIPHY_ANTENNA_TX] && info->attrs[NL80211_ATTR_WIPHY_ANTENNA_RX]) { + u32 tx_ant, rx_ant; --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c @@ -2212,6 +2212,19 @@ static int ieee80211_get_tx_power(struct @@ -92,7 +92,7 @@ static int ieee80211_set_wds_peer(struct wiphy *wiphy, struct net_device *dev, const u8 *addr) { -@@ -3375,6 +3388,7 @@ struct cfg80211_ops mac80211_config_ops +@@ -3375,6 +3388,7 @@ struct cfg80211_ops mac80211_config_ops .set_wiphy_params = ieee80211_set_wiphy_params, .set_tx_power = ieee80211_set_tx_power, .get_tx_power = ieee80211_get_tx_power, diff --git a/package/mac80211/patches/530-ath9k_extra_leds.patch b/package/mac80211/patches/530-ath9k_extra_leds.patch index a13cb41bbb..804785bc17 100644 --- a/package/mac80211/patches/530-ath9k_extra_leds.patch +++ b/package/mac80211/patches/530-ath9k_extra_leds.patch @@ -162,7 +162,7 @@ void ath_fill_led_pin(struct ath_softc *sc) --- a/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c -@@ -870,7 +870,7 @@ int ath9k_init_device(u16 devid, struct +@@ -870,7 +870,7 @@ int ath9k_init_device(u16 devid, struct #ifdef CONFIG_MAC80211_LEDS /* must be initialized before ieee80211_register_hw */ diff --git a/package/mac80211/patches/552-ath9k_rx_dma_stop_check.patch b/package/mac80211/patches/552-ath9k_rx_dma_stop_check.patch index 1da720733f..606eb1c63d 100644 --- a/package/mac80211/patches/552-ath9k_rx_dma_stop_check.patch +++ b/package/mac80211/patches/552-ath9k_rx_dma_stop_check.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/mac.c +++ b/drivers/net/wireless/ath/ath9k/mac.c -@@ -689,7 +689,7 @@ bool ath9k_hw_stopdmarecv(struct ath_hw +@@ -689,7 +689,7 @@ bool ath9k_hw_stopdmarecv(struct ath_hw { #define AH_RX_STOP_DMA_TIMEOUT 10000 /* usec */ struct ath_common *common = ath9k_hw_common(ah); @@ -9,7 +9,7 @@ int i; /* Enable access to the DMA observation bus */ -@@ -719,6 +719,16 @@ bool ath9k_hw_stopdmarecv(struct ath_hw +@@ -719,6 +719,16 @@ bool ath9k_hw_stopdmarecv(struct ath_hw } if (i == 0) { diff --git a/package/mac80211/patches/603-rt2x00-introduce-rt2x00eeprom.patch b/package/mac80211/patches/603-rt2x00-introduce-rt2x00eeprom.patch index 6b1f030bce..07e72e39f4 100644 --- a/package/mac80211/patches/603-rt2x00-introduce-rt2x00eeprom.patch +++ b/package/mac80211/patches/603-rt2x00-introduce-rt2x00eeprom.patch @@ -186,7 +186,7 @@ obj-$(CONFIG_RT2X00_LIB_PCI) += rt2x00pci.o --- a/drivers/net/wireless/rt2x00/rt2800pci.c +++ b/drivers/net/wireless/rt2x00/rt2800pci.c -@@ -89,25 +89,11 @@ static void rt2800pci_mcu_status(struct +@@ -89,25 +89,11 @@ static void rt2800pci_mcu_status(struct rt2x00pci_register_write(rt2x00dev, H2M_MAILBOX_CID, ~0); } diff --git a/package/mac80211/patches/605-rt2x00-pci-eeprom.patch b/package/mac80211/patches/605-rt2x00-pci-eeprom.patch index 25b21cecea..33eb28f5f6 100644 --- a/package/mac80211/patches/605-rt2x00-pci-eeprom.patch +++ b/package/mac80211/patches/605-rt2x00-pci-eeprom.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/rt2x00/rt2800pci.c +++ b/drivers/net/wireless/rt2x00/rt2800pci.c -@@ -89,7 +89,7 @@ static void rt2800pci_mcu_status(struct +@@ -89,7 +89,7 @@ static void rt2800pci_mcu_status(struct rt2x00pci_register_write(rt2x00dev, H2M_MAILBOX_CID, ~0); } @@ -9,7 +9,7 @@ { memcpy(rt2x00dev->eeprom, rt2x00dev->eeprom_file->data, EEPROM_SIZE); return 0; -@@ -983,8 +983,9 @@ static int rt2800pci_read_eeprom(struct +@@ -983,8 +983,9 @@ static int rt2800pci_read_eeprom(struct { int retval; diff --git a/package/mac80211/patches/612-rt2x00-make-wmac-loadable-via-OF-on-rt288x-305x-SoC.patch b/package/mac80211/patches/612-rt2x00-make-wmac-loadable-via-OF-on-rt288x-305x-SoC.patch index 00855f6b54..bb682ff1fd 100644 --- a/package/mac80211/patches/612-rt2x00-make-wmac-loadable-via-OF-on-rt288x-305x-SoC.patch +++ b/package/mac80211/patches/612-rt2x00-make-wmac-loadable-via-OF-on-rt288x-305x-SoC.patch @@ -11,11 +11,9 @@ Signed-off-by: John Crispin drivers/net/wireless/rt2x00/rt2800pci.c | 7 +++++++ 1 file changed, 7 insertions(+) -diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c -index ded73da..e5deb9e 100644 --- a/drivers/net/wireless/rt2x00/rt2800pci.c +++ b/drivers/net/wireless/rt2x00/rt2800pci.c -@@ -1183,11 +1183,18 @@ static int rt2800soc_probe(struct platform_device *pdev) +@@ -1185,11 +1185,18 @@ static int rt2800soc_probe(struct platfo return rt2x00soc_probe(pdev, &rt2800pci_ops); } @@ -34,6 +32,3 @@ index ded73da..e5deb9e 100644 }, .probe = rt2800soc_probe, .remove = rt2x00soc_remove, --- -1.7.10.4 - diff --git a/package/mac80211/patches/613-rt2x00-fixup-symbols.patch b/package/mac80211/patches/613-rt2x00-fixup-symbols.patch index 7a87cb6936..00bdbe16c7 100644 --- a/package/mac80211/patches/613-rt2x00-fixup-symbols.patch +++ b/package/mac80211/patches/613-rt2x00-fixup-symbols.patch @@ -1,8 +1,6 @@ -Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800pci.c -=================================================================== ---- compat-wireless-2013-02-22.orig/drivers/net/wireless/rt2x00/rt2800pci.c 2013-03-31 19:25:51.185815171 +0200 -+++ compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800pci.c 2013-03-31 19:27:59.805818237 +0200 -@@ -1179,7 +1179,7 @@ +--- a/drivers/net/wireless/rt2x00/rt2800pci.c ++++ b/drivers/net/wireless/rt2x00/rt2800pci.c +@@ -1179,7 +1179,7 @@ MODULE_DEVICE_TABLE(pci, rt2800pci_devic #endif /* CONFIG_PCI */ MODULE_LICENSE("GPL"); @@ -11,7 +9,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800pci.c static int rt2800soc_probe(struct platform_device *pdev) { return rt2x00soc_probe(pdev, &rt2800pci_ops); -@@ -1203,7 +1203,7 @@ +@@ -1203,7 +1203,7 @@ static struct platform_driver rt2800soc_ .suspend = rt2x00soc_suspend, .resume = rt2x00soc_resume, }; @@ -20,7 +18,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800pci.c #ifdef CONFIG_PCI static int rt2800pci_probe(struct pci_dev *pci_dev, -@@ -1226,7 +1226,7 @@ +@@ -1226,7 +1226,7 @@ static int __init rt2800pci_init(void) { int ret = 0; @@ -29,7 +27,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800pci.c ret = platform_driver_register(&rt2800soc_driver); if (ret) return ret; -@@ -1234,7 +1234,7 @@ +@@ -1234,7 +1234,7 @@ static int __init rt2800pci_init(void) #ifdef CONFIG_PCI ret = pci_register_driver(&rt2800pci_driver); if (ret) { @@ -38,7 +36,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800pci.c platform_driver_unregister(&rt2800soc_driver); #endif return ret; -@@ -1249,7 +1249,7 @@ +@@ -1249,7 +1249,7 @@ static void __exit rt2800pci_exit(void) #ifdef CONFIG_PCI pci_unregister_driver(&rt2800pci_driver); #endif diff --git a/package/mac80211/patches/614-rt2x00-of_load_eeprom_filename.patch b/package/mac80211/patches/614-rt2x00-of_load_eeprom_filename.patch index 136bd84431..2020178a69 100644 --- a/package/mac80211/patches/614-rt2x00-of_load_eeprom_filename.patch +++ b/package/mac80211/patches/614-rt2x00-of_load_eeprom_filename.patch @@ -1,8 +1,6 @@ -Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800pci.c -=================================================================== ---- compat-wireless-2013-02-22.orig/drivers/net/wireless/rt2x00/rt2800pci.c 2013-03-31 19:27:59.805818237 +0200 -+++ compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800pci.c 2013-03-31 19:40:07.313835573 +0200 -@@ -322,11 +322,17 @@ +--- a/drivers/net/wireless/rt2x00/rt2800pci.c ++++ b/drivers/net/wireless/rt2x00/rt2800pci.c +@@ -322,11 +322,17 @@ static int rt2800pci_write_firmware(stru static char *rt2800pci_get_eeprom_file_name(struct rt2x00_dev *rt2x00dev) { struct rt2x00_platform_data *pdata; diff --git a/package/mac80211/patches/615-rt2x00-fix_20mhz_clk.patch b/package/mac80211/patches/615-rt2x00-fix_20mhz_clk.patch index 281dd2e6d1..fa0ffa549c 100644 --- a/package/mac80211/patches/615-rt2x00-fix_20mhz_clk.patch +++ b/package/mac80211/patches/615-rt2x00-fix_20mhz_clk.patch @@ -1,7 +1,5 @@ -Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c -=================================================================== ---- compat-wireless-2013-02-22.orig/drivers/net/wireless/rt2x00/rt2800lib.c 2013-04-02 10:56:56.245205151 +0200 -+++ compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c 2013-04-02 11:24:06.057243987 +0200 +--- a/drivers/net/wireless/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/rt2x00/rt2800lib.c @@ -38,6 +38,7 @@ #include #include @@ -10,7 +8,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c #include "rt2x00.h" #include "rt2800lib.h" -@@ -5505,13 +5506,14 @@ +@@ -5375,13 +5376,14 @@ static int rt2800_probe_hw_mode(struct r int rt2800_probe_clk(struct rt2x00_dev *rt2x00dev) { diff --git a/package/mac80211/patches/616-rt2x00-support-rt5350.patch b/package/mac80211/patches/616-rt2x00-support-rt5350.patch index 3f2864883b..d12b550486 100644 --- a/package/mac80211/patches/616-rt2x00-support-rt5350.patch +++ b/package/mac80211/patches/616-rt2x00-support-rt5350.patch @@ -1,7 +1,5 @@ -Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800.h -=================================================================== ---- compat-wireless-2013-02-22.orig/drivers/net/wireless/rt2x00/rt2800.h 2013-04-01 18:42:38.843812191 +0200 -+++ compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800.h 2013-04-01 18:42:44.483812325 +0200 +--- a/drivers/net/wireless/rt2x00/rt2800.h ++++ b/drivers/net/wireless/rt2x00/rt2800.h @@ -69,6 +69,7 @@ #define RF3322 0x000c #define RF3053 0x000d @@ -10,11 +8,9 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800.h #define RF5360 0x5360 #define RF5370 0x5370 #define RF5372 0x5372 -Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c -=================================================================== ---- compat-wireless-2013-02-22.orig/drivers/net/wireless/rt2x00/rt2800lib.c 2013-04-01 18:42:38.843812191 +0200 -+++ compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c 2013-04-01 18:43:27.907813351 +0200 -@@ -2137,6 +2137,15 @@ +--- a/drivers/net/wireless/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/rt2x00/rt2800lib.c +@@ -2138,6 +2138,15 @@ static void rt2800_config_channel_rf53xx if (rf->channel <= 14) { int idx = rf->channel-1; @@ -30,7 +26,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c if (test_bit(CAPABILITY_BT_COEXIST, &rt2x00dev->cap_flags)) { if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390F)) { /* r55/r59 value array of channel 1~14 */ -@@ -2218,6 +2227,7 @@ +@@ -2219,6 +2228,7 @@ static void rt2800_config_channel(struct case RF3322: rt2800_config_channel_rf3322(rt2x00dev, conf, rf, info); break; @@ -38,7 +34,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c case RF5360: case RF5370: case RF5372: -@@ -2231,6 +2241,7 @@ +@@ -2232,6 +2242,7 @@ static void rt2800_config_channel(struct if (rt2x00_rf(rt2x00dev, RF3290) || rt2x00_rf(rt2x00dev, RF3322) || @@ -46,7 +42,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c rt2x00_rf(rt2x00dev, RF5360) || rt2x00_rf(rt2x00dev, RF5370) || rt2x00_rf(rt2x00dev, RF5372) || -@@ -2361,7 +2372,8 @@ +@@ -2362,7 +2373,8 @@ static void rt2800_config_channel(struct /* * Clear update flag */ @@ -56,7 +52,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c rt2800_bbp_read(rt2x00dev, 49, &bbp); rt2x00_set_field8(&bbp, BBP49_UPDATE_FLAG, 0); rt2800_bbp_write(rt2x00dev, 49, bbp); -@@ -2800,6 +2812,7 @@ +@@ -2801,6 +2813,7 @@ void rt2800_vco_calibration(struct rt2x0 rt2800_rfcsr_write(rt2x00dev, 7, rfcsr); break; case RF3290: @@ -64,7 +60,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c case RF5360: case RF5370: case RF5372: -@@ -3124,7 +3137,8 @@ +@@ -3125,7 +3138,8 @@ static int rt2800_init_registers(struct } else if (rt2x00_rt(rt2x00dev, RT3572)) { rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000400); rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606); @@ -74,7 +70,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c rt2x00_rt(rt2x00dev, RT5392)) { rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000404); rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606); -@@ -3506,6 +3520,10 @@ +@@ -3507,6 +3521,10 @@ static int rt2800_init_bbp(struct rt2x00 rt2800_bbp_write(rt2x00dev, 4, 0x50); } @@ -85,7 +81,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c if (rt2x00_rt(rt2x00dev, RT3290) || rt2x00_rt(rt2x00dev, RT5390) || rt2x00_rt(rt2x00dev, RT5392)) { -@@ -3518,11 +3536,13 @@ +@@ -3519,11 +3537,13 @@ static int rt2800_init_bbp(struct rt2x00 rt2x00_rt(rt2x00dev, RT3290) || rt2x00_rt(rt2x00dev, RT3352) || rt2x00_rt(rt2x00dev, RT3572) || @@ -100,7 +96,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c rt2800_bbp_write(rt2x00dev, 47, 0x48); rt2800_bbp_write(rt2x00dev, 65, 0x2c); -@@ -3530,6 +3550,7 @@ +@@ -3531,6 +3551,7 @@ static int rt2800_init_bbp(struct rt2x00 if (rt2x00_rt(rt2x00dev, RT3290) || rt2x00_rt(rt2x00dev, RT3352) || @@ -108,7 +104,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c rt2x00_rt(rt2x00dev, RT5390) || rt2x00_rt(rt2x00dev, RT5392)) rt2800_bbp_write(rt2x00dev, 68, 0x0b); -@@ -3539,6 +3560,7 @@ +@@ -3540,6 +3561,7 @@ static int rt2800_init_bbp(struct rt2x00 rt2800_bbp_write(rt2x00dev, 73, 0x12); } else if (rt2x00_rt(rt2x00dev, RT3290) || rt2x00_rt(rt2x00dev, RT3352) || @@ -116,7 +112,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c rt2x00_rt(rt2x00dev, RT5390) || rt2x00_rt(rt2x00dev, RT5392)) { rt2800_bbp_write(rt2x00dev, 69, 0x12); -@@ -3575,7 +3597,8 @@ +@@ -3576,7 +3598,8 @@ static int rt2800_init_bbp(struct rt2x00 rt2800_bbp_write(rt2x00dev, 79, 0x18); rt2800_bbp_write(rt2x00dev, 80, 0x09); rt2800_bbp_write(rt2x00dev, 81, 0x33); @@ -126,7 +122,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c rt2800_bbp_write(rt2x00dev, 78, 0x0e); rt2800_bbp_write(rt2x00dev, 80, 0x08); rt2800_bbp_write(rt2x00dev, 81, 0x37); -@@ -3585,6 +3608,7 @@ +@@ -3586,6 +3609,7 @@ static int rt2800_init_bbp(struct rt2x00 rt2800_bbp_write(rt2x00dev, 82, 0x62); if (rt2x00_rt(rt2x00dev, RT3290) || @@ -134,7 +130,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c rt2x00_rt(rt2x00dev, RT5390) || rt2x00_rt(rt2x00dev, RT5392)) rt2800_bbp_write(rt2x00dev, 83, 0x7a); -@@ -3594,6 +3618,7 @@ +@@ -3595,6 +3619,7 @@ static int rt2800_init_bbp(struct rt2x00 if (rt2x00_rt_rev(rt2x00dev, RT2860, REV_RT2860D)) rt2800_bbp_write(rt2x00dev, 84, 0x19); else if (rt2x00_rt(rt2x00dev, RT3290) || @@ -142,7 +138,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c rt2x00_rt(rt2x00dev, RT5390) || rt2x00_rt(rt2x00dev, RT5392)) rt2800_bbp_write(rt2x00dev, 84, 0x9a); -@@ -3602,6 +3627,7 @@ +@@ -3603,6 +3628,7 @@ static int rt2800_init_bbp(struct rt2x00 if (rt2x00_rt(rt2x00dev, RT3290) || rt2x00_rt(rt2x00dev, RT3352) || @@ -150,7 +146,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c rt2x00_rt(rt2x00dev, RT5390) || rt2x00_rt(rt2x00dev, RT5392)) rt2800_bbp_write(rt2x00dev, 86, 0x38); -@@ -3616,6 +3642,7 @@ +@@ -3617,6 +3643,7 @@ static int rt2800_init_bbp(struct rt2x00 if (rt2x00_rt(rt2x00dev, RT3290) || rt2x00_rt(rt2x00dev, RT3352) || @@ -158,7 +154,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c rt2x00_rt(rt2x00dev, RT5390) || rt2x00_rt(rt2x00dev, RT5392)) rt2800_bbp_write(rt2x00dev, 92, 0x02); -@@ -3634,6 +3661,7 @@ +@@ -3635,6 +3662,7 @@ static int rt2800_init_bbp(struct rt2x00 rt2x00_rt(rt2x00dev, RT3290) || rt2x00_rt(rt2x00dev, RT3352) || rt2x00_rt(rt2x00dev, RT3572) || @@ -166,7 +162,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c rt2x00_rt(rt2x00dev, RT5390) || rt2x00_rt(rt2x00dev, RT5392) || rt2800_is_305x_soc(rt2x00dev)) -@@ -3643,6 +3671,7 @@ +@@ -3644,6 +3672,7 @@ static int rt2800_init_bbp(struct rt2x00 if (rt2x00_rt(rt2x00dev, RT3290) || rt2x00_rt(rt2x00dev, RT3352) || @@ -174,7 +170,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c rt2x00_rt(rt2x00dev, RT5390) || rt2x00_rt(rt2x00dev, RT5392)) rt2800_bbp_write(rt2x00dev, 104, 0x92); -@@ -3653,13 +3682,15 @@ +@@ -3654,13 +3683,15 @@ static int rt2800_init_bbp(struct rt2x00 rt2800_bbp_write(rt2x00dev, 105, 0x1c); else if (rt2x00_rt(rt2x00dev, RT3352)) rt2800_bbp_write(rt2x00dev, 105, 0x34); @@ -191,7 +187,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c rt2x00_rt(rt2x00dev, RT5390)) rt2800_bbp_write(rt2x00dev, 106, 0x03); else if (rt2x00_rt(rt2x00dev, RT3352)) -@@ -3669,11 +3700,13 @@ +@@ -3670,11 +3701,13 @@ static int rt2800_init_bbp(struct rt2x00 else rt2800_bbp_write(rt2x00dev, 106, 0x35); @@ -206,7 +202,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c rt2x00_rt(rt2x00dev, RT5390) || rt2x00_rt(rt2x00dev, RT5392)) rt2800_bbp_write(rt2x00dev, 128, 0x12); -@@ -3683,13 +3716,15 @@ +@@ -3684,13 +3717,15 @@ static int rt2800_init_bbp(struct rt2x00 rt2800_bbp_write(rt2x00dev, 135, 0xf6); } @@ -223,7 +219,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c rt2x00_rt(rt2x00dev, RT5390) || rt2x00_rt(rt2x00dev, RT5392)) { rt2800_bbp_read(rt2x00dev, 138, &value); -@@ -3726,7 +3761,8 @@ +@@ -3727,7 +3762,8 @@ static int rt2800_init_bbp(struct rt2x00 rt2800_bbp_write(rt2x00dev, 3, value); } @@ -233,7 +229,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c rt2800_bbp_write(rt2x00dev, 163, 0xbd); /* Set ITxBF timeout to 0x9c40=1000msec */ rt2800_bbp_write(rt2x00dev, 179, 0x02); -@@ -3748,6 +3784,14 @@ +@@ -3749,6 +3785,14 @@ static int rt2800_init_bbp(struct rt2x00 rt2800_bbp_write(rt2x00dev, 148, 0xc8); } @@ -248,7 +244,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c if (rt2x00_rt(rt2x00dev, RT5390) || rt2x00_rt(rt2x00dev, RT5392)) { int ant, div_mode; -@@ -4142,6 +4186,76 @@ +@@ -4143,6 +4187,76 @@ static void rt2800_init_rfcsr_3572(struc rt2800_rfcsr_write(rt2x00dev, 31, 0x10); } @@ -325,7 +321,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c static void rt2800_init_rfcsr_5390(struct rt2x00_dev *rt2x00dev) { rt2800_rfcsr_write(rt2x00dev, 1, 0x0f); -@@ -4304,6 +4418,7 @@ +@@ -4305,6 +4419,7 @@ static int rt2800_init_rfcsr(struct rt2x !rt2x00_rt(rt2x00dev, RT3352) && !rt2x00_rt(rt2x00dev, RT3390) && !rt2x00_rt(rt2x00dev, RT3572) && @@ -333,7 +329,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c !rt2x00_rt(rt2x00dev, RT5390) && !rt2x00_rt(rt2x00dev, RT5392) && !rt2800_is_305x_soc(rt2x00dev)) -@@ -4354,6 +4469,9 @@ +@@ -4355,6 +4470,9 @@ static int rt2800_init_rfcsr(struct rt2x case RT3572: rt2800_init_rfcsr_3572(rt2x00dev); break; @@ -343,7 +339,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c case RT5390: rt2800_init_rfcsr_5390(rt2x00dev); break; -@@ -4750,6 +4868,12 @@ +@@ -4751,6 +4869,12 @@ static int rt2800_validate_eeprom(struct if (rt2x00_get_field16(word, EEPROM_NIC_CONF0_RXPATH) > 2) rt2x00_set_field16(&word, EEPROM_NIC_CONF0_RXPATH, 2); rt2x00_eeprom_write(rt2x00dev, EEPROM_NIC_CONF0, word); @@ -356,7 +352,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c } rt2x00_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, &word); -@@ -4874,6 +4998,8 @@ +@@ -4875,6 +4999,8 @@ static int rt2800_init_eeprom(struct rt2 rt2x00_get_field32(reg, MAC_CSR0_CHIPSET) == RT5390 || rt2x00_get_field32(reg, MAC_CSR0_CHIPSET) == RT5392) rt2x00_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &value); @@ -365,7 +361,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c else value = rt2x00_get_field16(eeprom, EEPROM_NIC_CONF0_RF_TYPE); -@@ -4891,6 +5017,7 @@ +@@ -4892,6 +5018,7 @@ static int rt2800_init_eeprom(struct rt2 case RT3352: case RT3390: case RT3572: @@ -373,7 +369,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c case RT5390: case RT5392: break; -@@ -4912,6 +5039,7 @@ +@@ -4913,6 +5040,7 @@ static int rt2800_init_eeprom(struct rt2 case RF3290: case RF3320: case RF3322: @@ -381,7 +377,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c case RF5360: case RF5370: case RF5372: -@@ -5274,7 +5402,8 @@ +@@ -5275,7 +5403,8 @@ static int rt2800_probe_hw_mode(struct r rt2x00_rf(rt2x00dev, RF5392)) { spec->num_channels = 14; spec->channels = rf_vals_3x; @@ -391,7 +387,7 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c spec->num_channels = 14; if (spec->clk_is_20mhz) spec->channels = rf_vals_xtal20mhz_3x; -@@ -5363,6 +5492,7 @@ +@@ -5364,6 +5493,7 @@ static int rt2800_probe_hw_mode(struct r case RF3290: case RF5360: case RF5370: @@ -399,11 +395,9 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800lib.c case RF5372: case RF5390: case RF5392: -Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2x00.h -=================================================================== ---- compat-wireless-2013-02-22.orig/drivers/net/wireless/rt2x00/rt2x00.h 2013-04-01 18:42:38.843812191 +0200 -+++ compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2x00.h 2013-04-01 18:42:44.487812326 +0200 -@@ -192,6 +192,7 @@ +--- a/drivers/net/wireless/rt2x00/rt2x00.h ++++ b/drivers/net/wireless/rt2x00/rt2x00.h +@@ -192,6 +192,7 @@ struct rt2x00_chip { #define RT3572 0x3572 #define RT3593 0x3593 #define RT3883 0x3883 /* WSOC */ diff --git a/package/mac80211/patches/617-rt2x00-load-eeprom-on-SoC-from-a-mtd-device-defines-.patch b/package/mac80211/patches/617-rt2x00-load-eeprom-on-SoC-from-a-mtd-device-defines-.patch index 7cb9ca0d64..c7d40ef7c6 100644 --- a/package/mac80211/patches/617-rt2x00-load-eeprom-on-SoC-from-a-mtd-device-defines-.patch +++ b/package/mac80211/patches/617-rt2x00-load-eeprom-on-SoC-from-a-mtd-device-defines-.patch @@ -10,11 +10,9 @@ Signed-off-by: John Crispin drivers/net/wireless/rt2x00/rt2800pci.c | 44 ++++++++++++++++++++++++++----- 2 files changed, 39 insertions(+), 6 deletions(-) -Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/Kconfig -=================================================================== ---- compat-wireless-2013-02-22.orig/drivers/net/wireless/rt2x00/Kconfig 2013-04-04 14:20:02.621776831 +0200 -+++ compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/Kconfig 2013-04-04 14:20:02.977776837 +0200 -@@ -64,6 +64,7 @@ +--- a/drivers/net/wireless/rt2x00/Kconfig ++++ b/drivers/net/wireless/rt2x00/Kconfig +@@ -64,6 +64,7 @@ config RT2800PCI select RT2X00_LIB_CRYPTO select CRC_CCITT select EEPROM_93CX6 @@ -22,10 +20,8 @@ Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/Kconfig ---help--- This adds support for rt27xx/rt28xx/rt30xx wireless chipset family. Supported chips: RT2760, RT2790, RT2860, RT2880, RT2890, RT3052, -Index: compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2x00eeprom.c -=================================================================== ---- compat-wireless-2013-02-22.orig/drivers/net/wireless/rt2x00/rt2x00eeprom.c 2013-04-04 14:20:02.621776831 +0200 -+++ compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2x00eeprom.c 2013-04-04 15:23:19.601807539 +0200 +--- a/drivers/net/wireless/rt2x00/rt2x00eeprom.c ++++ b/drivers/net/wireless/rt2x00/rt2x00eeprom.c @@ -30,12 +30,77 @@ #include "rt2x00.h" #include "rt2x00lib.h" diff --git a/package/mac80211/patches/701-mwl8k-don-t-overwrite-regulatory-settings.patch b/package/mac80211/patches/701-mwl8k-don-t-overwrite-regulatory-settings.patch index dd6348f702..890debc47f 100644 --- a/package/mac80211/patches/701-mwl8k-don-t-overwrite-regulatory-settings.patch +++ b/package/mac80211/patches/701-mwl8k-don-t-overwrite-regulatory-settings.patch @@ -49,7 +49,7 @@ Signed-off-by: Jonas Gorski /* * Running count of TX packets in flight, to avoid -@@ -2401,6 +2402,9 @@ mwl8k_set_caps(struct ieee80211_hw *hw, +@@ -2401,6 +2402,9 @@ mwl8k_set_caps(struct ieee80211_hw *hw, { struct mwl8k_priv *priv = hw->priv; @@ -59,7 +59,7 @@ Signed-off-by: Jonas Gorski if ((caps & MWL8K_CAP_2GHZ4) || !(caps & MWL8K_CAP_BAND_MASK)) { mwl8k_setup_2ghz_band(hw); if (caps & MWL8K_CAP_MIMO) -@@ -2412,6 +2416,8 @@ mwl8k_set_caps(struct ieee80211_hw *hw, +@@ -2412,6 +2416,8 @@ mwl8k_set_caps(struct ieee80211_hw *hw, if (caps & MWL8K_CAP_MIMO) mwl8k_set_ht_caps(hw, &priv->band_50, caps); } diff --git a/package/mac80211/patches/850-brcmsmac-start-adding-support-for-core-rev-28.patch b/package/mac80211/patches/850-brcmsmac-start-adding-support-for-core-rev-28.patch index 41c4476844..a84107df7d 100644 --- a/package/mac80211/patches/850-brcmsmac-start-adding-support-for-core-rev-28.patch +++ b/package/mac80211/patches/850-brcmsmac-start-adding-support-for-core-rev-28.patch @@ -10,7 +10,7 @@ MODULE_DEVICE_TABLE(bcma, brcms_coreid_table); --- a/drivers/net/wireless/brcm80211/brcmsmac/main.c +++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c -@@ -717,7 +717,7 @@ static void brcms_c_ucode_bsinit(struct +@@ -717,7 +717,7 @@ static void brcms_c_ucode_bsinit(struct brcms_c_write_mhf(wlc_hw, wlc_hw->band->mhfs); /* do band-specific ucode IHR, SHM, and SCR inits */ @@ -19,7 +19,7 @@ if (BRCMS_ISNPHY(wlc_hw->band)) brcms_c_write_inits(wlc_hw, ucode->d11n0bsinitvals16); else -@@ -2257,7 +2257,7 @@ static void brcms_ucode_download(struct +@@ -2257,7 +2257,7 @@ static void brcms_ucode_download(struct if (wlc_hw->ucode_loaded) return; diff --git a/package/mac80211/patches/869-brcmsmac-add-beacon-template-support.patch b/package/mac80211/patches/869-brcmsmac-add-beacon-template-support.patch index 7ea09a8540..cbed0f1015 100644 --- a/package/mac80211/patches/869-brcmsmac-add-beacon-template-support.patch +++ b/package/mac80211/patches/869-brcmsmac-add-beacon-template-support.patch @@ -36,7 +36,7 @@ * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above -@@ -450,6 +451,8 @@ static void brcms_c_detach_mfree(struct +@@ -450,6 +451,8 @@ static void brcms_c_detach_mfree(struct kfree(wlc->corestate); kfree(wlc->hw->bandstate[0]); kfree(wlc->hw); diff --git a/package/mac80211/patches/871-brcmsmac-add-support-for-probe-response-template.patch b/package/mac80211/patches/871-brcmsmac-add-support-for-probe-response-template.patch index 38d3648a8d..27dbfeab2c 100644 --- a/package/mac80211/patches/871-brcmsmac-add-support-for-probe-response-template.patch +++ b/package/mac80211/patches/871-brcmsmac-add-support-for-probe-response-template.patch @@ -27,7 +27,7 @@ hw->sta_data_size = 0; --- a/drivers/net/wireless/brcm80211/brcmsmac/main.c +++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c -@@ -453,6 +453,8 @@ static void brcms_c_detach_mfree(struct +@@ -453,6 +453,8 @@ static void brcms_c_detach_mfree(struct kfree(wlc->hw); if (wlc->beacon) dev_kfree_skb_any(wlc->beacon);