mac80211: update to wireless-testing 2013-02-22

SVN-Revision: 35753
master
Felix Fietkau 12 years ago
parent c4c43eed04
commit e526c7bc17
  1. 3
      Config.in
  2. 5
      package/mac80211/Makefile
  3. 4
      package/mac80211/patches/002-disable_ssb_build.patch
  4. 2
      package/mac80211/patches/130-mesh_pathtbl_backport.patch
  5. 3178
      package/mac80211/patches/300-pending_work.patch
  6. 2
      package/mac80211/patches/310-ap_scan.patch
  7. 2
      package/mac80211/patches/401-ath9k_blink_default.patch
  8. 2
      package/mac80211/patches/403-ath_regd_optional.patch
  9. 4
      package/mac80211/patches/405-regd_no_assoc_hints.patch
  10. 2
      package/mac80211/patches/410-ath9k_allow_adhoc_and_ap.patch
  11. 6
      package/mac80211/patches/411-ath5k_allow_adhoc_and_ap.patch
  12. 4
      package/mac80211/patches/420-ath5k_disable_fast_cc.patch
  13. 4
      package/mac80211/patches/500-ath9k_eeprom_debugfs.patch
  14. 4
      package/mac80211/patches/501-ath9k-eeprom_endianess.patch
  15. 2
      package/mac80211/patches/502-ath9k_ahb_init.patch
  16. 20
      package/mac80211/patches/512-ath9k_channelbw_debugfs.patch
  17. 2
      package/mac80211/patches/513-mac80211_reduce_txqueuelen.patch
  18. 6
      package/mac80211/patches/520-mac80211_cur_txpower.patch
  19. 4
      package/mac80211/patches/521-ath9k_cur_txpower.patch
  20. 75
      package/mac80211/patches/522-ath9k_per_chain_signal_strength.patch
  21. 38
      package/mac80211/patches/523-mac80211_configure_antenna_gain.patch
  22. 2
      package/mac80211/patches/524-ath9k_use_configured_antenna_gain.patch
  23. 14
      package/mac80211/patches/530-ath9k_extra_leds.patch
  24. 12
      package/mac80211/patches/540-mac80211_optimize_mcs_rate_mask.patch
  25. 71
      package/mac80211/patches/542-mac80211_optimize_wireless_struct.patch
  26. 12
      package/mac80211/patches/553-ath9k_debugfs_diag.patch
  27. 4
      package/mac80211/patches/555-ath9k-allow-to-disable-bands-via-platform-data.patch
  28. 10
      package/mac80211/patches/603-rt2x00-introduce-rt2x00eeprom.patch
  29. 2
      package/mac80211/patches/604-rt2x00-add-CONFIG_RT2X00_LIB_EEPROM-option.patch
  30. 2
      package/mac80211/patches/606-rt2x00_no_realign.patch
  31. 4
      package/mac80211/patches/607-rt2x00-allow_disabling_bands_through_platform_data.patch
  32. 4
      package/mac80211/patches/608-add_platform_data_mac_addr.patch
  33. 16
      package/mac80211/patches/610-rt2x00-fix-rt3352-ext-pa.patch
  34. 14
      package/mac80211/patches/611-rt2x00-rf_vals-rt3352-xtal20.patch
  35. 2
      package/mac80211/patches/700-mwl8k-missing-pci-id-for-WNR854T.patch
  36. 10
      package/mac80211/patches/850-brcmsmac-start-adding-support-for-core-rev-28.patch

@ -293,6 +293,9 @@ menu "Global build settings"
bool "Enable printk timestamps" bool "Enable printk timestamps"
default y default y
config KERNEL_RELAY
bool
# #
# CGROUP support symbols # CGROUP support symbols
# #

@ -10,10 +10,10 @@ include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=mac80211 PKG_NAME:=mac80211
PKG_VERSION:=2013-01-07 PKG_VERSION:=2013-02-22
PKG_RELEASE:=1 PKG_RELEASE:=1
PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
PKG_MD5SUM:=bc4924720ebd8f3fcd9588e3c0f4db1c PKG_MD5SUM:=de1a03ca1f72748d4523672c8facbf7e
PKG_SOURCE:=compat-wireless-$(PKG_VERSION).tar.bz2 PKG_SOURCE:=compat-wireless-$(PKG_VERSION).tar.bz2
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/compat-wireless-$(PKG_VERSION) PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/compat-wireless-$(PKG_VERSION)
@ -385,6 +385,7 @@ define KernelPackage/ath/config
config PACKAGE_ATH_DEBUG config PACKAGE_ATH_DEBUG
bool "Atheros wireless debugging" bool "Atheros wireless debugging"
select KERNEL_RELAY
help help
Say Y, if you want to debug atheros wireless drivers. Say Y, if you want to debug atheros wireless drivers.
Right now only ath9k makes use of this. Right now only ath9k makes use of this.

@ -1,6 +1,6 @@
--- a/config.mk --- a/config.mk
+++ b/config.mk +++ b/config.mk
@@ -354,7 +354,8 @@ export CONFIG_IPW2200_QOS=y @@ -364,7 +364,8 @@ export CONFIG_IPW2200_QOS=y
# % echo 1 > /sys/bus/pci/drivers/ipw2200/*/rtap_iface # % echo 1 > /sys/bus/pci/drivers/ipw2200/*/rtap_iface
endif #CONFIG_WIRELESS_EXT endif #CONFIG_WIRELESS_EXT
@ -10,7 +10,7 @@
# Sonics Silicon Backplane # Sonics Silicon Backplane
export CONFIG_SSB_SPROM=y export CONFIG_SSB_SPROM=y
@@ -367,7 +368,7 @@ endif #CONFIG_PCMCIA @@ -377,7 +378,7 @@ endif #CONFIG_PCMCIA
# export CONFIG_SSB_DEBUG=y # export CONFIG_SSB_DEBUG=y
export CONFIG_SSB_DRIVER_PCICORE=y export CONFIG_SSB_DRIVER_PCICORE=y
export CONFIG_B43_SSB=y export CONFIG_B43_SSB=y

@ -1,6 +1,6 @@
--- a/net/mac80211/mesh_pathtbl.c --- a/net/mac80211/mesh_pathtbl.c
+++ b/net/mac80211/mesh_pathtbl.c +++ b/net/mac80211/mesh_pathtbl.c
@@ -813,7 +813,6 @@ static void table_flush_by_iface(struct @@ -818,7 +818,6 @@ static void table_flush_by_iface(struct
struct hlist_node *p; struct hlist_node *p;
int i; int i;

File diff suppressed because it is too large Load Diff

@ -1,6 +1,6 @@
--- a/net/mac80211/cfg.c --- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c
@@ -1953,7 +1953,7 @@ static int ieee80211_scan(struct wiphy * @@ -2009,7 +2009,7 @@ static int ieee80211_scan(struct wiphy *
* the frames sent while scanning on other channel will be * the frames sent while scanning on other channel will be
* lost) * lost)
*/ */

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath9k/init.c --- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c
@@ -45,7 +45,7 @@ int ath9k_modparam_nohwcrypt; @@ -46,7 +46,7 @@ int ath9k_modparam_nohwcrypt;
module_param_named(nohwcrypt, ath9k_modparam_nohwcrypt, int, 0444); module_param_named(nohwcrypt, ath9k_modparam_nohwcrypt, int, 0444);
MODULE_PARM_DESC(nohwcrypt, "Disable hardware encryption"); MODULE_PARM_DESC(nohwcrypt, "Disable hardware encryption");

@ -33,7 +33,7 @@
if (!wiphy->bands[IEEE80211_BAND_5GHZ]) if (!wiphy->bands[IEEE80211_BAND_5GHZ])
return; return;
@@ -507,6 +519,10 @@ ath_regd_init_wiphy(struct ath_regulator @@ -505,6 +517,10 @@ ath_regd_init_wiphy(struct ath_regulator
{ {
const struct ieee80211_regdomain *regd; const struct ieee80211_regdomain *regd;

@ -1,6 +1,6 @@
--- a/net/wireless/reg.c --- a/net/wireless/reg.c
+++ b/net/wireless/reg.c +++ b/net/wireless/reg.c
@@ -1719,6 +1719,8 @@ void regulatory_hint_11d(struct wiphy *w @@ -1730,6 +1730,8 @@ void regulatory_hint_11d(struct wiphy *w
enum environment_cap env = ENVIRON_ANY; enum environment_cap env = ENVIRON_ANY;
struct regulatory_request *request, *lr; struct regulatory_request *request, *lr;
@ -9,7 +9,7 @@
mutex_lock(&reg_mutex); mutex_lock(&reg_mutex);
lr = get_last_request(); lr = get_last_request();
@@ -1915,6 +1917,7 @@ static void restore_regulatory_settings( @@ -1926,6 +1928,7 @@ static void restore_regulatory_settings(
void regulatory_hint_disconnect(void) void regulatory_hint_disconnect(void)
{ {

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath9k/init.c --- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c
@@ -722,6 +722,7 @@ static const struct ieee80211_iface_limi @@ -727,6 +727,7 @@ static const struct ieee80211_iface_limi
#endif #endif
BIT(NL80211_IFTYPE_AP) | BIT(NL80211_IFTYPE_AP) |
BIT(NL80211_IFTYPE_P2P_GO) }, BIT(NL80211_IFTYPE_P2P_GO) },

@ -18,7 +18,7 @@
goto end; goto end;
--- a/drivers/net/wireless/ath/ath5k/base.c --- a/drivers/net/wireless/ath/ath5k/base.c
+++ b/drivers/net/wireless/ath/ath5k/base.c +++ b/drivers/net/wireless/ath/ath5k/base.c
@@ -1867,7 +1867,7 @@ ath5k_beacon_send(struct ath5k_hw *ah) @@ -1868,7 +1868,7 @@ ath5k_beacon_send(struct ath5k_hw *ah)
} }
if ((ah->opmode == NL80211_IFTYPE_AP && ah->num_ap_vifs + if ((ah->opmode == NL80211_IFTYPE_AP && ah->num_ap_vifs +
@ -27,7 +27,7 @@
ah->opmode == NL80211_IFTYPE_MESH_POINT) { ah->opmode == NL80211_IFTYPE_MESH_POINT) {
u64 tsf = ath5k_hw_get_tsf64(ah); u64 tsf = ath5k_hw_get_tsf64(ah);
u32 tsftu = TSF_TO_TU(tsf); u32 tsftu = TSF_TO_TU(tsf);
@@ -1953,7 +1953,7 @@ ath5k_beacon_update_timers(struct ath5k_ @@ -1954,7 +1954,7 @@ ath5k_beacon_update_timers(struct ath5k_
intval = ah->bintval & AR5K_BEACON_PERIOD; intval = ah->bintval & AR5K_BEACON_PERIOD;
if (ah->opmode == NL80211_IFTYPE_AP && ah->num_ap_vifs if (ah->opmode == NL80211_IFTYPE_AP && ah->num_ap_vifs
@ -36,7 +36,7 @@
intval /= ATH_BCBUF; /* staggered multi-bss beacons */ intval /= ATH_BCBUF; /* staggered multi-bss beacons */
if (intval < 15) if (intval < 15)
ATH5K_WARN(ah, "intval %u is too low, min 15\n", ATH5K_WARN(ah, "intval %u is too low, min 15\n",
@@ -2417,6 +2417,7 @@ static const struct ieee80211_iface_limi @@ -2418,6 +2418,7 @@ static const struct ieee80211_iface_limi
BIT(NL80211_IFTYPE_MESH_POINT) | BIT(NL80211_IFTYPE_MESH_POINT) |
#endif #endif
BIT(NL80211_IFTYPE_AP) }, BIT(NL80211_IFTYPE_AP) },

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath5k/reset.c --- a/drivers/net/wireless/ath/ath5k/reset.c
+++ b/drivers/net/wireless/ath/ath5k/reset.c +++ b/drivers/net/wireless/ath/ath5k/reset.c
@@ -1156,6 +1156,7 @@ ath5k_hw_reset(struct ath5k_hw *ah, enum @@ -1158,6 +1158,7 @@ ath5k_hw_reset(struct ath5k_hw *ah, enum
tsf_lo = 0; tsf_lo = 0;
mode = 0; mode = 0;
@ -8,7 +8,7 @@
/* /*
* Sanity check for fast flag * Sanity check for fast flag
* Fast channel change only available * Fast channel change only available
@@ -1163,6 +1164,7 @@ ath5k_hw_reset(struct ath5k_hw *ah, enum @@ -1165,6 +1166,7 @@ ath5k_hw_reset(struct ath5k_hw *ah, enum
*/ */
if (fast && (ah->ah_radio != AR5K_RF2413) && if (fast && (ah->ah_radio != AR5K_RF2413) &&
(ah->ah_radio != AR5K_RF5413)) (ah->ah_radio != AR5K_RF5413))

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath9k/debug.c --- a/drivers/net/wireless/ath/ath9k/debug.c
+++ b/drivers/net/wireless/ath/ath9k/debug.c +++ b/drivers/net/wireless/ath/ath9k/debug.c
@@ -1717,6 +1717,53 @@ void ath9k_get_et_stats(struct ieee80211 @@ -2003,6 +2003,53 @@ void ath9k_get_et_stats(struct ieee80211
WARN_ON(i != ATH9K_SSTATS_LEN); WARN_ON(i != ATH9K_SSTATS_LEN);
} }
@ -54,7 +54,7 @@
int ath9k_init_debug(struct ath_hw *ah) int ath9k_init_debug(struct ath_hw *ah)
{ {
struct ath_common *common = ath9k_hw_common(ah); struct ath_common *common = ath9k_hw_common(ah);
@@ -1734,6 +1781,8 @@ int ath9k_init_debug(struct ath_hw *ah) @@ -2020,6 +2067,8 @@ int ath9k_init_debug(struct ath_hw *ah)
ath9k_dfs_init_debug(sc); ath9k_dfs_init_debug(sc);

@ -71,7 +71,7 @@
--- a/drivers/net/wireless/ath/ath9k/hw.h --- a/drivers/net/wireless/ath/ath9k/hw.h
+++ b/drivers/net/wireless/ath/ath9k/hw.h +++ b/drivers/net/wireless/ath/ath9k/hw.h
@@ -700,6 +700,7 @@ enum ath_cal_list { @@ -740,6 +740,7 @@ enum ath_cal_list {
#define AH_USE_EEPROM 0x1 #define AH_USE_EEPROM 0x1
#define AH_UNPLUGGED 0x2 /* The card has been physically removed. */ #define AH_UNPLUGGED 0x2 /* The card has been physically removed. */
#define AH_FASTCC 0x4 #define AH_FASTCC 0x4
@ -81,7 +81,7 @@
struct ath_ops reg_ops; struct ath_ops reg_ops;
--- a/drivers/net/wireless/ath/ath9k/init.c --- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c
@@ -582,6 +582,8 @@ static int ath9k_init_softc(u16 devid, s @@ -587,6 +587,8 @@ static int ath9k_init_softc(u16 devid, s
ah->is_clk_25mhz = pdata->is_clk_25mhz; ah->is_clk_25mhz = pdata->is_clk_25mhz;
ah->get_mac_revision = pdata->get_mac_revision; ah->get_mac_revision = pdata->get_mac_revision;
ah->external_reset = pdata->external_reset; ah->external_reset = pdata->external_reset;

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath9k/init.c --- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c
@@ -955,23 +955,23 @@ static int __init ath9k_init(void) @@ -965,23 +965,23 @@ static int __init ath9k_init(void)
goto err_out; goto err_out;
} }

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath9k/ath9k.h --- a/drivers/net/wireless/ath/ath9k/ath9k.h
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h +++ b/drivers/net/wireless/ath/ath9k/ath9k.h
@@ -670,6 +670,7 @@ struct ath_softc { @@ -690,6 +690,7 @@ struct ath_softc {
struct ieee80211_hw *hw; struct ieee80211_hw *hw;
struct device *dev; struct device *dev;
@ -8,9 +8,9 @@
struct survey_info *cur_survey; struct survey_info *cur_survey;
struct survey_info survey[ATH9K_NUM_CHANNELS]; struct survey_info survey[ATH9K_NUM_CHANNELS];
@@ -742,6 +743,7 @@ struct ath_softc { @@ -894,6 +895,7 @@ struct fft_sample_ht20 {
#endif u8 data[SPECTRAL_HT20_NUM_BINS];
}; } __packed;
+int ath9k_config(struct ieee80211_hw *hw, u32 changed); +int ath9k_config(struct ieee80211_hw *hw, u32 changed);
void ath9k_tasklet(unsigned long data); void ath9k_tasklet(unsigned long data);
@ -18,7 +18,7 @@
--- a/drivers/net/wireless/ath/ath9k/debug.c --- a/drivers/net/wireless/ath/ath9k/debug.c
+++ b/drivers/net/wireless/ath/ath9k/debug.c +++ b/drivers/net/wireless/ath/ath9k/debug.c
@@ -1764,6 +1764,50 @@ static const struct file_operations fops @@ -2050,6 +2050,50 @@ static const struct file_operations fops
.owner = THIS_MODULE .owner = THIS_MODULE
}; };
@ -69,7 +69,7 @@
int ath9k_init_debug(struct ath_hw *ah) int ath9k_init_debug(struct ath_hw *ah)
{ {
struct ath_common *common = ath9k_hw_common(ah); struct ath_common *common = ath9k_hw_common(ah);
@@ -1783,6 +1827,8 @@ int ath9k_init_debug(struct ath_hw *ah) @@ -2069,6 +2113,8 @@ int ath9k_init_debug(struct ath_hw *ah)
debugfs_create_file("eeprom", S_IRUSR, sc->debug.debugfs_phy, sc, debugfs_create_file("eeprom", S_IRUSR, sc->debug.debugfs_phy, sc,
&fops_eeprom); &fops_eeprom);
@ -80,8 +80,8 @@
debugfs_create_file("interrupt", S_IRUSR, sc->debug.debugfs_phy, sc, debugfs_create_file("interrupt", S_IRUSR, sc->debug.debugfs_phy, sc,
--- a/drivers/net/wireless/ath/ath9k/main.c --- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -1065,7 +1065,7 @@ static void ath9k_disable_ps(struct ath_ @@ -1131,7 +1131,7 @@ int ath9k_spectral_scan_config(struct ie
ath_dbg(common, PS, "PowerSave disabled\n"); return 0;
} }
-static int ath9k_config(struct ieee80211_hw *hw, u32 changed) -static int ath9k_config(struct ieee80211_hw *hw, u32 changed)
@ -89,7 +89,7 @@
{ {
struct ath_softc *sc = hw->priv; struct ath_softc *sc = hw->priv;
struct ath_hw *ah = sc->sc_ah; struct ath_hw *ah = sc->sc_ah;
@@ -1119,9 +1119,11 @@ static int ath9k_config(struct ieee80211 @@ -1185,9 +1185,11 @@ static int ath9k_config(struct ieee80211
if ((changed & IEEE80211_CONF_CHANGE_CHANNEL) || reset_channel) { if ((changed & IEEE80211_CONF_CHANGE_CHANNEL) || reset_channel) {
struct ieee80211_channel *curchan = hw->conf.channel; struct ieee80211_channel *curchan = hw->conf.channel;
@ -101,7 +101,7 @@
if (ah->curchan) if (ah->curchan)
old_pos = ah->curchan - &ah->channels[0]; old_pos = ah->curchan - &ah->channels[0];
@@ -1164,7 +1166,23 @@ static int ath9k_config(struct ieee80211 @@ -1230,7 +1232,23 @@ static int ath9k_config(struct ieee80211
memset(&sc->survey[pos], 0, sizeof(struct survey_info)); memset(&sc->survey[pos], 0, sizeof(struct survey_info));
} }

@ -1,6 +1,6 @@
--- a/net/mac80211/iface.c --- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c +++ b/net/mac80211/iface.c
@@ -1033,6 +1033,7 @@ static const struct net_device_ops ieee8 @@ -989,6 +989,7 @@ static const struct net_device_ops ieee8
static void ieee80211_if_setup(struct net_device *dev) static void ieee80211_if_setup(struct net_device *dev)
{ {
ether_setup(dev); ether_setup(dev);

@ -1,6 +1,6 @@
--- a/include/net/mac80211.h --- a/include/net/mac80211.h
+++ b/include/net/mac80211.h +++ b/include/net/mac80211.h
@@ -1508,6 +1508,7 @@ struct ieee80211_hw { @@ -1554,6 +1554,7 @@ struct ieee80211_hw {
u8 max_tx_aggregation_subframes; u8 max_tx_aggregation_subframes;
u8 offchannel_tx_hw_queue; u8 offchannel_tx_hw_queue;
u8 radiotap_mcs_details; u8 radiotap_mcs_details;
@ -10,7 +10,7 @@
}; };
--- a/net/mac80211/cfg.c --- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c
@@ -2133,7 +2133,9 @@ static int ieee80211_get_tx_power(struct @@ -2190,7 +2190,9 @@ static int ieee80211_get_tx_power(struct
struct ieee80211_local *local = wiphy_priv(wiphy); struct ieee80211_local *local = wiphy_priv(wiphy);
struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev);
@ -23,7 +23,7 @@
*dbm = sdata->vif.bss_conf.txpower; *dbm = sdata->vif.bss_conf.txpower;
--- a/net/mac80211/main.c --- a/net/mac80211/main.c
+++ b/net/mac80211/main.c +++ b/net/mac80211/main.c
@@ -167,6 +167,7 @@ static u32 ieee80211_hw_conf_chan(struct @@ -166,6 +166,7 @@ static u32 ieee80211_hw_conf_chan(struct
if (local->hw.conf.power_level != power) { if (local->hw.conf.power_level != power) {
changed |= IEEE80211_CONF_CHANGE_POWER; changed |= IEEE80211_CONF_CHANGE_POWER;

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath9k/main.c --- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -1189,6 +1189,8 @@ int ath9k_config(struct ieee80211_hw *hw @@ -1255,6 +1255,8 @@ int ath9k_config(struct ieee80211_hw *hw
return -EINVAL; return -EINVAL;
} }
@ -9,7 +9,7 @@
/* /*
* The most recent snapshot of channel->noisefloor for the old * The most recent snapshot of channel->noisefloor for the old
* channel is only available after the hardware reset. Copy it to * channel is only available after the hardware reset. Copy it to
@@ -1203,6 +1205,7 @@ int ath9k_config(struct ieee80211_hw *hw @@ -1274,6 +1276,7 @@ int ath9k_config(struct ieee80211_hw *hw
sc->config.txpowlimit = 2 * conf->power_level; sc->config.txpowlimit = 2 * conf->power_level;
ath9k_cmn_update_txpow(ah, sc->curtxpow, ath9k_cmn_update_txpow(ah, sc->curtxpow,
sc->config.txpowlimit, &sc->curtxpow); sc->config.txpowlimit, &sc->curtxpow);

@ -1,6 +1,6 @@
--- a/include/net/mac80211.h --- a/include/net/mac80211.h
+++ b/include/net/mac80211.h +++ b/include/net/mac80211.h
@@ -816,6 +816,9 @@ enum mac80211_rx_flags { @@ -839,6 +839,9 @@ enum mac80211_rx_flags {
* @signal: signal strength when receiving this frame, either in dBm, in dB or * @signal: signal strength when receiving this frame, either in dBm, in dB or
* unspecified depending on the hardware capabilities flags * unspecified depending on the hardware capabilities flags
* @IEEE80211_HW_SIGNAL_* * @IEEE80211_HW_SIGNAL_*
@ -10,7 +10,7 @@
* @antenna: antenna used * @antenna: antenna used
* @rate_idx: index of data rate into band's supported rates or MCS index if * @rate_idx: index of data rate into band's supported rates or MCS index if
* HT or VHT is used (%RX_FLAG_HT/%RX_FLAG_VHT) * HT or VHT is used (%RX_FLAG_HT/%RX_FLAG_VHT)
@@ -847,6 +850,8 @@ struct ieee80211_rx_status { @@ -870,6 +873,8 @@ struct ieee80211_rx_status {
u8 band; u8 band;
u8 antenna; u8 antenna;
s8 signal; s8 signal;
@ -21,7 +21,7 @@
u8 vendor_radiotap_oui[3]; u8 vendor_radiotap_oui[3];
--- a/net/mac80211/sta_info.h --- a/net/mac80211/sta_info.h
+++ b/net/mac80211/sta_info.h +++ b/net/mac80211/sta_info.h
@@ -335,6 +335,11 @@ struct sta_info { @@ -342,6 +342,11 @@ struct sta_info {
int last_signal; int last_signal;
struct ewma avg_signal; struct ewma avg_signal;
int last_ack_signal; int last_ack_signal;
@ -35,7 +35,7 @@
--- a/net/mac80211/rx.c --- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c +++ b/net/mac80211/rx.c
@@ -1375,6 +1375,7 @@ ieee80211_rx_h_sta_process(struct ieee80 @@ -1383,6 +1383,7 @@ ieee80211_rx_h_sta_process(struct ieee80
struct sk_buff *skb = rx->skb; struct sk_buff *skb = rx->skb;
struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb);
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
@ -43,7 +43,7 @@
if (!sta) if (!sta)
return RX_CONTINUE; return RX_CONTINUE;
@@ -1425,6 +1426,19 @@ ieee80211_rx_h_sta_process(struct ieee80 @@ -1433,6 +1434,19 @@ ieee80211_rx_h_sta_process(struct ieee80
ewma_add(&sta->avg_signal, -status->signal); ewma_add(&sta->avg_signal, -status->signal);
} }
@ -65,7 +65,7 @@
* exchange sequence. * exchange sequence.
--- a/net/mac80211/sta_info.c --- a/net/mac80211/sta_info.c
+++ b/net/mac80211/sta_info.c +++ b/net/mac80211/sta_info.c
@@ -356,6 +356,8 @@ struct sta_info *sta_info_alloc(struct i @@ -353,6 +353,8 @@ struct sta_info *sta_info_alloc(struct i
do_posix_clock_monotonic_gettime(&uptime); do_posix_clock_monotonic_gettime(&uptime);
sta->last_connected = uptime.tv_sec; sta->last_connected = uptime.tv_sec;
ewma_init(&sta->avg_signal, 1024, 8); ewma_init(&sta->avg_signal, 1024, 8);
@ -76,25 +76,25 @@
kfree(sta); kfree(sta);
--- a/include/net/cfg80211.h --- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h +++ b/include/net/cfg80211.h
@@ -653,6 +653,8 @@ struct station_parameters { @@ -721,6 +721,8 @@ struct station_parameters {
* @STATION_INFO_STA_FLAGS: @sta_flags filled * @STATION_INFO_LOCAL_PM: @local_pm filled
* @STATION_INFO_BEACON_LOSS_COUNT: @beacon_loss_count filled * @STATION_INFO_PEER_PM: @peer_pm filled
* @STATION_INFO_T_OFFSET: @t_offset filled * @STATION_INFO_NONPEER_PM: @nonpeer_pm filled
+ * @STATION_INFO_CHAIN_SIGNAL: @chain_signal filled + * @STATION_INFO_CHAIN_SIGNAL: @chain_signal filled
+ * @STATION_INFO_CHAIN_SIGNAL_AVG: @chain_signal_avg filled + * @STATION_INFO_CHAIN_SIGNAL_AVG: @chain_signal_avg filled
*/ */
enum station_info_flags { enum station_info_flags {
STATION_INFO_INACTIVE_TIME = 1<<0, STATION_INFO_INACTIVE_TIME = 1<<0,
@@ -676,6 +678,8 @@ enum station_info_flags { @@ -749,6 +751,8 @@ enum station_info_flags {
STATION_INFO_STA_FLAGS = 1<<18, STATION_INFO_NONPEER_PM = 1<<23,
STATION_INFO_BEACON_LOSS_COUNT = 1<<19, STATION_INFO_RX_BYTES64 = 1<<24,
STATION_INFO_T_OFFSET = 1<<20, STATION_INFO_TX_BYTES64 = 1<<25,
+ STATION_INFO_CHAIN_SIGNAL = 1<<21, + STATION_INFO_CHAIN_SIGNAL = 1<<26,
+ STATION_INFO_CHAIN_SIGNAL_AVG = 1<<22, + STATION_INFO_CHAIN_SIGNAL_AVG = 1<<27,
}; };
/** /**
@@ -769,6 +773,9 @@ struct sta_bss_parameters { @@ -842,6 +846,9 @@ struct sta_bss_parameters {
* For CFG80211_SIGNAL_TYPE_MBM, value is expressed in _dBm_. * For CFG80211_SIGNAL_TYPE_MBM, value is expressed in _dBm_.
* @signal_avg: Average signal strength, type depends on the wiphy's signal_type. * @signal_avg: Average signal strength, type depends on the wiphy's signal_type.
* For CFG80211_SIGNAL_TYPE_MBM, value is expressed in _dBm_. * For CFG80211_SIGNAL_TYPE_MBM, value is expressed in _dBm_.
@ -104,7 +104,7 @@
* @txrate: current unicast bitrate from this station * @txrate: current unicast bitrate from this station
* @rxrate: current unicast bitrate to this station * @rxrate: current unicast bitrate to this station
* @rx_packets: packets received from this station * @rx_packets: packets received from this station
@@ -801,6 +808,11 @@ struct station_info { @@ -877,6 +884,11 @@ struct station_info {
u8 plink_state; u8 plink_state;
s8 signal; s8 signal;
s8 signal_avg; s8 signal_avg;
@ -135,7 +135,7 @@
u8 rs_num_delims; u8 rs_num_delims;
--- a/drivers/net/wireless/ath/ath9k/recv.c --- a/drivers/net/wireless/ath/ath9k/recv.c
+++ b/drivers/net/wireless/ath/ath9k/recv.c +++ b/drivers/net/wireless/ath/ath9k/recv.c
@@ -936,6 +936,7 @@ static int ath9k_rx_skb_preprocess(struc @@ -937,6 +937,7 @@ static int ath9k_rx_skb_preprocess(struc
bool *decrypt_error) bool *decrypt_error)
{ {
struct ath_hw *ah = common->ah; struct ath_hw *ah = common->ah;
@ -143,7 +143,7 @@
/* /*
* everything but the rate is checked here, the rate check is done * everything but the rate is checked here, the rate check is done
@@ -961,6 +962,20 @@ static int ath9k_rx_skb_preprocess(struc @@ -962,6 +963,20 @@ static int ath9k_rx_skb_preprocess(struc
if (rx_stats->rs_moreaggr) if (rx_stats->rs_moreaggr)
rx_status->flag |= RX_FLAG_NO_SIGNAL_VAL; rx_status->flag |= RX_FLAG_NO_SIGNAL_VAL;
@ -164,6 +164,15 @@
return 0; return 0;
} }
@@ -1070,7 +1085,7 @@ static int ath_process_fft(struct ath_so
fft_sample.tlv.length = __cpu_to_be16(length);
fft_sample.freq = __cpu_to_be16(ah->curchan->chan->center_freq);
- fft_sample.rssi = fix_rssi_inv_only(rs->rs_rssi_ctl0);
+ fft_sample.rssi = fix_rssi_inv_only(rs->rs_rssi_ctl[0]);
fft_sample.noise = ah->noise;
switch (len - SPECTRAL_HT20_TOTAL_DATA_LEN) {
--- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c --- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c
+++ b/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
@ -227,7 +236,7 @@
if (ads.ds_rxstatus8 & AR_RxKeyIdxValid) if (ads.ds_rxstatus8 & AR_RxKeyIdxValid)
--- a/drivers/net/wireless/ath/ath9k/debug.c --- a/drivers/net/wireless/ath/ath9k/debug.c
+++ b/drivers/net/wireless/ath/ath9k/debug.c +++ b/drivers/net/wireless/ath/ath9k/debug.c
@@ -938,12 +938,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 #ifdef CONFIG_ATH9K_MAC_DEBUG
spin_lock(&sc->debug.samp_lock); spin_lock(&sc->debug.samp_lock);
RX_SAMP_DBG(jiffies) = jiffies; RX_SAMP_DBG(jiffies) = jiffies;
@ -248,19 +257,19 @@
RX_SAMP_DBG(rate) = rs->rs_rate; RX_SAMP_DBG(rate) = rs->rs_rate;
--- a/include/uapi/linux/nl80211.h --- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h +++ b/include/uapi/linux/nl80211.h
@@ -1838,6 +1838,8 @@ enum nl80211_sta_bss_param { @@ -1918,6 +1918,8 @@ enum nl80211_sta_bss_param {
* @NL80211_STA_INFO_STA_FLAGS: Contains a struct nl80211_sta_flag_update. * @NL80211_STA_INFO_PEER_PM: peer mesh STA link-specific power mode
* @NL80211_STA_INFO_BEACON_LOSS: count of times beacon loss was detected (u32) * @NL80211_STA_INFO_NONPEER_PM: neighbor mesh STA power save mode towards
* @NL80211_STA_INFO_T_OFFSET: timing offset with respect to this STA (s64) * non-peer STA
+ * @NL80211_STA_INFO_CHAIN_SIGNAL: per-chain signal strength of last PPDU + * @NL80211_STA_INFO_CHAIN_SIGNAL: per-chain signal strength of last PPDU
+ * @NL80211_STA_INFO_CHAIN_SIGNAL_AVG: per-chain signal strength average + * @NL80211_STA_INFO_CHAIN_SIGNAL_AVG: per-chain signal strength average
* @__NL80211_STA_INFO_AFTER_LAST: internal * @__NL80211_STA_INFO_AFTER_LAST: internal
* @NL80211_STA_INFO_MAX: highest possible station info attribute * @NL80211_STA_INFO_MAX: highest possible station info attribute
*/ */
@@ -1862,6 +1864,8 @@ enum nl80211_sta_info { @@ -1947,6 +1949,8 @@ enum nl80211_sta_info {
NL80211_STA_INFO_STA_FLAGS, NL80211_STA_INFO_NONPEER_PM,
NL80211_STA_INFO_BEACON_LOSS, NL80211_STA_INFO_RX_BYTES64,
NL80211_STA_INFO_T_OFFSET, NL80211_STA_INFO_TX_BYTES64,
+ NL80211_STA_INFO_CHAIN_SIGNAL, + NL80211_STA_INFO_CHAIN_SIGNAL,
+ NL80211_STA_INFO_CHAIN_SIGNAL_AVG, + NL80211_STA_INFO_CHAIN_SIGNAL_AVG,
@ -268,7 +277,7 @@
__NL80211_STA_INFO_AFTER_LAST, __NL80211_STA_INFO_AFTER_LAST,
--- a/net/wireless/nl80211.c --- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c
@@ -2910,6 +2910,32 @@ static bool nl80211_put_sta_rate(struct @@ -3082,6 +3082,32 @@ static bool nl80211_put_sta_rate(struct
return true; return true;
} }
@ -301,7 +310,7 @@
static int nl80211_send_station(struct sk_buff *msg, u32 portid, u32 seq, static int nl80211_send_station(struct sk_buff *msg, u32 portid, u32 seq,
int flags, int flags,
struct cfg80211_registered_device *rdev, struct cfg80211_registered_device *rdev,
@@ -2971,6 +2997,18 @@ static int nl80211_send_station(struct s @@ -3153,6 +3179,18 @@ static int nl80211_send_station(struct s
default: default:
break; break;
} }
@ -322,7 +331,7 @@
NL80211_STA_INFO_TX_BITRATE)) NL80211_STA_INFO_TX_BITRATE))
--- a/net/mac80211/cfg.c --- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c
@@ -435,6 +435,7 @@ static void sta_set_sinfo(struct sta_inf @@ -445,6 +445,7 @@ static void sta_set_sinfo(struct sta_inf
struct ieee80211_sub_if_data *sdata = sta->sdata; struct ieee80211_sub_if_data *sdata = sta->sdata;
struct ieee80211_local *local = sdata->local; struct ieee80211_local *local = sdata->local;
struct timespec uptime; struct timespec uptime;
@ -330,7 +339,7 @@
sinfo->generation = sdata->local->sta_generation; sinfo->generation = sdata->local->sta_generation;
@@ -474,6 +475,17 @@ static void sta_set_sinfo(struct sta_inf @@ -484,6 +485,17 @@ static void sta_set_sinfo(struct sta_inf
sinfo->signal = (s8)sta->last_signal; sinfo->signal = (s8)sta->last_signal;
sinfo->signal_avg = (s8) -ewma_read(&sta->avg_signal); sinfo->signal_avg = (s8) -ewma_read(&sta->avg_signal);
} }

@ -1,6 +1,6 @@
--- a/include/net/mac80211.h --- a/include/net/mac80211.h
+++ b/include/net/mac80211.h +++ b/include/net/mac80211.h
@@ -955,6 +955,7 @@ enum ieee80211_smps_mode { @@ -978,6 +978,7 @@ enum ieee80211_smps_mode {
* *
* @power_level: requested transmit power (in dBm), backward compatibility * @power_level: requested transmit power (in dBm), backward compatibility
* value only that is set to the minimum of all interfaces * value only that is set to the minimum of all interfaces
@ -8,7 +8,7 @@
* *
* @channel: the channel to tune to * @channel: the channel to tune to
* @channel_type: the channel (HT) type * @channel_type: the channel (HT) type
@@ -976,6 +977,7 @@ struct ieee80211_conf { @@ -1000,6 +1001,7 @@ struct ieee80211_conf {
u32 flags; u32 flags;
int power_level, dynamic_ps_timeout; int power_level, dynamic_ps_timeout;
int max_sleep_period; int max_sleep_period;
@ -18,8 +18,8 @@
u8 ps_dtim_period; u8 ps_dtim_period;
--- a/net/mac80211/ieee80211_i.h --- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h
@@ -1144,6 +1144,7 @@ struct ieee80211_local { @@ -1116,6 +1116,7 @@ struct ieee80211_local {
bool disable_dynamic_ps; int dynamic_ps_forced_timeout;
int user_power_level; /* in dBm, for all interfaces */ int user_power_level; /* in dBm, for all interfaces */
+ int user_antenna_gain; /* in dBi */ + int user_antenna_gain; /* in dBi */
@ -28,9 +28,9 @@
--- a/include/uapi/linux/nl80211.h --- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h +++ b/include/uapi/linux/nl80211.h
@@ -1580,6 +1580,8 @@ enum nl80211_attrs { @@ -1654,6 +1654,8 @@ enum nl80211_attrs {
NL80211_ATTR_P2P_CTWINDOW, NL80211_ATTR_STA_CAPABILITY,
NL80211_ATTR_P2P_OPPPS, NL80211_ATTR_STA_EXT_CAPABILITY,
+ NL80211_ATTR_WIPHY_ANTENNA_GAIN, + NL80211_ATTR_WIPHY_ANTENNA_GAIN,
+ +
@ -39,15 +39,15 @@
__NL80211_ATTR_AFTER_LAST, __NL80211_ATTR_AFTER_LAST,
--- a/net/wireless/nl80211.c --- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c
@@ -365,6 +365,7 @@ static const struct nla_policy nl80211_p @@ -370,6 +370,7 @@ static const struct nla_policy nl80211_p
[NL80211_ATTR_SCAN_FLAGS] = { .type = NLA_U32 }, [NL80211_ATTR_MAC_ADDRS] = { .type = NLA_NESTED },
[NL80211_ATTR_P2P_CTWINDOW] = { .type = NLA_U8 }, [NL80211_ATTR_STA_CAPABILITY] = { .type = NLA_U16 },
[NL80211_ATTR_P2P_OPPPS] = { .type = NLA_U8 }, [NL80211_ATTR_STA_EXT_CAPABILITY] = { .type = NLA_BINARY, },
+ [NL80211_ATTR_WIPHY_ANTENNA_GAIN] = { .type = NLA_U32 }, + [NL80211_ATTR_WIPHY_ANTENNA_GAIN] = { .type = NLA_U32 },
}; };
/* policy for the key attributes */ /* policy for the key attributes */
@@ -1652,6 +1653,22 @@ static int nl80211_set_wiphy(struct sk_b @@ -1706,6 +1707,22 @@ static int nl80211_set_wiphy(struct sk_b
goto bad_res; goto bad_res;
} }
@ -72,7 +72,7 @@
u32 tx_ant, rx_ant; u32 tx_ant, rx_ant;
--- a/net/mac80211/cfg.c --- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c
@@ -2155,6 +2155,19 @@ static int ieee80211_get_tx_power(struct @@ -2212,6 +2212,19 @@ static int ieee80211_get_tx_power(struct
return 0; return 0;
} }
@ -92,7 +92,7 @@
static int ieee80211_set_wds_peer(struct wiphy *wiphy, struct net_device *dev, static int ieee80211_set_wds_peer(struct wiphy *wiphy, struct net_device *dev,
const u8 *addr) const u8 *addr)
{ {
@@ -3278,6 +3291,7 @@ struct cfg80211_ops mac80211_config_ops @@ -3369,6 +3382,7 @@ struct cfg80211_ops mac80211_config_ops
.set_wiphy_params = ieee80211_set_wiphy_params, .set_wiphy_params = ieee80211_set_wiphy_params,
.set_tx_power = ieee80211_set_tx_power, .set_tx_power = ieee80211_set_tx_power,
.get_tx_power = ieee80211_get_tx_power, .get_tx_power = ieee80211_get_tx_power,
@ -102,7 +102,7 @@
CFG80211_TESTMODE_CMD(ieee80211_testmode_cmd) CFG80211_TESTMODE_CMD(ieee80211_testmode_cmd)
--- a/include/net/cfg80211.h --- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h +++ b/include/net/cfg80211.h
@@ -1693,6 +1693,7 @@ struct cfg80211_gtk_rekey_data { @@ -1862,6 +1862,7 @@ struct cfg80211_gtk_rekey_data {
* (as advertised by the nl80211 feature flag.) * (as advertised by the nl80211 feature flag.)
* @get_tx_power: store the current TX power into the dbm variable; * @get_tx_power: store the current TX power into the dbm variable;
* return 0 if successful * return 0 if successful
@ -110,7 +110,7 @@
* *
* @set_wds_peer: set the WDS peer for a WDS interface * @set_wds_peer: set the WDS peer for a WDS interface
* *
@@ -1893,6 +1894,7 @@ struct cfg80211_ops { @@ -2071,6 +2072,7 @@ struct cfg80211_ops {
enum nl80211_tx_power_setting type, int mbm); enum nl80211_tx_power_setting type, int mbm);
int (*get_tx_power)(struct wiphy *wiphy, struct wireless_dev *wdev, int (*get_tx_power)(struct wiphy *wiphy, struct wireless_dev *wdev,
int *dbm); int *dbm);
@ -120,7 +120,7 @@
const u8 *addr); const u8 *addr);
--- a/net/mac80211/main.c --- a/net/mac80211/main.c
+++ b/net/mac80211/main.c +++ b/net/mac80211/main.c
@@ -102,7 +102,7 @@ static u32 ieee80211_hw_conf_chan(struct @@ -101,7 +101,7 @@ static u32 ieee80211_hw_conf_chan(struct
struct ieee80211_sub_if_data *sdata; struct ieee80211_sub_if_data *sdata;
struct ieee80211_channel *chan; struct ieee80211_channel *chan;
u32 changed = 0; u32 changed = 0;
@ -129,7 +129,7 @@
enum nl80211_channel_type channel_type; enum nl80211_channel_type channel_type;
u32 offchannel_flag; u32 offchannel_flag;
bool scanning = false; bool scanning = false;
@@ -165,8 +165,21 @@ static u32 ieee80211_hw_conf_chan(struct @@ -164,8 +164,21 @@ static u32 ieee80211_hw_conf_chan(struct
} }
rcu_read_unlock(); rcu_read_unlock();
@ -152,7 +152,7 @@
local->hw.cur_power_level = power; local->hw.cur_power_level = power;
local->hw.conf.power_level = power; local->hw.conf.power_level = power;
} }
@@ -582,6 +595,7 @@ struct ieee80211_hw *ieee80211_alloc_hw( @@ -612,6 +625,7 @@ struct ieee80211_hw *ieee80211_alloc_hw(
IEEE80211_RADIOTAP_MCS_HAVE_BW; IEEE80211_RADIOTAP_MCS_HAVE_BW;
local->hw.radiotap_vht_details = IEEE80211_RADIOTAP_VHT_KNOWN_GI | local->hw.radiotap_vht_details = IEEE80211_RADIOTAP_VHT_KNOWN_GI |
IEEE80211_RADIOTAP_VHT_KNOWN_BANDWIDTH; IEEE80211_RADIOTAP_VHT_KNOWN_BANDWIDTH;

@ -21,7 +21,7 @@
if (ant_gain > max_gain) if (ant_gain > max_gain)
--- a/drivers/net/wireless/ath/ath9k/main.c --- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -1201,7 +1201,10 @@ int ath9k_config(struct ieee80211_hw *hw @@ -1272,7 +1272,10 @@ int ath9k_config(struct ieee80211_hw *hw
} }
if (changed & IEEE80211_CONF_CHANGE_POWER) { if (changed & IEEE80211_CONF_CHANGE_POWER) {

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath9k/ath9k.h --- a/drivers/net/wireless/ath/ath9k/ath9k.h
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h +++ b/drivers/net/wireless/ath/ath9k/ath9k.h
@@ -548,6 +548,9 @@ struct ath9k_wow_pattern { @@ -551,6 +551,9 @@ struct ath9k_wow_pattern {
void ath_init_leds(struct ath_softc *sc); void ath_init_leds(struct ath_softc *sc);
void ath_deinit_leds(struct ath_softc *sc); void ath_deinit_leds(struct ath_softc *sc);
void ath_fill_led_pin(struct ath_softc *sc); void ath_fill_led_pin(struct ath_softc *sc);
@ -10,8 +10,8 @@
#else #else
static inline void ath_init_leds(struct ath_softc *sc) static inline void ath_init_leds(struct ath_softc *sc)
{ {
@@ -666,6 +669,13 @@ struct ath9k_vif_iter_data { @@ -686,6 +689,13 @@ enum spectral_mode {
int nadhocs; /* number of adhoc vifs */ SPECTRAL_CHANSCAN,
}; };
+struct ath_led { +struct ath_led {
@ -24,7 +24,7 @@
struct ath_softc { struct ath_softc {
struct ieee80211_hw *hw; struct ieee80211_hw *hw;
struct device *dev; struct device *dev;
@@ -707,9 +717,8 @@ struct ath_softc { @@ -727,9 +737,8 @@ struct ath_softc {
struct ieee80211_supported_band sbands[IEEE80211_NUM_BANDS]; struct ieee80211_supported_band sbands[IEEE80211_NUM_BANDS];
#ifdef CONFIG_MAC80211_LEDS #ifdef CONFIG_MAC80211_LEDS
@ -162,7 +162,7 @@
void ath_fill_led_pin(struct ath_softc *sc) void ath_fill_led_pin(struct ath_softc *sc)
--- a/drivers/net/wireless/ath/ath9k/init.c --- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c
@@ -865,7 +865,7 @@ int ath9k_init_device(u16 devid, struct @@ -870,7 +870,7 @@ int ath9k_init_device(u16 devid, struct
#ifdef CONFIG_MAC80211_LEDS #ifdef CONFIG_MAC80211_LEDS
/* must be initialized before ieee80211_register_hw */ /* must be initialized before ieee80211_register_hw */
@ -173,7 +173,7 @@
#endif #endif
--- a/drivers/net/wireless/ath/ath9k/debug.c --- a/drivers/net/wireless/ath/ath9k/debug.c
+++ b/drivers/net/wireless/ath/ath9k/debug.c +++ b/drivers/net/wireless/ath/ath9k/debug.c
@@ -1196,6 +1196,61 @@ static const struct file_operations fops @@ -1482,6 +1482,61 @@ static const struct file_operations fops
.llseek = default_llseek, .llseek = default_llseek,
}; };
@ -235,7 +235,7 @@
#ifdef CONFIG_ATH9K_MAC_DEBUG #ifdef CONFIG_ATH9K_MAC_DEBUG
void ath9k_debug_samp_bb_mac(struct ath_softc *sc) void ath9k_debug_samp_bb_mac(struct ath_softc *sc)
@@ -1829,6 +1884,10 @@ int ath9k_init_debug(struct ath_hw *ah) @@ -2115,6 +2170,10 @@ int ath9k_init_debug(struct ath_hw *ah)
&fops_eeprom); &fops_eeprom);
debugfs_create_file("chanbw", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, debugfs_create_file("chanbw", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy,
sc, &fops_chanbw); sc, &fops_chanbw);

@ -1,6 +1,6 @@
--- a/net/mac80211/ieee80211_i.h --- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h
@@ -764,6 +764,8 @@ struct ieee80211_sub_if_data { @@ -739,6 +739,8 @@ struct ieee80211_sub_if_data {
/* bitmap of allowed (non-MCS) rate indexes for rate control */ /* bitmap of allowed (non-MCS) rate indexes for rate control */
u32 rc_rateidx_mask[IEEE80211_NUM_BANDS]; u32 rc_rateidx_mask[IEEE80211_NUM_BANDS];
@ -11,7 +11,7 @@
union { union {
--- a/net/mac80211/cfg.c --- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c
@@ -2328,9 +2328,20 @@ static int ieee80211_set_bitrate_mask(st @@ -2386,9 +2386,20 @@ static int ieee80211_set_bitrate_mask(st
} }
for (i = 0; i < IEEE80211_NUM_BANDS; i++) { for (i = 0; i < IEEE80211_NUM_BANDS; i++) {
@ -34,7 +34,7 @@
return 0; return 0;
--- a/include/net/mac80211.h --- a/include/net/mac80211.h
+++ b/include/net/mac80211.h +++ b/include/net/mac80211.h
@@ -3985,7 +3985,7 @@ void ieee80211_send_bar(struct ieee80211 @@ -4091,7 +4091,7 @@ void ieee80211_send_bar(struct ieee80211
* (deprecated; this will be removed once drivers get updated to use * (deprecated; this will be removed once drivers get updated to use
* rate_idx_mask) * rate_idx_mask)
* @rate_idx_mask: user-requested (legacy) rate mask * @rate_idx_mask: user-requested (legacy) rate mask
@ -43,7 +43,7 @@
* @bss: whether this frame is sent out in AP or IBSS mode * @bss: whether this frame is sent out in AP or IBSS mode
*/ */
struct ieee80211_tx_rate_control { struct ieee80211_tx_rate_control {
@@ -3997,7 +3997,7 @@ struct ieee80211_tx_rate_control { @@ -4103,7 +4103,7 @@ struct ieee80211_tx_rate_control {
bool rts, short_preamble; bool rts, short_preamble;
u8 max_rate_idx; u8 max_rate_idx;
u32 rate_idx_mask; u32 rate_idx_mask;
@ -54,7 +54,7 @@
--- a/net/mac80211/tx.c --- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c +++ b/net/mac80211/tx.c
@@ -636,9 +636,11 @@ ieee80211_tx_h_rate_ctrl(struct ieee8021 @@ -641,9 +641,11 @@ ieee80211_tx_h_rate_ctrl(struct ieee8021
txrc.max_rate_idx = -1; txrc.max_rate_idx = -1;
else else
txrc.max_rate_idx = fls(txrc.rate_idx_mask) - 1; txrc.max_rate_idx = fls(txrc.rate_idx_mask) - 1;
@ -69,7 +69,7 @@
txrc.bss = (tx->sdata->vif.type == NL80211_IFTYPE_AP || txrc.bss = (tx->sdata->vif.type == NL80211_IFTYPE_AP ||
tx->sdata->vif.type == NL80211_IFTYPE_MESH_POINT || tx->sdata->vif.type == NL80211_IFTYPE_MESH_POINT ||
tx->sdata->vif.type == NL80211_IFTYPE_ADHOC); tx->sdata->vif.type == NL80211_IFTYPE_ADHOC);
@@ -2502,8 +2504,6 @@ struct sk_buff *ieee80211_beacon_get_tim @@ -2505,8 +2507,6 @@ struct sk_buff *ieee80211_beacon_get_tim
txrc.max_rate_idx = -1; txrc.max_rate_idx = -1;
else else
txrc.max_rate_idx = fls(txrc.rate_idx_mask) - 1; txrc.max_rate_idx = fls(txrc.rate_idx_mask) - 1;

@ -1,71 +0,0 @@
--- a/include/linux/ieee80211.h
+++ b/include/linux/ieee80211.h
@@ -180,7 +180,7 @@ struct ieee80211_hdr {
u8 addr3[6];
__le16 seq_ctrl;
u8 addr4[6];
-} __packed;
+} __packed __aligned(2);
struct ieee80211_hdr_3addr {
__le16 frame_control;
@@ -189,7 +189,7 @@ struct ieee80211_hdr_3addr {
u8 addr2[6];
u8 addr3[6];
__le16 seq_ctrl;
-} __packed;
+} __packed __aligned(2);
struct ieee80211_qos_hdr {
__le16 frame_control;
@@ -199,7 +199,7 @@ struct ieee80211_qos_hdr {
u8 addr3[6];
__le16 seq_ctrl;
__le16 qos_ctrl;
-} __packed;
+} __packed __aligned(2);
/**
* ieee80211_has_tods - check if IEEE80211_FCTL_TODS is set
@@ -576,7 +576,7 @@ struct ieee80211s_hdr {
__le32 seqnum;
u8 eaddr1[6];
u8 eaddr2[6];
-} __packed;
+} __packed __aligned(2);
/* Mesh flags */
#define MESH_FLAGS_AE_A4 0x1
@@ -839,7 +839,7 @@ struct ieee80211_mgmt {
} u;
} __packed action;
} u;
-} __packed;
+} __packed __aligned(2);
/* Supported Rates value encodings in 802.11n-2009 7.3.2.2 */
#define BSS_MEMBERSHIP_SELECTOR_HT_PHY 127
@@ -870,20 +870,20 @@ struct ieee80211_rts {
__le16 duration;
u8 ra[6];
u8 ta[6];
-} __packed;
+} __packed __aligned(2);
struct ieee80211_cts {
__le16 frame_control;
__le16 duration;
u8 ra[6];
-} __packed;
+} __packed __aligned(2);
struct ieee80211_pspoll {
__le16 frame_control;
__le16 aid;
u8 bssid[6];
u8 ta[6];
-} __packed;
+} __packed __aligned(2);
/* TDLS */

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath9k/debug.c --- a/drivers/net/wireless/ath/ath9k/debug.c
+++ b/drivers/net/wireless/ath/ath9k/debug.c +++ b/drivers/net/wireless/ath/ath9k/debug.c
@@ -1863,6 +1863,50 @@ static const struct file_operations fops @@ -2149,6 +2149,50 @@ static const struct file_operations fops
}; };
@ -51,7 +51,7 @@
int ath9k_init_debug(struct ath_hw *ah) int ath9k_init_debug(struct ath_hw *ah)
{ {
struct ath_common *common = ath9k_hw_common(ah); struct ath_common *common = ath9k_hw_common(ah);
@@ -1888,6 +1932,8 @@ int ath9k_init_debug(struct ath_hw *ah) @@ -2174,6 +2218,8 @@ int ath9k_init_debug(struct ath_hw *ah)
debugfs_create_file("gpio_led", S_IWUSR, debugfs_create_file("gpio_led", S_IWUSR,
sc->debug.debugfs_phy, sc, &fops_gpio_led); sc->debug.debugfs_phy, sc, &fops_gpio_led);
#endif #endif
@ -62,7 +62,7 @@
debugfs_create_file("interrupt", S_IRUSR, sc->debug.debugfs_phy, sc, debugfs_create_file("interrupt", S_IRUSR, sc->debug.debugfs_phy, sc,
--- a/drivers/net/wireless/ath/ath9k/hw.h --- a/drivers/net/wireless/ath/ath9k/hw.h
+++ b/drivers/net/wireless/ath/ath9k/hw.h +++ b/drivers/net/wireless/ath/ath9k/hw.h
@@ -499,6 +499,12 @@ enum { @@ -500,6 +500,12 @@ enum {
ATH9K_RESET_COLD, ATH9K_RESET_COLD,
}; };
@ -75,7 +75,7 @@
struct ath9k_hw_version { struct ath9k_hw_version {
u32 magic; u32 magic;
u16 devid; u16 devid;
@@ -738,6 +744,8 @@ struct ath_hw { @@ -778,6 +784,8 @@ struct ath_hw {
u32 rfkill_polarity; u32 rfkill_polarity;
u32 ah_flags; u32 ah_flags;
@ -84,7 +84,7 @@
bool reset_power_on; bool reset_power_on;
bool htc_reset_init; bool htc_reset_init;
@@ -988,6 +996,7 @@ void ath9k_hw_set_sta_beacon_timers(stru @@ -1041,6 +1049,7 @@ void ath9k_hw_set_sta_beacon_timers(stru
bool ath9k_hw_check_alive(struct ath_hw *ah); bool ath9k_hw_check_alive(struct ath_hw *ah);
bool ath9k_hw_setpower(struct ath_hw *ah, enum ath9k_power_mode mode); bool ath9k_hw_setpower(struct ath_hw *ah, enum ath9k_power_mode mode);
@ -125,7 +125,7 @@
REG_SET_BIT(ah, AR_BTCOEX_WL_LNADIV, AR_BTCOEX_WL_LNADIV_FORCE_ON); REG_SET_BIT(ah, AR_BTCOEX_WL_LNADIV, AR_BTCOEX_WL_LNADIV_FORCE_ON);
--- a/drivers/net/wireless/ath/ath9k/main.c --- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -462,6 +462,11 @@ irqreturn_t ath_isr(int irq, void *dev) @@ -459,6 +459,11 @@ irqreturn_t ath_isr(int irq, void *dev)
ath9k_hw_getisr(ah, &status); /* NB: clears ISR too */ ath9k_hw_getisr(ah, &status); /* NB: clears ISR too */
status &= ah->imask; /* discard unasked-for bits */ status &= ah->imask; /* discard unasked-for bits */

@ -48,7 +48,7 @@
AR_SREV_9285(ah) || AR_SREV_9285(ah) ||
--- a/drivers/net/wireless/ath/ath9k/hw.h --- a/drivers/net/wireless/ath/ath9k/hw.h
+++ b/drivers/net/wireless/ath/ath9k/hw.h +++ b/drivers/net/wireless/ath/ath9k/hw.h
@@ -908,6 +908,8 @@ struct ath_hw { @@ -961,6 +961,8 @@ struct ath_hw {
bool is_clk_25mhz; bool is_clk_25mhz;
int (*get_mac_revision)(void); int (*get_mac_revision)(void);
int (*external_reset)(void); int (*external_reset)(void);
@ -59,7 +59,7 @@
}; };
--- a/drivers/net/wireless/ath/ath9k/init.c --- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c
@@ -582,6 +582,8 @@ static int ath9k_init_softc(u16 devid, s @@ -587,6 +587,8 @@ static int ath9k_init_softc(u16 devid, s
ah->is_clk_25mhz = pdata->is_clk_25mhz; ah->is_clk_25mhz = pdata->is_clk_25mhz;
ah->get_mac_revision = pdata->get_mac_revision; ah->get_mac_revision = pdata->get_mac_revision;
ah->external_reset = pdata->external_reset; ah->external_reset = pdata->external_reset;

@ -101,7 +101,7 @@
+} +}
--- a/drivers/net/wireless/rt2x00/rt2x00.h --- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h +++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -561,6 +561,7 @@ struct rt2x00lib_ops { @@ -559,6 +559,7 @@ struct rt2x00lib_ops {
const u8 *data, const size_t len); const u8 *data, const size_t len);
int (*load_firmware) (struct rt2x00_dev *rt2x00dev, int (*load_firmware) (struct rt2x00_dev *rt2x00dev,
const u8 *data, const size_t len); const u8 *data, const size_t len);
@ -109,7 +109,7 @@
/* /*
* Device initialization/deinitialization handlers. * Device initialization/deinitialization handlers.
@@ -721,6 +722,7 @@ enum rt2x00_capability_flags { @@ -719,6 +720,7 @@ enum rt2x00_capability_flags {
REQUIRE_SW_SEQNO, REQUIRE_SW_SEQNO,
REQUIRE_HT_TX_DESC, REQUIRE_HT_TX_DESC,
REQUIRE_PS_AUTOWAKE, REQUIRE_PS_AUTOWAKE,
@ -117,7 +117,7 @@
/* /*
* Capabilities * Capabilities
@@ -990,6 +992,11 @@ struct rt2x00_dev { @@ -988,6 +990,11 @@ struct rt2x00_dev {
const struct firmware *fw; const struct firmware *fw;
/* /*
@ -244,7 +244,7 @@
.get_entry_state = rt2800pci_get_entry_state, .get_entry_state = rt2800pci_get_entry_state,
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c --- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c +++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -1214,6 +1214,10 @@ int rt2x00lib_probe_dev(struct rt2x00_de @@ -1314,6 +1314,10 @@ int rt2x00lib_probe_dev(struct rt2x00_de
rt2x00dev->hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN; rt2x00dev->hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN;
@ -255,7 +255,7 @@
/* /*
* Initialize work. * Initialize work.
*/ */
@@ -1338,6 +1342,11 @@ void rt2x00lib_remove_dev(struct rt2x00_ @@ -1438,6 +1442,11 @@ void rt2x00lib_remove_dev(struct rt2x00_
*/ */
if (rt2x00dev->drv_data) if (rt2x00dev->drv_data)
kfree(rt2x00dev->drv_data); kfree(rt2x00dev->drv_data);

@ -1,6 +1,6 @@
--- a/config.mk --- a/config.mk
+++ b/config.mk +++ b/config.mk
@@ -630,6 +630,7 @@ export CONFIG_RT2X00=y @@ -640,6 +640,7 @@ export CONFIG_RT2X00=y
export CONFIG_RT2X00_LIB=m export CONFIG_RT2X00_LIB=m
export CONFIG_RT2800_LIB=m export CONFIG_RT2800_LIB=m
export CONFIG_RT2X00_LIB_FIRMWARE=y export CONFIG_RT2X00_LIB_FIRMWARE=y

@ -24,7 +24,7 @@ Helmut
--- a/drivers/net/wireless/rt2x00/rt2x00queue.c --- a/drivers/net/wireless/rt2x00/rt2x00queue.c
+++ b/drivers/net/wireless/rt2x00/rt2x00queue.c +++ b/drivers/net/wireless/rt2x00/rt2x00queue.c
@@ -151,36 +151,14 @@ void rt2x00queue_align_frame(struct sk_b @@ -162,36 +162,14 @@ void rt2x00queue_align_frame(struct sk_b
void rt2x00queue_insert_l2pad(struct sk_buff *skb, unsigned int header_length) void rt2x00queue_insert_l2pad(struct sk_buff *skb, unsigned int header_length)
{ {
unsigned int payload_length = skb->len - header_length; unsigned int payload_length = skb->len - header_length;

@ -12,7 +12,7 @@
#endif /* _RT2X00_PLATFORM_H */ #endif /* _RT2X00_PLATFORM_H */
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c --- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c +++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -842,6 +842,22 @@ static int rt2x00lib_probe_hw_modes(stru @@ -939,6 +939,22 @@ static int rt2x00lib_probe_hw_modes(stru
unsigned int num_rates; unsigned int num_rates;
unsigned int i; unsigned int i;
@ -37,7 +37,7 @@
num_rates += 4; num_rates += 4;
--- a/drivers/net/wireless/rt2x00/rt2x00.h --- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h +++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -426,6 +426,7 @@ struct hw_mode_spec { @@ -424,6 +424,7 @@ struct hw_mode_spec {
unsigned int supported_bands; unsigned int supported_bands;
#define SUPPORT_BAND_2GHZ 0x00000001 #define SUPPORT_BAND_2GHZ 0x00000001
#define SUPPORT_BAND_5GHZ 0x00000002 #define SUPPORT_BAND_5GHZ 0x00000002

@ -10,7 +10,7 @@
int disable_5ghz; int disable_5ghz;
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c --- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c +++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -833,6 +833,18 @@ static void rt2x00lib_rate(struct ieee80 @@ -930,6 +930,18 @@ static void rt2x00lib_rate(struct ieee80
entry->flags |= IEEE80211_RATE_SHORT_PREAMBLE; entry->flags |= IEEE80211_RATE_SHORT_PREAMBLE;
} }
@ -31,7 +31,7 @@
{ {
--- a/drivers/net/wireless/rt2x00/rt2x00.h --- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h +++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -1294,6 +1294,7 @@ static inline void rt2x00debug_dump_fram @@ -1314,6 +1314,7 @@ static inline void rt2x00debug_dump_fram
*/ */
u32 rt2x00lib_get_bssidx(struct rt2x00_dev *rt2x00dev, u32 rt2x00lib_get_bssidx(struct rt2x00_dev *rt2x00dev,
struct ieee80211_vif *vif); struct ieee80211_vif *vif);

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/rt2x00/rt2800lib.c --- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
@@ -2250,15 +2250,18 @@ static void rt2800_config_channel(struct @@ -2249,15 +2249,18 @@ static void rt2800_config_channel(struct
/* /*
* Change BBP settings * Change BBP settings
*/ */
@ -22,7 +22,7 @@
rt2800_bbp_write(rt2x00dev, 86, 0); rt2800_bbp_write(rt2x00dev, 86, 0);
} }
@@ -3671,6 +3674,7 @@ static int rt2800_init_bbp(struct rt2x00 @@ -3670,6 +3673,7 @@ static int rt2800_init_bbp(struct rt2x00
rt2800_bbp_write(rt2x00dev, 120, 0x50); rt2800_bbp_write(rt2x00dev, 120, 0x50);
if (rt2x00_rt(rt2x00dev, RT3290) || if (rt2x00_rt(rt2x00dev, RT3290) ||
@ -30,7 +30,7 @@
rt2x00_rt(rt2x00dev, RT5390) || rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392)) rt2x00_rt(rt2x00dev, RT5392))
rt2800_bbp_write(rt2x00dev, 128, 0x12); rt2800_bbp_write(rt2x00dev, 128, 0x12);
@@ -3977,6 +3981,12 @@ static void rt2800_init_rfcsr_3290(struc @@ -3976,6 +3980,12 @@ static void rt2800_init_rfcsr_3290(struc
static void rt2800_init_rfcsr_3352(struct rt2x00_dev *rt2x00dev) static void rt2800_init_rfcsr_3352(struct rt2x00_dev *rt2x00dev)
{ {
@ -43,7 +43,7 @@
rt2800_rfcsr_write(rt2x00dev, 0, 0xf0); rt2800_rfcsr_write(rt2x00dev, 0, 0xf0);
rt2800_rfcsr_write(rt2x00dev, 1, 0x23); rt2800_rfcsr_write(rt2x00dev, 1, 0x23);
rt2800_rfcsr_write(rt2x00dev, 2, 0x50); rt2800_rfcsr_write(rt2x00dev, 2, 0x50);
@@ -4010,15 +4020,30 @@ static void rt2800_init_rfcsr_3352(struc @@ -4009,15 +4019,30 @@ static void rt2800_init_rfcsr_3352(struc
rt2800_rfcsr_write(rt2x00dev, 31, 0x80); rt2800_rfcsr_write(rt2x00dev, 31, 0x80);
rt2800_rfcsr_write(rt2x00dev, 32, 0x80); rt2800_rfcsr_write(rt2x00dev, 32, 0x80);
rt2800_rfcsr_write(rt2x00dev, 33, 0x00); rt2800_rfcsr_write(rt2x00dev, 33, 0x00);
@ -77,7 +77,7 @@
rt2800_rfcsr_write(rt2x00dev, 43, 0xdb); rt2800_rfcsr_write(rt2x00dev, 43, 0xdb);
rt2800_rfcsr_write(rt2x00dev, 44, 0xdb); rt2800_rfcsr_write(rt2x00dev, 44, 0xdb);
rt2800_rfcsr_write(rt2x00dev, 45, 0xdb); rt2800_rfcsr_write(rt2x00dev, 45, 0xdb);
@@ -4026,15 +4051,20 @@ static void rt2800_init_rfcsr_3352(struc @@ -4025,15 +4050,20 @@ static void rt2800_init_rfcsr_3352(struc
rt2800_rfcsr_write(rt2x00dev, 47, 0x0d); rt2800_rfcsr_write(rt2x00dev, 47, 0x0d);
rt2800_rfcsr_write(rt2x00dev, 48, 0x14); rt2800_rfcsr_write(rt2x00dev, 48, 0x14);
rt2800_rfcsr_write(rt2x00dev, 49, 0x00); rt2800_rfcsr_write(rt2x00dev, 49, 0x00);
@ -107,7 +107,7 @@
rt2800_rfcsr_write(rt2x00dev, 59, 0x00); rt2800_rfcsr_write(rt2x00dev, 59, 0x00);
rt2800_rfcsr_write(rt2x00dev, 60, 0x00); rt2800_rfcsr_write(rt2x00dev, 60, 0x00);
rt2800_rfcsr_write(rt2x00dev, 61, 0x00); rt2800_rfcsr_write(rt2x00dev, 61, 0x00);
@@ -4950,7 +4980,8 @@ static int rt2800_init_eeprom(struct rt2 @@ -4949,7 +4979,8 @@ static int rt2800_init_eeprom(struct rt2
/* /*
* Detect if this device has Bluetooth co-existence. * Detect if this device has Bluetooth co-existence.
*/ */
@ -117,7 +117,7 @@
__set_bit(CAPABILITY_BT_COEXIST, &rt2x00dev->cap_flags); __set_bit(CAPABILITY_BT_COEXIST, &rt2x00dev->cap_flags);
/* /*
@@ -4979,6 +5010,22 @@ static int rt2800_init_eeprom(struct rt2 @@ -4978,6 +5009,22 @@ static int rt2800_init_eeprom(struct rt2
EIRP_MAX_TX_POWER_LIMIT) EIRP_MAX_TX_POWER_LIMIT)
__set_bit(CAPABILITY_POWER_LIMIT, &rt2x00dev->cap_flags); __set_bit(CAPABILITY_POWER_LIMIT, &rt2x00dev->cap_flags);
@ -203,7 +203,7 @@
* EEPROM frequency * EEPROM frequency
--- a/drivers/net/wireless/rt2x00/rt2x00.h --- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h +++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -742,6 +742,8 @@ enum rt2x00_capability_flags { @@ -740,6 +740,8 @@ enum rt2x00_capability_flags {
CAPABILITY_DOUBLE_ANTENNA, CAPABILITY_DOUBLE_ANTENNA,
CAPABILITY_BT_COEXIST, CAPABILITY_BT_COEXIST,
CAPABILITY_VCO_RECALIBRATION, CAPABILITY_VCO_RECALIBRATION,

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/rt2x00/rt2800lib.c --- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
@@ -5170,6 +5170,27 @@ static const struct rf_channel rf_vals_3 @@ -5169,6 +5169,27 @@ static const struct rf_channel rf_vals_3
{173, 0x61, 0, 9}, {173, 0x61, 0, 9},
}; };
@ -28,7 +28,7 @@
static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev) static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
{ {
struct hw_mode_spec *spec = &rt2x00dev->spec; struct hw_mode_spec *spec = &rt2x00dev->spec;
@@ -5248,7 +5269,6 @@ static int rt2800_probe_hw_mode(struct r @@ -5246,7 +5267,6 @@ static int rt2800_probe_hw_mode(struct r
rt2x00_rf(rt2x00dev, RF3022) || rt2x00_rf(rt2x00dev, RF3022) ||
rt2x00_rf(rt2x00dev, RF3290) || rt2x00_rf(rt2x00dev, RF3290) ||
rt2x00_rf(rt2x00dev, RF3320) || rt2x00_rf(rt2x00dev, RF3320) ||
@ -36,7 +36,7 @@
rt2x00_rf(rt2x00dev, RF5360) || rt2x00_rf(rt2x00dev, RF5360) ||
rt2x00_rf(rt2x00dev, RF5370) || rt2x00_rf(rt2x00dev, RF5370) ||
rt2x00_rf(rt2x00dev, RF5372) || rt2x00_rf(rt2x00dev, RF5372) ||
@@ -5256,6 +5276,12 @@ static int rt2800_probe_hw_mode(struct r @@ -5254,6 +5274,12 @@ static int rt2800_probe_hw_mode(struct r
rt2x00_rf(rt2x00dev, RF5392)) { rt2x00_rf(rt2x00dev, RF5392)) {
spec->num_channels = 14; spec->num_channels = 14;
spec->channels = rf_vals_3x; spec->channels = rf_vals_3x;
@ -49,7 +49,7 @@
} else if (rt2x00_rf(rt2x00dev, RF3052)) { } else if (rt2x00_rf(rt2x00dev, RF3052)) {
spec->supported_bands |= SUPPORT_BAND_5GHZ; spec->supported_bands |= SUPPORT_BAND_5GHZ;
spec->num_channels = ARRAY_SIZE(rf_vals_3x); spec->num_channels = ARRAY_SIZE(rf_vals_3x);
@@ -5349,6 +5375,19 @@ static int rt2800_probe_hw_mode(struct r @@ -5347,6 +5373,19 @@ static int rt2800_probe_hw_mode(struct r
return 0; return 0;
} }
@ -69,7 +69,7 @@
int rt2800_probe_hw(struct rt2x00_dev *rt2x00dev) int rt2800_probe_hw(struct rt2x00_dev *rt2x00dev)
{ {
int retval; int retval;
@@ -5374,6 +5413,15 @@ int rt2800_probe_hw(struct rt2x00_dev *r @@ -5372,6 +5411,15 @@ int rt2800_probe_hw(struct rt2x00_dev *r
rt2800_register_write(rt2x00dev, GPIO_CTRL, reg); rt2800_register_write(rt2x00dev, GPIO_CTRL, reg);
/* /*
@ -87,7 +87,7 @@
retval = rt2800_probe_hw_mode(rt2x00dev); retval = rt2800_probe_hw_mode(rt2x00dev);
--- a/drivers/net/wireless/rt2x00/rt2x00.h --- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h +++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -421,6 +421,7 @@ static inline struct rt2x00_intf* vif_to @@ -419,6 +419,7 @@ static inline struct rt2x00_intf* vif_to
* @channels: Device/chipset specific channel values (See &struct rf_channel). * @channels: Device/chipset specific channel values (See &struct rf_channel).
* @channels_info: Additional information for channels (See &struct channel_info). * @channels_info: Additional information for channels (See &struct channel_info).
* @ht: Driver HT Capabilities (See &ieee80211_sta_ht_cap). * @ht: Driver HT Capabilities (See &ieee80211_sta_ht_cap).
@ -95,7 +95,7 @@
*/ */
struct hw_mode_spec { struct hw_mode_spec {
unsigned int supported_bands; unsigned int supported_bands;
@@ -437,6 +438,7 @@ struct hw_mode_spec { @@ -435,6 +436,7 @@ struct hw_mode_spec {
const struct channel_info *channels_info; const struct channel_info *channels_info;
struct ieee80211_sta_ht_cap ht; struct ieee80211_sta_ht_cap ht;

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/mwl8k.c --- a/drivers/net/wireless/mwl8k.c
+++ b/drivers/net/wireless/mwl8k.c +++ b/drivers/net/wireless/mwl8k.c
@@ -5389,6 +5389,7 @@ MODULE_FIRMWARE("mwl8k/fmimage_8366.fw") @@ -5497,6 +5497,7 @@ MODULE_FIRMWARE("mwl8k/fmimage_8366.fw")
MODULE_FIRMWARE(MWL8K_8366_AP_FW(MWL8K_8366_AP_FW_API)); MODULE_FIRMWARE(MWL8K_8366_AP_FW(MWL8K_8366_AP_FW_API));
static DEFINE_PCI_DEVICE_TABLE(mwl8k_pci_id_table) = { static DEFINE_PCI_DEVICE_TABLE(mwl8k_pci_id_table) = {

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c --- a/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
+++ b/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c +++ b/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
@@ -98,6 +98,7 @@ static struct bcma_device_id brcms_corei @@ -99,6 +99,7 @@ static struct bcma_device_id brcms_corei
BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 17, BCMA_ANY_CLASS), BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 17, BCMA_ANY_CLASS),
BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 23, BCMA_ANY_CLASS), BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 23, BCMA_ANY_CLASS),
BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 24, BCMA_ANY_CLASS), BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 24, BCMA_ANY_CLASS),
@ -10,7 +10,7 @@
MODULE_DEVICE_TABLE(bcma, brcms_coreid_table); MODULE_DEVICE_TABLE(bcma, brcms_coreid_table);
--- a/drivers/net/wireless/brcm80211/brcmsmac/main.c --- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
+++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c +++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
@@ -719,7 +719,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); brcms_c_write_mhf(wlc_hw, wlc_hw->band->mhfs);
/* do band-specific ucode IHR, SHM, and SCR inits */ /* do band-specific ucode IHR, SHM, and SCR inits */
@ -19,7 +19,7 @@
if (BRCMS_ISNPHY(wlc_hw->band)) if (BRCMS_ISNPHY(wlc_hw->band))
brcms_c_write_inits(wlc_hw, ucode->d11n0bsinitvals16); brcms_c_write_inits(wlc_hw, ucode->d11n0bsinitvals16);
else else
@@ -2266,7 +2266,7 @@ static void brcms_ucode_download(struct @@ -2257,7 +2257,7 @@ static void brcms_ucode_download(struct
if (wlc_hw->ucode_loaded) if (wlc_hw->ucode_loaded)
return; return;
@ -28,7 +28,7 @@
if (BRCMS_ISNPHY(wlc_hw->band)) { if (BRCMS_ISNPHY(wlc_hw->band)) {
brcms_ucode_write(wlc_hw, ucode->bcm43xx_16_mimo, brcms_ucode_write(wlc_hw, ucode->bcm43xx_16_mimo,
ucode->bcm43xx_16_mimosz); ucode->bcm43xx_16_mimosz);
@@ -3217,7 +3217,7 @@ static void brcms_b_coreinit(struct brcm @@ -3207,7 +3207,7 @@ static void brcms_b_coreinit(struct brcm
sflags = bcma_aread32(core, BCMA_IOST); sflags = bcma_aread32(core, BCMA_IOST);
@ -37,7 +37,7 @@
if (BRCMS_ISNPHY(wlc_hw->band)) if (BRCMS_ISNPHY(wlc_hw->band))
brcms_c_write_inits(wlc_hw, ucode->d11n0initvals16); brcms_c_write_inits(wlc_hw, ucode->d11n0initvals16);
else else
@@ -5674,6 +5674,8 @@ static bool brcms_c_chipmatch_soc(struct @@ -5663,6 +5663,8 @@ static bool brcms_c_chipmatch_soc(struct
if (chipinfo->id == BCMA_CHIP_ID_BCM4716) if (chipinfo->id == BCMA_CHIP_ID_BCM4716)
return true; return true;

Loading…
Cancel
Save