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

SVN-Revision: 35753
owl
Felix Fietkau 2013-02-23 01:12:36 +00:00
parent c4c43eed04
commit e526c7bc17
36 changed files with 387 additions and 3175 deletions

View File

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

View File

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

View File

@ -1,6 +1,6 @@
--- a/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
endif #CONFIG_WIRELESS_EXT
@ -10,7 +10,7 @@
# Sonics Silicon Backplane
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_DRIVER_PCICORE=y
export CONFIG_B43_SSB=y

View File

@ -1,6 +1,6 @@
--- a/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;
int i;

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
--- a/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
* lost)
*/

View File

@ -1,6 +1,6 @@
--- a/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_PARM_DESC(nohwcrypt, "Disable hardware encryption");

View File

@ -33,7 +33,7 @@
if (!wiphy->bands[IEEE80211_BAND_5GHZ])
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;

View File

@ -1,6 +1,6 @@
--- a/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;
struct regulatory_request *request, *lr;
@ -9,7 +9,7 @@
mutex_lock(&reg_mutex);
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)
{

View File

@ -1,6 +1,6 @@
--- a/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
BIT(NL80211_IFTYPE_AP) |
BIT(NL80211_IFTYPE_P2P_GO) },

View File

@ -18,7 +18,7 @@
goto end;
--- a/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 +
@ -27,7 +27,7 @@
ah->opmode == NL80211_IFTYPE_MESH_POINT) {
u64 tsf = ath5k_hw_get_tsf64(ah);
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;
if (ah->opmode == NL80211_IFTYPE_AP && ah->num_ap_vifs
@ -36,7 +36,7 @@
intval /= ATH_BCBUF; /* staggered multi-bss beacons */
if (intval < 15)
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) |
#endif
BIT(NL80211_IFTYPE_AP) },

View File

@ -1,6 +1,6 @@
--- a/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;
mode = 0;
@ -8,7 +8,7 @@
/*
* Sanity check for fast flag
* 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) &&
(ah->ah_radio != AR5K_RF5413))

View File

@ -1,6 +1,6 @@
--- a/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);
}
@ -54,7 +54,7 @@
int ath9k_init_debug(struct ath_hw *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);

View File

@ -71,7 +71,7 @@
--- a/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_UNPLUGGED 0x2 /* The card has been physically removed. */
#define AH_FASTCC 0x4
@ -81,7 +81,7 @@
struct ath_ops reg_ops;
--- a/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->get_mac_revision = pdata->get_mac_revision;
ah->external_reset = pdata->external_reset;

View File

@ -1,6 +1,6 @@
--- a/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;
}

View File

@ -1,6 +1,6 @@
--- a/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 device *dev;
@ -8,9 +8,9 @@
struct survey_info *cur_survey;
struct survey_info survey[ATH9K_NUM_CHANNELS];
@@ -742,6 +743,7 @@ struct ath_softc {
#endif
};
@@ -894,6 +895,7 @@ struct fft_sample_ht20 {
u8 data[SPECTRAL_HT20_NUM_BINS];
} __packed;
+int ath9k_config(struct ieee80211_hw *hw, u32 changed);
void ath9k_tasklet(unsigned long data);
@ -18,7 +18,7 @@
--- a/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
};
@ -69,7 +69,7 @@
int ath9k_init_debug(struct ath_hw *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,
&fops_eeprom);
@ -80,8 +80,8 @@
debugfs_create_file("interrupt", S_IRUSR, sc->debug.debugfs_phy, sc,
--- a/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_
ath_dbg(common, PS, "PowerSave disabled\n");
@@ -1131,7 +1131,7 @@ int ath9k_spectral_scan_config(struct ie
return 0;
}
-static int ath9k_config(struct ieee80211_hw *hw, u32 changed)
@ -89,7 +89,7 @@
{
struct ath_softc *sc = hw->priv;
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) {
struct ieee80211_channel *curchan = hw->conf.channel;
@ -101,7 +101,7 @@
if (ah->curchan)
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));
}

View File

@ -1,6 +1,6 @@
--- a/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)
{
ether_setup(dev);

View File

@ -1,6 +1,6 @@
--- a/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 offchannel_tx_hw_queue;
u8 radiotap_mcs_details;
@ -10,7 +10,7 @@
};
--- a/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_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev);
@ -23,7 +23,7 @@
*dbm = sdata->vif.bss_conf.txpower;
--- a/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) {
changed |= IEEE80211_CONF_CHANGE_POWER;

View File

@ -1,6 +1,6 @@
--- a/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;
}
@ -9,7 +9,7 @@
/*
* The most recent snapshot of channel->noisefloor for the old
* 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;
ath9k_cmn_update_txpow(ah, sc->curtxpow,
sc->config.txpowlimit, &sc->curtxpow);

View File

@ -1,6 +1,6 @@
--- a/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
* unspecified depending on the hardware capabilities flags
* @IEEE80211_HW_SIGNAL_*
@ -10,7 +10,7 @@
* @antenna: antenna used
* @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)
@@ -847,6 +850,8 @@ struct ieee80211_rx_status {
@@ -870,6 +873,8 @@ struct ieee80211_rx_status {
u8 band;
u8 antenna;
s8 signal;
@ -21,7 +21,7 @@
u8 vendor_radiotap_oui[3];
--- a/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;
struct ewma avg_signal;
int last_ack_signal;
@ -35,7 +35,7 @@
--- a/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 ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb);
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
@ -43,7 +43,7 @@
if (!sta)
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);
}
@ -65,7 +65,7 @@
* exchange sequence.
--- a/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);
sta->last_connected = uptime.tv_sec;
ewma_init(&sta->avg_signal, 1024, 8);
@ -76,25 +76,25 @@
kfree(sta);
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -653,6 +653,8 @@ struct station_parameters {
* @STATION_INFO_STA_FLAGS: @sta_flags filled
* @STATION_INFO_BEACON_LOSS_COUNT: @beacon_loss_count filled
* @STATION_INFO_T_OFFSET: @t_offset filled
@@ -721,6 +721,8 @@ struct station_parameters {
* @STATION_INFO_LOCAL_PM: @local_pm filled
* @STATION_INFO_PEER_PM: @peer_pm filled
* @STATION_INFO_NONPEER_PM: @nonpeer_pm filled
+ * @STATION_INFO_CHAIN_SIGNAL: @chain_signal filled
+ * @STATION_INFO_CHAIN_SIGNAL_AVG: @chain_signal_avg filled
*/
enum station_info_flags {
STATION_INFO_INACTIVE_TIME = 1<<0,
@@ -676,6 +678,8 @@ enum station_info_flags {
STATION_INFO_STA_FLAGS = 1<<18,
STATION_INFO_BEACON_LOSS_COUNT = 1<<19,
STATION_INFO_T_OFFSET = 1<<20,
+ STATION_INFO_CHAIN_SIGNAL = 1<<21,
+ STATION_INFO_CHAIN_SIGNAL_AVG = 1<<22,
@@ -749,6 +751,8 @@ enum station_info_flags {
STATION_INFO_NONPEER_PM = 1<<23,
STATION_INFO_RX_BYTES64 = 1<<24,
STATION_INFO_TX_BYTES64 = 1<<25,
+ STATION_INFO_CHAIN_SIGNAL = 1<<26,
+ 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_.
* @signal_avg: Average signal strength, type depends on the wiphy's signal_type.
* For CFG80211_SIGNAL_TYPE_MBM, value is expressed in _dBm_.
@ -104,7 +104,7 @@
* @txrate: current unicast bitrate from this station
* @rxrate: current unicast bitrate to 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;
s8 signal;
s8 signal_avg;
@ -135,7 +135,7 @@
u8 rs_num_delims;
--- a/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)
{
struct ath_hw *ah = common->ah;
@ -143,7 +143,7 @@
/*
* 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)
rx_status->flag |= RX_FLAG_NO_SIGNAL_VAL;
@ -164,6 +164,15 @@
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
+++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
@@ -475,12 +475,12 @@ int ath9k_hw_process_rxdesc_edma(struct
@ -227,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
@@ -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
spin_lock(&sc->debug.samp_lock);
RX_SAMP_DBG(jiffies) = jiffies;
@ -248,19 +257,19 @@
RX_SAMP_DBG(rate) = rs->rs_rate;
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -1838,6 +1838,8 @@ enum nl80211_sta_bss_param {
* @NL80211_STA_INFO_STA_FLAGS: Contains a struct nl80211_sta_flag_update.
* @NL80211_STA_INFO_BEACON_LOSS: count of times beacon loss was detected (u32)
* @NL80211_STA_INFO_T_OFFSET: timing offset with respect to this STA (s64)
@@ -1918,6 +1918,8 @@ enum nl80211_sta_bss_param {
* @NL80211_STA_INFO_PEER_PM: peer mesh STA link-specific power mode
* @NL80211_STA_INFO_NONPEER_PM: neighbor mesh STA power save mode towards
* non-peer STA
+ * @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_AFTER_LAST: internal
* @NL80211_STA_INFO_MAX: highest possible station info attribute
*/
@@ -1862,6 +1864,8 @@ enum nl80211_sta_info {
NL80211_STA_INFO_STA_FLAGS,
NL80211_STA_INFO_BEACON_LOSS,
NL80211_STA_INFO_T_OFFSET,
@@ -1947,6 +1949,8 @@ enum nl80211_sta_info {
NL80211_STA_INFO_NONPEER_PM,
NL80211_STA_INFO_RX_BYTES64,
NL80211_STA_INFO_TX_BYTES64,
+ NL80211_STA_INFO_CHAIN_SIGNAL,
+ NL80211_STA_INFO_CHAIN_SIGNAL_AVG,
@ -268,7 +277,7 @@
__NL80211_STA_INFO_AFTER_LAST,
--- a/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;
}
@ -301,7 +310,7 @@
static int nl80211_send_station(struct sk_buff *msg, u32 portid, u32 seq,
int flags,
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:
break;
}
@ -322,7 +331,7 @@
NL80211_STA_INFO_TX_BITRATE))
--- a/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_local *local = sdata->local;
struct timespec uptime;
@ -330,7 +339,7 @@
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_avg = (s8) -ewma_read(&sta->avg_signal);
}

View File

@ -1,6 +1,6 @@
--- a/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
* value only that is set to the minimum of all interfaces
@ -8,7 +8,7 @@
*
* @channel: the channel to tune to
* @channel_type: the channel (HT) type
@@ -976,6 +977,7 @@ struct ieee80211_conf {
@@ -1000,6 +1001,7 @@ struct ieee80211_conf {
u32 flags;
int power_level, dynamic_ps_timeout;
int max_sleep_period;
@ -18,8 +18,8 @@
u8 ps_dtim_period;
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -1144,6 +1144,7 @@ struct ieee80211_local {
bool disable_dynamic_ps;
@@ -1116,6 +1116,7 @@ struct ieee80211_local {
int dynamic_ps_forced_timeout;
int user_power_level; /* in dBm, for all interfaces */
+ int user_antenna_gain; /* in dBi */
@ -28,9 +28,9 @@
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -1580,6 +1580,8 @@ enum nl80211_attrs {
NL80211_ATTR_P2P_CTWINDOW,
NL80211_ATTR_P2P_OPPPS,
@@ -1654,6 +1654,8 @@ enum nl80211_attrs {
NL80211_ATTR_STA_CAPABILITY,
NL80211_ATTR_STA_EXT_CAPABILITY,
+ NL80211_ATTR_WIPHY_ANTENNA_GAIN,
+
@ -39,15 +39,15 @@
__NL80211_ATTR_AFTER_LAST,
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -365,6 +365,7 @@ static const struct nla_policy nl80211_p
[NL80211_ATTR_SCAN_FLAGS] = { .type = NLA_U32 },
[NL80211_ATTR_P2P_CTWINDOW] = { .type = NLA_U8 },
[NL80211_ATTR_P2P_OPPPS] = { .type = NLA_U8 },
@@ -370,6 +370,7 @@ static const struct nla_policy nl80211_p
[NL80211_ATTR_MAC_ADDRS] = { .type = NLA_NESTED },
[NL80211_ATTR_STA_CAPABILITY] = { .type = NLA_U16 },
[NL80211_ATTR_STA_EXT_CAPABILITY] = { .type = NLA_BINARY, },
+ [NL80211_ATTR_WIPHY_ANTENNA_GAIN] = { .type = NLA_U32 },
};
/* 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;
}
@ -72,7 +72,7 @@
u32 tx_ant, rx_ant;
--- a/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;
}
@ -92,7 +92,7 @@
static int ieee80211_set_wds_peer(struct wiphy *wiphy, struct net_device *dev,
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_tx_power = ieee80211_set_tx_power,
.get_tx_power = ieee80211_get_tx_power,
@ -102,7 +102,7 @@
CFG80211_TESTMODE_CMD(ieee80211_testmode_cmd)
--- a/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.)
* @get_tx_power: store the current TX power into the dbm variable;
* return 0 if successful
@ -110,7 +110,7 @@
*
* @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);
int (*get_tx_power)(struct wiphy *wiphy, struct wireless_dev *wdev,
int *dbm);
@ -120,7 +120,7 @@
const u8 *addr);
--- a/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_channel *chan;
u32 changed = 0;
@ -129,7 +129,7 @@
enum nl80211_channel_type channel_type;
u32 offchannel_flag;
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();
@ -152,7 +152,7 @@
local->hw.cur_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;
local->hw.radiotap_vht_details = IEEE80211_RADIOTAP_VHT_KNOWN_GI |
IEEE80211_RADIOTAP_VHT_KNOWN_BANDWIDTH;

View File

@ -21,7 +21,7 @@
if (ant_gain > max_gain)
--- a/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) {

View File

@ -1,6 +1,6 @@
--- a/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_deinit_leds(struct ath_softc *sc);
void ath_fill_led_pin(struct ath_softc *sc);
@ -10,8 +10,8 @@
#else
static inline void ath_init_leds(struct ath_softc *sc)
{
@@ -666,6 +669,13 @@ struct ath9k_vif_iter_data {
int nadhocs; /* number of adhoc vifs */
@@ -686,6 +689,13 @@ enum spectral_mode {
SPECTRAL_CHANSCAN,
};
+struct ath_led {
@ -24,7 +24,7 @@
struct ath_softc {
struct ieee80211_hw *hw;
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];
#ifdef CONFIG_MAC80211_LEDS
@ -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
@@ -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
/* must be initialized before ieee80211_register_hw */
@ -173,7 +173,7 @@
#endif
--- a/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,
};
@ -235,7 +235,7 @@
#ifdef CONFIG_ATH9K_MAC_DEBUG
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);
debugfs_create_file("chanbw", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy,
sc, &fops_chanbw);

View File

@ -1,6 +1,6 @@
--- a/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 */
u32 rc_rateidx_mask[IEEE80211_NUM_BANDS];
@ -11,7 +11,7 @@
union {
--- a/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++) {
@ -34,7 +34,7 @@
return 0;
--- a/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
* rate_idx_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
*/
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;
u8 max_rate_idx;
u32 rate_idx_mask;
@ -54,7 +54,7 @@
--- a/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;
else
txrc.max_rate_idx = fls(txrc.rate_idx_mask) - 1;
@ -69,7 +69,7 @@
txrc.bss = (tx->sdata->vif.type == NL80211_IFTYPE_AP ||
tx->sdata->vif.type == NL80211_IFTYPE_MESH_POINT ||
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;
else
txrc.max_rate_idx = fls(txrc.rate_idx_mask) - 1;

View File

@ -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 */

View File

@ -1,6 +1,6 @@
--- a/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)
{
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,
sc->debug.debugfs_phy, sc, &fops_gpio_led);
#endif
@ -62,7 +62,7 @@
debugfs_create_file("interrupt", S_IRUSR, sc->debug.debugfs_phy, sc,
--- a/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,
};
@ -75,7 +75,7 @@
struct ath9k_hw_version {
u32 magic;
u16 devid;
@@ -738,6 +744,8 @@ struct ath_hw {
@@ -778,6 +784,8 @@ struct ath_hw {
u32 rfkill_polarity;
u32 ah_flags;
@ -84,7 +84,7 @@
bool reset_power_on;
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_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);
--- a/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 */
status &= ah->imask; /* discard unasked-for bits */

View File

@ -48,7 +48,7 @@
AR_SREV_9285(ah) ||
--- a/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;
int (*get_mac_revision)(void);
int (*external_reset)(void);
@ -59,7 +59,7 @@
};
--- a/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->get_mac_revision = pdata->get_mac_revision;
ah->external_reset = pdata->external_reset;

View File

@ -101,7 +101,7 @@
+}
--- a/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);
int (*load_firmware) (struct rt2x00_dev *rt2x00dev,
const u8 *data, const size_t len);
@ -109,7 +109,7 @@
/*
* Device initialization/deinitialization handlers.
@@ -721,6 +722,7 @@ enum rt2x00_capability_flags {
@@ -719,6 +720,7 @@ enum rt2x00_capability_flags {
REQUIRE_SW_SEQNO,
REQUIRE_HT_TX_DESC,
REQUIRE_PS_AUTOWAKE,
@ -117,7 +117,7 @@
/*
* Capabilities
@@ -990,6 +992,11 @@ struct rt2x00_dev {
@@ -988,6 +990,11 @@ struct rt2x00_dev {
const struct firmware *fw;
/*
@ -244,7 +244,7 @@
.get_entry_state = rt2800pci_get_entry_state,
--- a/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;
@ -255,7 +255,7 @@
/*
* 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)
kfree(rt2x00dev->drv_data);

View File

@ -1,6 +1,6 @@
--- a/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_RT2800_LIB=m
export CONFIG_RT2X00_LIB_FIRMWARE=y

View File

@ -24,7 +24,7 @@ Helmut
--- a/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)
{
unsigned int payload_length = skb->len - header_length;

View File

@ -12,7 +12,7 @@
#endif /* _RT2X00_PLATFORM_H */
--- a/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 i;
@ -37,7 +37,7 @@
num_rates += 4;
--- a/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;
#define SUPPORT_BAND_2GHZ 0x00000001
#define SUPPORT_BAND_5GHZ 0x00000002

View File

@ -10,7 +10,7 @@
int disable_5ghz;
--- a/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;
}
@ -31,7 +31,7 @@
{
--- a/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,
struct ieee80211_vif *vif);

View File

@ -1,6 +1,6 @@
--- a/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
*/
@ -22,7 +22,7 @@
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);
if (rt2x00_rt(rt2x00dev, RT3290) ||
@ -30,7 +30,7 @@
rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392))
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)
{
@ -43,7 +43,7 @@
rt2800_rfcsr_write(rt2x00dev, 0, 0xf0);
rt2800_rfcsr_write(rt2x00dev, 1, 0x23);
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, 32, 0x80);
rt2800_rfcsr_write(rt2x00dev, 33, 0x00);
@ -77,7 +77,7 @@
rt2800_rfcsr_write(rt2x00dev, 43, 0xdb);
rt2800_rfcsr_write(rt2x00dev, 44, 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, 48, 0x14);
rt2800_rfcsr_write(rt2x00dev, 49, 0x00);
@ -107,7 +107,7 @@
rt2800_rfcsr_write(rt2x00dev, 59, 0x00);
rt2800_rfcsr_write(rt2x00dev, 60, 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.
*/
@ -117,7 +117,7 @@
__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)
__set_bit(CAPABILITY_POWER_LIMIT, &rt2x00dev->cap_flags);
@ -203,7 +203,7 @@
* EEPROM frequency
--- a/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_BT_COEXIST,
CAPABILITY_VCO_RECALIBRATION,

View File

@ -1,6 +1,6 @@
--- a/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},
};
@ -28,7 +28,7 @@
static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
{
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, RF3290) ||
rt2x00_rf(rt2x00dev, RF3320) ||
@ -36,7 +36,7 @@
rt2x00_rf(rt2x00dev, RF5360) ||
rt2x00_rf(rt2x00dev, RF5370) ||
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)) {
spec->num_channels = 14;
spec->channels = rf_vals_3x;
@ -49,7 +49,7 @@
} else if (rt2x00_rf(rt2x00dev, RF3052)) {
spec->supported_bands |= SUPPORT_BAND_5GHZ;
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;
}
@ -69,7 +69,7 @@
int rt2800_probe_hw(struct rt2x00_dev *rt2x00dev)
{
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);
/*
@ -87,7 +87,7 @@
retval = rt2800_probe_hw_mode(rt2x00dev);
--- a/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_info: Additional information for channels (See &struct channel_info).
* @ht: Driver HT Capabilities (See &ieee80211_sta_ht_cap).
@ -95,7 +95,7 @@
*/
struct hw_mode_spec {
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;
struct ieee80211_sta_ht_cap ht;

View File

@ -1,6 +1,6 @@
--- a/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));
static DEFINE_PCI_DEVICE_TABLE(mwl8k_pci_id_table) = {

View File

@ -1,6 +1,6 @@
--- a/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, 23, 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);
--- a/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);
/* 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
@@ -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)
return;
@ -28,7 +28,7 @@
if (BRCMS_ISNPHY(wlc_hw->band)) {
brcms_ucode_write(wlc_hw, ucode->bcm43xx_16_mimo,
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);
@ -37,7 +37,7 @@
if (BRCMS_ISNPHY(wlc_hw->band))
brcms_c_write_inits(wlc_hw, ucode->d11n0initvals16);
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)
return true;