mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-16 22:10:24 +00:00
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
Conflicts: net/mac80211/scan.c
This commit is contained in:
commit
6e7e6213e4
@ -812,12 +812,11 @@ static void ath9k_hw_init_mode_gain_regs(struct ath_hw *ah)
|
||||
}
|
||||
}
|
||||
|
||||
static void ath9k_hw_init_11a_eeprom_fix(struct ath_hw *ah)
|
||||
static void ath9k_hw_init_eeprom_fix(struct ath_hw *ah)
|
||||
{
|
||||
u32 i, j;
|
||||
|
||||
if ((ah->hw_version.devid == AR9280_DEVID_PCI) &&
|
||||
test_bit(ATH9K_MODE_11A, ah->caps.wireless_modes)) {
|
||||
if (ah->hw_version.devid == AR9280_DEVID_PCI) {
|
||||
|
||||
/* EEPROM Fixup */
|
||||
for (i = 0; i < ah->iniModes.ia_rows; i++) {
|
||||
@ -937,7 +936,7 @@ int ath9k_hw_init(struct ath_hw *ah)
|
||||
if (r)
|
||||
return r;
|
||||
|
||||
ath9k_hw_init_11a_eeprom_fix(ah);
|
||||
ath9k_hw_init_eeprom_fix(ah);
|
||||
|
||||
r = ath9k_hw_init_macaddr(ah);
|
||||
if (r) {
|
||||
|
@ -1472,10 +1472,10 @@ static void ath9k_remove_interface(struct ieee80211_hw *hw,
|
||||
(sc->sc_ah->opmode == NL80211_IFTYPE_MESH_POINT)) {
|
||||
ath9k_ps_wakeup(sc);
|
||||
ath9k_hw_stoptxdma(sc->sc_ah, sc->beacon.beaconq);
|
||||
ath_beacon_return(sc, avp);
|
||||
ath9k_ps_restore(sc);
|
||||
}
|
||||
|
||||
ath_beacon_return(sc, avp);
|
||||
sc->sc_flags &= ~SC_OP_BEACONS;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(sc->beacon.bslot); i++) {
|
||||
|
@ -115,6 +115,7 @@
|
||||
#define B43_MMIO_TSF_2 0x636 /* core rev < 3 only */
|
||||
#define B43_MMIO_TSF_3 0x638 /* core rev < 3 only */
|
||||
#define B43_MMIO_RNG 0x65A
|
||||
#define B43_MMIO_IFSSLOT 0x684 /* Interframe slot time */
|
||||
#define B43_MMIO_IFSCTL 0x688 /* Interframe space control */
|
||||
#define B43_MMIO_IFSCTL_USE_EDCF 0x0004
|
||||
#define B43_MMIO_POWERUP_DELAY 0x6A8
|
||||
|
@ -637,10 +637,17 @@ static void b43_upload_card_macaddress(struct b43_wldev *dev)
|
||||
static void b43_set_slot_time(struct b43_wldev *dev, u16 slot_time)
|
||||
{
|
||||
/* slot_time is in usec. */
|
||||
if (dev->phy.type != B43_PHYTYPE_G)
|
||||
/* This test used to exit for all but a G PHY. */
|
||||
if (b43_current_band(dev->wl) == IEEE80211_BAND_5GHZ)
|
||||
return;
|
||||
b43_write16(dev, 0x684, 510 + slot_time);
|
||||
b43_shm_write16(dev, B43_SHM_SHARED, 0x0010, slot_time);
|
||||
b43_write16(dev, B43_MMIO_IFSSLOT, 510 + slot_time);
|
||||
/* Shared memory location 0x0010 is the slot time and should be
|
||||
* set to slot_time; however, this register is initially 0 and changing
|
||||
* the value adversely affects the transmit rate for BCM4311
|
||||
* devices. Until this behavior is unterstood, delete this step
|
||||
*
|
||||
* b43_shm_write16(dev, B43_SHM_SHARED, 0x0010, slot_time);
|
||||
*/
|
||||
}
|
||||
|
||||
static void b43_short_slot_timing_enable(struct b43_wldev *dev)
|
||||
|
@ -2787,6 +2787,7 @@ int iwl_mac_config(struct ieee80211_hw *hw, u32 changed)
|
||||
if ((le16_to_cpu(priv->staging_rxon.channel) != ch))
|
||||
priv->staging_rxon.flags = 0;
|
||||
|
||||
iwl_set_rxon_ht(priv, ht_conf);
|
||||
iwl_set_rxon_channel(priv, conf->channel);
|
||||
|
||||
iwl_set_flags_for_band(priv, conf->channel->band);
|
||||
|
@ -339,7 +339,7 @@ u8 iwl_add_station(struct iwl_priv *priv, const u8 *addr, bool is_ap, u8 flags,
|
||||
}
|
||||
EXPORT_SYMBOL(iwl_add_station);
|
||||
|
||||
static void iwl_sta_ucode_deactivate(struct iwl_priv *priv, const char *addr)
|
||||
static void iwl_sta_ucode_deactivate(struct iwl_priv *priv, const u8 *addr)
|
||||
{
|
||||
unsigned long flags;
|
||||
u8 sta_id = iwl_find_station(priv, addr);
|
||||
@ -366,7 +366,7 @@ static void iwl_remove_sta_callback(struct iwl_priv *priv,
|
||||
{
|
||||
struct iwl_rem_sta_cmd *rm_sta =
|
||||
(struct iwl_rem_sta_cmd *)cmd->cmd.payload;
|
||||
const char *addr = rm_sta->addr;
|
||||
const u8 *addr = rm_sta->addr;
|
||||
|
||||
if (pkt->hdr.flags & IWL_CMD_FAILED_MSK) {
|
||||
IWL_ERR(priv, "Bad return from REPLY_REMOVE_STA (0x%08X)\n",
|
||||
|
@ -494,8 +494,7 @@ static int ssb_devices_register(struct ssb_bus *bus)
|
||||
#endif
|
||||
break;
|
||||
case SSB_BUSTYPE_SDIO:
|
||||
#ifdef CONFIG_SSB_SDIO
|
||||
sdev->irq = bus->host_sdio->dev.irq;
|
||||
#ifdef CONFIG_SSB_SDIOHOST
|
||||
dev->parent = &bus->host_sdio->dev;
|
||||
#endif
|
||||
break;
|
||||
|
@ -708,7 +708,7 @@ TRACE_EVENT(drv_ampdu_action,
|
||||
__entry->ret = ret;
|
||||
__entry->action = action;
|
||||
__entry->tid = tid;
|
||||
__entry->ssn = *ssn;
|
||||
__entry->ssn = ssn ? *ssn : 0;
|
||||
),
|
||||
|
||||
TP_printk(
|
||||
|
@ -652,7 +652,7 @@ static void ieee80211_rx_mgmt_probe_req(struct ieee80211_sub_if_data *sdata,
|
||||
}
|
||||
if (pos[1] != 0 &&
|
||||
(pos[1] != ifibss->ssid_len ||
|
||||
!memcmp(pos + 2, ifibss->ssid, ifibss->ssid_len))) {
|
||||
memcmp(pos + 2, ifibss->ssid, ifibss->ssid_len))) {
|
||||
/* Ignore ProbeReq for foreign SSID */
|
||||
return;
|
||||
}
|
||||
|
@ -345,6 +345,13 @@ static int __ieee80211_start_scan(struct ieee80211_sub_if_data *sdata,
|
||||
if (local->scan_req)
|
||||
return -EBUSY;
|
||||
|
||||
if (!list_empty(&local->work_list)) {
|
||||
/* wait for the work to finish/time out */
|
||||
local->scan_req = req;
|
||||
local->scan_sdata = sdata;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (local->ops->hw_scan) {
|
||||
u8 *ies;
|
||||
|
||||
@ -364,29 +371,33 @@ static int __ieee80211_start_scan(struct ieee80211_sub_if_data *sdata,
|
||||
local->hw_scan_req->ie = ies;
|
||||
|
||||
local->hw_scan_band = 0;
|
||||
|
||||
/*
|
||||
* After allocating local->hw_scan_req, we must
|
||||
* go through until ieee80211_prep_hw_scan(), so
|
||||
* anything that might be changed here and leave
|
||||
* this function early must not go after this
|
||||
* allocation.
|
||||
*/
|
||||
}
|
||||
|
||||
local->scan_req = req;
|
||||
local->scan_sdata = sdata;
|
||||
|
||||
if (!list_empty(&local->work_list)) {
|
||||
/* wait for the work to finish/time out */
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (local->ops->hw_scan)
|
||||
__set_bit(SCAN_HW_SCANNING, &local->scanning);
|
||||
else
|
||||
__set_bit(SCAN_SW_SCANNING, &local->scanning);
|
||||
|
||||
/*
|
||||
* Kicking off the scan need not be protected,
|
||||
* only the scan variable stuff, since now
|
||||
* local->scan_req is assigned and other callers
|
||||
* will abort their scan attempts.
|
||||
*
|
||||
* This avoids getting a scan_mtx -> iflist_mtx
|
||||
* dependency, so that the scan completed calls
|
||||
* have more locking freedom.
|
||||
* This avoids too many locking dependencies
|
||||
* so that the scan completed calls have more
|
||||
* locking freedom.
|
||||
*/
|
||||
|
||||
ieee80211_recalc_idle(local);
|
||||
|
Loading…
Reference in New Issue
Block a user