mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-29 10:01:25 +00:00
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6
This commit is contained in:
commit
ce300c7ffa
14 changed files with 62 additions and 77 deletions
|
@ -3502,9 +3502,9 @@ F: drivers/net/mv643xx_eth.*
|
||||||
F: include/linux/mv643xx.h
|
F: include/linux/mv643xx.h
|
||||||
|
|
||||||
MARVELL MWL8K WIRELESS DRIVER
|
MARVELL MWL8K WIRELESS DRIVER
|
||||||
M: Lennert Buytenhek <buytenh@marvell.com>
|
M: Lennert Buytenhek <buytenh@wantstofly.org>
|
||||||
L: linux-wireless@vger.kernel.org
|
L: linux-wireless@vger.kernel.org
|
||||||
S: Supported
|
S: Maintained
|
||||||
F: drivers/net/wireless/mwl8k.c
|
F: drivers/net/wireless/mwl8k.c
|
||||||
|
|
||||||
MARVELL SOC MMC/SD/SDIO CONTROLLER DRIVER
|
MARVELL SOC MMC/SD/SDIO CONTROLLER DRIVER
|
||||||
|
|
|
@ -1310,6 +1310,16 @@ static void ath9k_hw_override_ini(struct ath_hw *ah,
|
||||||
* Necessary to avoid issues on AR5416 2.0
|
* Necessary to avoid issues on AR5416 2.0
|
||||||
*/
|
*/
|
||||||
REG_WRITE(ah, 0x9800 + (651 << 2), 0x11);
|
REG_WRITE(ah, 0x9800 + (651 << 2), 0x11);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Disable RIFS search on some chips to avoid baseband
|
||||||
|
* hang issues.
|
||||||
|
*/
|
||||||
|
if (AR_SREV_9100(ah) || AR_SREV_9160(ah)) {
|
||||||
|
val = REG_READ(ah, AR_PHY_HEAVY_CLIP_FACTOR_RIFS);
|
||||||
|
val &= ~AR_PHY_RIFS_INIT_DELAY;
|
||||||
|
REG_WRITE(ah, AR_PHY_HEAVY_CLIP_FACTOR_RIFS, val);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static u32 ath9k_hw_def_ini_fixup(struct ath_hw *ah,
|
static u32 ath9k_hw_def_ini_fixup(struct ath_hw *ah,
|
||||||
|
|
|
@ -384,6 +384,9 @@ bool ath9k_hw_set_rf_regs(struct ath_hw *ah,
|
||||||
|
|
||||||
#define AR_PHY_HEAVY_CLIP_ENABLE 0x99E0
|
#define AR_PHY_HEAVY_CLIP_ENABLE 0x99E0
|
||||||
|
|
||||||
|
#define AR_PHY_HEAVY_CLIP_FACTOR_RIFS 0x99EC
|
||||||
|
#define AR_PHY_RIFS_INIT_DELAY 0x03ff0000
|
||||||
|
|
||||||
#define AR_PHY_M_SLEEP 0x99f0
|
#define AR_PHY_M_SLEEP 0x99f0
|
||||||
#define AR_PHY_REFCLKDLY 0x99f4
|
#define AR_PHY_REFCLKDLY 0x99f4
|
||||||
#define AR_PHY_REFCLKPD 0x99f8
|
#define AR_PHY_REFCLKPD 0x99f8
|
||||||
|
|
|
@ -3,7 +3,6 @@ config B43
|
||||||
depends on SSB_POSSIBLE && MAC80211 && HAS_DMA
|
depends on SSB_POSSIBLE && MAC80211 && HAS_DMA
|
||||||
select SSB
|
select SSB
|
||||||
select FW_LOADER
|
select FW_LOADER
|
||||||
select SSB_BLOCKIO
|
|
||||||
---help---
|
---help---
|
||||||
b43 is a driver for the Broadcom 43xx series wireless devices.
|
b43 is a driver for the Broadcom 43xx series wireless devices.
|
||||||
|
|
||||||
|
@ -79,6 +78,14 @@ config B43_SDIO
|
||||||
|
|
||||||
If unsure, say N.
|
If unsure, say N.
|
||||||
|
|
||||||
|
#Data transfers to the device via PIO. We want it as a fallback even
|
||||||
|
# if we can do DMA.
|
||||||
|
config B43_PIO
|
||||||
|
bool
|
||||||
|
depends on B43
|
||||||
|
select SSB_BLOCKIO
|
||||||
|
default y
|
||||||
|
|
||||||
config B43_NPHY
|
config B43_NPHY
|
||||||
bool "Pre IEEE 802.11n support (BROKEN)"
|
bool "Pre IEEE 802.11n support (BROKEN)"
|
||||||
depends on B43 && EXPERIMENTAL && BROKEN
|
depends on B43 && EXPERIMENTAL && BROKEN
|
||||||
|
@ -130,4 +137,12 @@ config B43_DEBUG
|
||||||
for production use.
|
for production use.
|
||||||
Only say Y, if you are debugging a problem in the b43 driver sourcecode.
|
Only say Y, if you are debugging a problem in the b43 driver sourcecode.
|
||||||
|
|
||||||
|
config B43_FORCE_PIO
|
||||||
|
bool "Force usage of PIO instead of DMA"
|
||||||
|
depends on B43 && B43_DEBUG
|
||||||
|
---help---
|
||||||
|
This will disable DMA and always enable PIO instead.
|
||||||
|
|
||||||
|
Say N!
|
||||||
|
This is only for debugging the PIO engine code. You do
|
||||||
|
_NOT_ want to enable this.
|
||||||
|
|
|
@ -702,6 +702,7 @@ struct b43_wldev {
|
||||||
bool radio_hw_enable; /* saved state of radio hardware enabled state */
|
bool radio_hw_enable; /* saved state of radio hardware enabled state */
|
||||||
bool qos_enabled; /* TRUE, if QoS is used. */
|
bool qos_enabled; /* TRUE, if QoS is used. */
|
||||||
bool hwcrypto_enabled; /* TRUE, if HW crypto acceleration is enabled. */
|
bool hwcrypto_enabled; /* TRUE, if HW crypto acceleration is enabled. */
|
||||||
|
bool use_pio; /* TRUE if next init should use PIO */
|
||||||
|
|
||||||
/* PHY/Radio device. */
|
/* PHY/Radio device. */
|
||||||
struct b43_phy phy;
|
struct b43_phy phy;
|
||||||
|
@ -886,6 +887,12 @@ static inline bool b43_using_pio_transfers(struct b43_wldev *dev)
|
||||||
return dev->__using_pio_transfers;
|
return dev->__using_pio_transfers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_B43_FORCE_PIO
|
||||||
|
# define B43_PIO_DEFAULT 1
|
||||||
|
#else
|
||||||
|
# define B43_PIO_DEFAULT 0
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Message printing */
|
/* Message printing */
|
||||||
void b43info(struct b43_wl *wl, const char *fmt, ...)
|
void b43info(struct b43_wl *wl, const char *fmt, ...)
|
||||||
__attribute__ ((format(printf, 2, 3)));
|
__attribute__ ((format(printf, 2, 3)));
|
||||||
|
|
|
@ -107,9 +107,9 @@ int b43_modparam_verbose = B43_VERBOSITY_DEFAULT;
|
||||||
module_param_named(verbose, b43_modparam_verbose, int, 0644);
|
module_param_named(verbose, b43_modparam_verbose, int, 0644);
|
||||||
MODULE_PARM_DESC(verbose, "Log message verbosity: 0=error, 1=warn, 2=info(default), 3=debug");
|
MODULE_PARM_DESC(verbose, "Log message verbosity: 0=error, 1=warn, 2=info(default), 3=debug");
|
||||||
|
|
||||||
static int modparam_pio;
|
int b43_modparam_pio = B43_PIO_DEFAULT;
|
||||||
module_param_named(pio, modparam_pio, int, 0444);
|
module_param_named(pio, b43_modparam_pio, int, 0644);
|
||||||
MODULE_PARM_DESC(pio, "enable(1) / disable(0) PIO mode");
|
MODULE_PARM_DESC(pio, "Use PIO accesses by default: 0=DMA, 1=PIO");
|
||||||
|
|
||||||
static const struct ssb_device_id b43_ssb_tbl[] = {
|
static const struct ssb_device_id b43_ssb_tbl[] = {
|
||||||
SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, 5),
|
SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, 5),
|
||||||
|
@ -1804,8 +1804,9 @@ static void b43_do_interrupt_thread(struct b43_wldev *dev)
|
||||||
dma_reason[4], dma_reason[5]);
|
dma_reason[4], dma_reason[5]);
|
||||||
b43err(dev->wl, "This device does not support DMA "
|
b43err(dev->wl, "This device does not support DMA "
|
||||||
"on your system. Please use PIO instead.\n");
|
"on your system. Please use PIO instead.\n");
|
||||||
b43err(dev->wl, "Unload the b43 module and reload "
|
/* Fall back to PIO transfers if we get fatal DMA errors! */
|
||||||
"with 'pio=1'\n");
|
dev->use_pio = 1;
|
||||||
|
b43_controller_restart(dev, "DMA error");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (merged_dma_reason & B43_DMAIRQ_NONFATALMASK) {
|
if (merged_dma_reason & B43_DMAIRQ_NONFATALMASK) {
|
||||||
|
@ -4357,7 +4358,7 @@ static int b43_wireless_core_init(struct b43_wldev *dev)
|
||||||
|
|
||||||
if ((dev->dev->bus->bustype == SSB_BUSTYPE_PCMCIA) ||
|
if ((dev->dev->bus->bustype == SSB_BUSTYPE_PCMCIA) ||
|
||||||
(dev->dev->bus->bustype == SSB_BUSTYPE_SDIO) ||
|
(dev->dev->bus->bustype == SSB_BUSTYPE_SDIO) ||
|
||||||
modparam_pio) {
|
dev->use_pio) {
|
||||||
dev->__using_pio_transfers = 1;
|
dev->__using_pio_transfers = 1;
|
||||||
err = b43_pio_init(dev);
|
err = b43_pio_init(dev);
|
||||||
} else {
|
} else {
|
||||||
|
@ -4824,6 +4825,7 @@ static int b43_one_core_attach(struct ssb_device *dev, struct b43_wl *wl)
|
||||||
if (!wldev)
|
if (!wldev)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
wldev->use_pio = b43_modparam_pio;
|
||||||
wldev->dev = dev;
|
wldev->dev = dev;
|
||||||
wldev->wl = wl;
|
wldev->wl = wl;
|
||||||
b43_set_status(wldev, B43_STAT_UNINIT);
|
b43_set_status(wldev, B43_STAT_UNINIT);
|
||||||
|
|
|
@ -2941,21 +2941,10 @@ static int iwl_mac_ampdu_action(struct ieee80211_hw *hw,
|
||||||
return ret;
|
return ret;
|
||||||
case IEEE80211_AMPDU_TX_START:
|
case IEEE80211_AMPDU_TX_START:
|
||||||
IWL_DEBUG_HT(priv, "start Tx\n");
|
IWL_DEBUG_HT(priv, "start Tx\n");
|
||||||
ret = iwl_tx_agg_start(priv, sta->addr, tid, ssn);
|
return iwl_tx_agg_start(priv, sta->addr, tid, ssn);
|
||||||
if (ret == 0) {
|
|
||||||
priv->agg_tids_count++;
|
|
||||||
IWL_DEBUG_HT(priv, "priv->agg_tids_count = %u\n",
|
|
||||||
priv->agg_tids_count);
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
case IEEE80211_AMPDU_TX_STOP:
|
case IEEE80211_AMPDU_TX_STOP:
|
||||||
IWL_DEBUG_HT(priv, "stop Tx\n");
|
IWL_DEBUG_HT(priv, "stop Tx\n");
|
||||||
ret = iwl_tx_agg_stop(priv, sta->addr, tid);
|
ret = iwl_tx_agg_stop(priv, sta->addr, tid);
|
||||||
if ((ret == 0) && (priv->agg_tids_count > 0)) {
|
|
||||||
priv->agg_tids_count--;
|
|
||||||
IWL_DEBUG_HT(priv, "priv->agg_tids_count = %u\n",
|
|
||||||
priv->agg_tids_count);
|
|
||||||
}
|
|
||||||
if (test_bit(STATUS_EXIT_PENDING, &priv->status))
|
if (test_bit(STATUS_EXIT_PENDING, &priv->status))
|
||||||
return 0;
|
return 0;
|
||||||
else
|
else
|
||||||
|
@ -3376,7 +3365,6 @@ static int iwl_init_drv(struct iwl_priv *priv)
|
||||||
priv->iw_mode = NL80211_IFTYPE_STATION;
|
priv->iw_mode = NL80211_IFTYPE_STATION;
|
||||||
priv->current_ht_config.smps = IEEE80211_SMPS_STATIC;
|
priv->current_ht_config.smps = IEEE80211_SMPS_STATIC;
|
||||||
priv->missed_beacon_threshold = IWL_MISSED_BEACON_THRESHOLD_DEF;
|
priv->missed_beacon_threshold = IWL_MISSED_BEACON_THRESHOLD_DEF;
|
||||||
priv->agg_tids_count = 0;
|
|
||||||
|
|
||||||
/* initialize force reset */
|
/* initialize force reset */
|
||||||
priv->force_reset[IWL_RF_RESET].reset_duration =
|
priv->force_reset[IWL_RF_RESET].reset_duration =
|
||||||
|
|
|
@ -2623,6 +2623,7 @@ struct iwl_ssid_ie {
|
||||||
#define TX_CMD_LIFE_TIME_INFINITE cpu_to_le32(0xFFFFFFFF)
|
#define TX_CMD_LIFE_TIME_INFINITE cpu_to_le32(0xFFFFFFFF)
|
||||||
#define IWL_GOOD_CRC_TH cpu_to_le16(1)
|
#define IWL_GOOD_CRC_TH cpu_to_le16(1)
|
||||||
#define IWL_MAX_SCAN_SIZE 1024
|
#define IWL_MAX_SCAN_SIZE 1024
|
||||||
|
#define IWL_MAX_CMD_SIZE 4096
|
||||||
#define IWL_MAX_PROBE_REQUEST 200
|
#define IWL_MAX_PROBE_REQUEST 200
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -1084,9 +1084,6 @@ struct iwl_priv {
|
||||||
/* storing the jiffies when the plcp error rate is received */
|
/* storing the jiffies when the plcp error rate is received */
|
||||||
unsigned long plcp_jiffies;
|
unsigned long plcp_jiffies;
|
||||||
|
|
||||||
/* reporting the number of tids has AGG on. 0 means no AGGREGATION */
|
|
||||||
u8 agg_tids_count;
|
|
||||||
|
|
||||||
/* force reset */
|
/* force reset */
|
||||||
struct iwl_force_reset force_reset[IWL_MAX_FORCE_RESET];
|
struct iwl_force_reset force_reset[IWL_MAX_FORCE_RESET];
|
||||||
|
|
||||||
|
|
|
@ -616,11 +616,6 @@ static void iwl_accumulative_statistics(struct iwl_priv *priv,
|
||||||
|
|
||||||
#define REG_RECALIB_PERIOD (60)
|
#define REG_RECALIB_PERIOD (60)
|
||||||
|
|
||||||
/* the threshold ratio of actual_ack_cnt to expected_ack_cnt in percent */
|
|
||||||
#define ACK_CNT_RATIO (50)
|
|
||||||
#define BA_TIMEOUT_CNT (5)
|
|
||||||
#define BA_TIMEOUT_MAX (16)
|
|
||||||
|
|
||||||
#define PLCP_MSG "plcp_err exceeded %u, %u, %u, %u, %u, %d, %u mSecs\n"
|
#define PLCP_MSG "plcp_err exceeded %u, %u, %u, %u, %u, %d, %u mSecs\n"
|
||||||
void iwl_rx_statistics(struct iwl_priv *priv,
|
void iwl_rx_statistics(struct iwl_priv *priv,
|
||||||
struct iwl_rx_mem_buffer *rxb)
|
struct iwl_rx_mem_buffer *rxb)
|
||||||
|
@ -630,9 +625,6 @@ void iwl_rx_statistics(struct iwl_priv *priv,
|
||||||
int combined_plcp_delta;
|
int combined_plcp_delta;
|
||||||
unsigned int plcp_msec;
|
unsigned int plcp_msec;
|
||||||
unsigned long plcp_received_jiffies;
|
unsigned long plcp_received_jiffies;
|
||||||
int actual_ack_cnt_delta;
|
|
||||||
int expected_ack_cnt_delta;
|
|
||||||
int ba_timeout_delta;
|
|
||||||
|
|
||||||
IWL_DEBUG_RX(priv, "Statistics notification received (%d vs %d).\n",
|
IWL_DEBUG_RX(priv, "Statistics notification received (%d vs %d).\n",
|
||||||
(int)sizeof(priv->statistics),
|
(int)sizeof(priv->statistics),
|
||||||
|
@ -647,44 +639,6 @@ void iwl_rx_statistics(struct iwl_priv *priv,
|
||||||
#ifdef CONFIG_IWLWIFI_DEBUG
|
#ifdef CONFIG_IWLWIFI_DEBUG
|
||||||
iwl_accumulative_statistics(priv, (__le32 *)&pkt->u.stats);
|
iwl_accumulative_statistics(priv, (__le32 *)&pkt->u.stats);
|
||||||
#endif
|
#endif
|
||||||
actual_ack_cnt_delta = le32_to_cpu(pkt->u.stats.tx.actual_ack_cnt) -
|
|
||||||
le32_to_cpu(priv->statistics.tx.actual_ack_cnt);
|
|
||||||
expected_ack_cnt_delta = le32_to_cpu(
|
|
||||||
pkt->u.stats.tx.expected_ack_cnt) -
|
|
||||||
le32_to_cpu(priv->statistics.tx.expected_ack_cnt);
|
|
||||||
ba_timeout_delta = le32_to_cpu(
|
|
||||||
pkt->u.stats.tx.agg.ba_timeout) -
|
|
||||||
le32_to_cpu(priv->statistics.tx.agg.ba_timeout);
|
|
||||||
if ((priv->agg_tids_count > 0) &&
|
|
||||||
(expected_ack_cnt_delta > 0) &&
|
|
||||||
(((actual_ack_cnt_delta * 100) / expected_ack_cnt_delta) <
|
|
||||||
ACK_CNT_RATIO) &&
|
|
||||||
(ba_timeout_delta > BA_TIMEOUT_CNT)) {
|
|
||||||
IWL_DEBUG_RADIO(priv,
|
|
||||||
"actual_ack_cnt delta = %d, expected_ack_cnt = %d\n",
|
|
||||||
actual_ack_cnt_delta, expected_ack_cnt_delta);
|
|
||||||
|
|
||||||
#ifdef CONFIG_IWLWIFI_DEBUG
|
|
||||||
IWL_DEBUG_RADIO(priv, "rx_detected_cnt delta = %d\n",
|
|
||||||
priv->delta_statistics.tx.rx_detected_cnt);
|
|
||||||
IWL_DEBUG_RADIO(priv,
|
|
||||||
"ack_or_ba_timeout_collision delta = %d\n",
|
|
||||||
priv->delta_statistics.tx.ack_or_ba_timeout_collision);
|
|
||||||
#endif
|
|
||||||
IWL_DEBUG_RADIO(priv, "agg ba_timeout delta = %d\n",
|
|
||||||
ba_timeout_delta);
|
|
||||||
if ((actual_ack_cnt_delta == 0) &&
|
|
||||||
(ba_timeout_delta >=
|
|
||||||
BA_TIMEOUT_MAX)) {
|
|
||||||
IWL_DEBUG_RADIO(priv,
|
|
||||||
"call iwl_force_reset(IWL_FW_RESET)\n");
|
|
||||||
iwl_force_reset(priv, IWL_FW_RESET);
|
|
||||||
} else {
|
|
||||||
IWL_DEBUG_RADIO(priv,
|
|
||||||
"call iwl_force_reset(IWL_RF_RESET)\n");
|
|
||||||
iwl_force_reset(priv, IWL_RF_RESET);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/*
|
/*
|
||||||
* check for plcp_err and trigger radio reset if it exceeds
|
* check for plcp_err and trigger radio reset if it exceeds
|
||||||
* the plcp error threshold plcp_delta.
|
* the plcp error threshold plcp_delta.
|
||||||
|
|
|
@ -364,7 +364,7 @@ int iwl_tx_queue_init(struct iwl_priv *priv, struct iwl_tx_queue *txq,
|
||||||
for (i = 0; i < actual_slots; i++) {
|
for (i = 0; i < actual_slots; i++) {
|
||||||
/* only happens for cmd queue */
|
/* only happens for cmd queue */
|
||||||
if (i == slots_num)
|
if (i == slots_num)
|
||||||
len += IWL_MAX_SCAN_SIZE;
|
len = IWL_MAX_CMD_SIZE;
|
||||||
|
|
||||||
txq->cmd[i] = kmalloc(len, GFP_KERNEL);
|
txq->cmd[i] = kmalloc(len, GFP_KERNEL);
|
||||||
if (!txq->cmd[i])
|
if (!txq->cmd[i])
|
||||||
|
@ -1023,9 +1023,12 @@ int iwl_enqueue_hcmd(struct iwl_priv *priv, struct iwl_host_cmd *cmd)
|
||||||
|
|
||||||
/* If any of the command structures end up being larger than
|
/* If any of the command structures end up being larger than
|
||||||
* the TFD_MAX_PAYLOAD_SIZE, and it sent as a 'small' command then
|
* the TFD_MAX_PAYLOAD_SIZE, and it sent as a 'small' command then
|
||||||
* we will need to increase the size of the TFD entries */
|
* we will need to increase the size of the TFD entries
|
||||||
|
* Also, check to see if command buffer should not exceed the size
|
||||||
|
* of device_cmd and max_cmd_size. */
|
||||||
BUG_ON((fix_size > TFD_MAX_PAYLOAD_SIZE) &&
|
BUG_ON((fix_size > TFD_MAX_PAYLOAD_SIZE) &&
|
||||||
!(cmd->flags & CMD_SIZE_HUGE));
|
!(cmd->flags & CMD_SIZE_HUGE));
|
||||||
|
BUG_ON(fix_size > IWL_MAX_CMD_SIZE);
|
||||||
|
|
||||||
if (iwl_is_rfkill(priv) || iwl_is_ctkill(priv)) {
|
if (iwl_is_rfkill(priv) || iwl_is_ctkill(priv)) {
|
||||||
IWL_WARN(priv, "Not sending command - %s KILL\n",
|
IWL_WARN(priv, "Not sending command - %s KILL\n",
|
||||||
|
@ -1069,8 +1072,8 @@ int iwl_enqueue_hcmd(struct iwl_priv *priv, struct iwl_host_cmd *cmd)
|
||||||
if (cmd->flags & CMD_SIZE_HUGE)
|
if (cmd->flags & CMD_SIZE_HUGE)
|
||||||
out_cmd->hdr.sequence |= SEQ_HUGE_FRAME;
|
out_cmd->hdr.sequence |= SEQ_HUGE_FRAME;
|
||||||
len = sizeof(struct iwl_device_cmd);
|
len = sizeof(struct iwl_device_cmd);
|
||||||
len += (idx == TFD_CMD_SLOTS) ? IWL_MAX_SCAN_SIZE : 0;
|
if (idx == TFD_CMD_SLOTS)
|
||||||
|
len = IWL_MAX_CMD_SIZE;
|
||||||
|
|
||||||
#ifdef CONFIG_IWLWIFI_DEBUG
|
#ifdef CONFIG_IWLWIFI_DEBUG
|
||||||
switch (out_cmd->hdr.cmd) {
|
switch (out_cmd->hdr.cmd) {
|
||||||
|
|
|
@ -137,7 +137,7 @@ static inline bool dev_xmit_complete(int rc)
|
||||||
* used.
|
* used.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if defined(CONFIG_WLAN_80211) || defined(CONFIG_AX25) || defined(CONFIG_AX25_MODULE)
|
#if defined(CONFIG_WLAN) || defined(CONFIG_AX25) || defined(CONFIG_AX25_MODULE)
|
||||||
# if defined(CONFIG_MAC80211_MESH)
|
# if defined(CONFIG_MAC80211_MESH)
|
||||||
# define LL_MAX_HEADER 128
|
# define LL_MAX_HEADER 128
|
||||||
# else
|
# else
|
||||||
|
|
|
@ -558,8 +558,12 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
|
||||||
|
|
||||||
debugfs_hw_add(local);
|
debugfs_hw_add(local);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* if the driver doesn't specify a max listen interval we
|
||||||
|
* use 5 which should be a safe default
|
||||||
|
*/
|
||||||
if (local->hw.max_listen_interval == 0)
|
if (local->hw.max_listen_interval == 0)
|
||||||
local->hw.max_listen_interval = 1;
|
local->hw.max_listen_interval = 5;
|
||||||
|
|
||||||
local->hw.conf.listen_interval = local->hw.max_listen_interval;
|
local->hw.conf.listen_interval = local->hw.max_listen_interval;
|
||||||
|
|
||||||
|
|
|
@ -869,6 +869,7 @@ static void ieee80211_work_work(struct work_struct *work)
|
||||||
break;
|
break;
|
||||||
case IEEE80211_WORK_ABORT:
|
case IEEE80211_WORK_ABORT:
|
||||||
rma = WORK_ACT_TIMEOUT;
|
rma = WORK_ACT_TIMEOUT;
|
||||||
|
break;
|
||||||
case IEEE80211_WORK_DIRECT_PROBE:
|
case IEEE80211_WORK_DIRECT_PROBE:
|
||||||
rma = ieee80211_direct_probe(wk);
|
rma = ieee80211_direct_probe(wk);
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue