Merge branch 'wireless-next-2.6' of git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-2.6
This commit is contained in:
commit
a124f3bed7
|
@ -545,3 +545,26 @@ Why: udev fully replaces this special file system that only contains CAPI
|
||||||
NCCI TTY device nodes. User space (pppdcapiplugin) works without
|
NCCI TTY device nodes. User space (pppdcapiplugin) works without
|
||||||
noticing the difference.
|
noticing the difference.
|
||||||
Who: Jan Kiszka <jan.kiszka@web.de>
|
Who: Jan Kiszka <jan.kiszka@web.de>
|
||||||
|
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
What: iwlwifi 50XX module parameters
|
||||||
|
When: 2.6.40
|
||||||
|
Why: The "..50" modules parameters were used to configure 5000 series and
|
||||||
|
up devices; different set of module parameters also available for 4965
|
||||||
|
with same functionalities. Consolidate both set into single place
|
||||||
|
in drivers/net/wireless/iwlwifi/iwl-agn.c
|
||||||
|
|
||||||
|
Who: Wey-Yi Guy <wey-yi.w.guy@intel.com>
|
||||||
|
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
What: iwl4965 alias support
|
||||||
|
When: 2.6.40
|
||||||
|
Why: Internal alias support has been present in module-init-tools for some
|
||||||
|
time, the MODULE_ALIAS("iwl4965") boilerplate aliases can be removed
|
||||||
|
with no impact.
|
||||||
|
|
||||||
|
Who: Wey-Yi Guy <wey-yi.w.guy@intel.com>
|
||||||
|
|
||||||
|
----------------------------
|
||||||
|
|
|
@ -71,10 +71,6 @@
|
||||||
|
|
||||||
#include "iwl-eeprom.h"
|
#include "iwl-eeprom.h"
|
||||||
|
|
||||||
/* Time constants */
|
|
||||||
#define SHORT_SLOT_TIME 9
|
|
||||||
#define LONG_SLOT_TIME 20
|
|
||||||
|
|
||||||
/* RSSI to dBm */
|
/* RSSI to dBm */
|
||||||
#define IWL39_RSSI_OFFSET 95
|
#define IWL39_RSSI_OFFSET 95
|
||||||
|
|
||||||
|
@ -230,7 +226,6 @@ struct iwl3945_eeprom {
|
||||||
|
|
||||||
/* 4 DATA + 1 CMD. There are 2 HCCA queues that are not used. */
|
/* 4 DATA + 1 CMD. There are 2 HCCA queues that are not used. */
|
||||||
#define IWL39_NUM_QUEUES 5
|
#define IWL39_NUM_QUEUES 5
|
||||||
#define IWL_NUM_SCAN_RATES (2)
|
|
||||||
|
|
||||||
#define IWL_DEFAULT_TX_RETRY 15
|
#define IWL_DEFAULT_TX_RETRY 15
|
||||||
|
|
||||||
|
|
|
@ -81,26 +81,6 @@
|
||||||
*/
|
*/
|
||||||
#define IWL49_FIRST_AMPDU_QUEUE 7
|
#define IWL49_FIRST_AMPDU_QUEUE 7
|
||||||
|
|
||||||
/* Time constants */
|
|
||||||
#define SHORT_SLOT_TIME 9
|
|
||||||
#define LONG_SLOT_TIME 20
|
|
||||||
|
|
||||||
/* RSSI to dBm */
|
|
||||||
#define IWL49_RSSI_OFFSET 44
|
|
||||||
|
|
||||||
|
|
||||||
/* PCI registers */
|
|
||||||
#define PCI_CFG_RETRY_TIMEOUT 0x041
|
|
||||||
|
|
||||||
/* PCI register values */
|
|
||||||
#define PCI_CFG_LINK_CTRL_VAL_L0S_EN 0x01
|
|
||||||
#define PCI_CFG_LINK_CTRL_VAL_L1_EN 0x02
|
|
||||||
|
|
||||||
#define IWL_NUM_SCAN_RATES (2)
|
|
||||||
|
|
||||||
#define IWL_DEFAULT_TX_RETRY 15
|
|
||||||
|
|
||||||
|
|
||||||
/* Sizes and addresses for instruction and data memory (SRAM) in
|
/* Sizes and addresses for instruction and data memory (SRAM) in
|
||||||
* 4965's embedded processor. Driver access is via HBUS_TARG_MEM_* regs. */
|
* 4965's embedded processor. Driver access is via HBUS_TARG_MEM_* regs. */
|
||||||
#define IWL49_RTC_INST_LOWER_BOUND (0x000000)
|
#define IWL49_RTC_INST_LOWER_BOUND (0x000000)
|
||||||
|
@ -393,10 +373,6 @@ static inline int iwl4965_hw_valid_rtc_data_addr(u32 addr)
|
||||||
* location(s) in command (struct iwl4965_txpowertable_cmd).
|
* location(s) in command (struct iwl4965_txpowertable_cmd).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Limit range of txpower output target to be between these values */
|
|
||||||
#define IWL_TX_POWER_TARGET_POWER_MIN (0) /* 0 dBm = 1 milliwatt */
|
|
||||||
#define IWL_TX_POWER_TARGET_POWER_MAX (16) /* 16 dBm */
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When MIMO is used (2 transmitters operating simultaneously), driver should
|
* When MIMO is used (2 transmitters operating simultaneously), driver should
|
||||||
* limit each transmitter to deliver a max of 3 dB below the regulatory limit
|
* limit each transmitter to deliver a max of 3 dB below the regulatory limit
|
||||||
|
|
|
@ -61,14 +61,6 @@ static int iwl4965_hw_get_temperature(struct iwl_priv *priv);
|
||||||
#define _IWL4965_MODULE_FIRMWARE(api) IWL4965_FW_PRE #api ".ucode"
|
#define _IWL4965_MODULE_FIRMWARE(api) IWL4965_FW_PRE #api ".ucode"
|
||||||
#define IWL4965_MODULE_FIRMWARE(api) _IWL4965_MODULE_FIRMWARE(api)
|
#define IWL4965_MODULE_FIRMWARE(api) _IWL4965_MODULE_FIRMWARE(api)
|
||||||
|
|
||||||
|
|
||||||
/* module parameters */
|
|
||||||
static struct iwl_mod_params iwl4965_mod_params = {
|
|
||||||
.amsdu_size_8K = 1,
|
|
||||||
.restart_fw = 1,
|
|
||||||
/* the rest are 0 by default */
|
|
||||||
};
|
|
||||||
|
|
||||||
/* check contents of special bootstrap uCode SRAM */
|
/* check contents of special bootstrap uCode SRAM */
|
||||||
static int iwl4965_verify_bsm(struct iwl_priv *priv)
|
static int iwl4965_verify_bsm(struct iwl_priv *priv)
|
||||||
{
|
{
|
||||||
|
@ -1620,19 +1612,19 @@ static int iwl4965_is_temp_calib_needed(struct iwl_priv *priv)
|
||||||
|
|
||||||
/* get absolute value */
|
/* get absolute value */
|
||||||
if (temp_diff < 0) {
|
if (temp_diff < 0) {
|
||||||
IWL_DEBUG_POWER(priv, "Getting cooler, delta %d, \n", temp_diff);
|
IWL_DEBUG_POWER(priv, "Getting cooler, delta %d\n", temp_diff);
|
||||||
temp_diff = -temp_diff;
|
temp_diff = -temp_diff;
|
||||||
} else if (temp_diff == 0)
|
} else if (temp_diff == 0)
|
||||||
IWL_DEBUG_POWER(priv, "Same temp, \n");
|
IWL_DEBUG_POWER(priv, "Temperature unchanged\n");
|
||||||
else
|
else
|
||||||
IWL_DEBUG_POWER(priv, "Getting warmer, delta %d, \n", temp_diff);
|
IWL_DEBUG_POWER(priv, "Getting warmer, delta %d\n", temp_diff);
|
||||||
|
|
||||||
if (temp_diff < IWL_TEMPERATURE_THRESHOLD) {
|
if (temp_diff < IWL_TEMPERATURE_THRESHOLD) {
|
||||||
IWL_DEBUG_POWER(priv, "Thermal txpower calib not needed\n");
|
IWL_DEBUG_POWER(priv, " => thermal txpower calib not needed\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
IWL_DEBUG_POWER(priv, "Thermal txpower calib needed\n");
|
IWL_DEBUG_POWER(priv, " => thermal txpower calib needed\n");
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -2094,7 +2086,7 @@ static int iwl4965_calc_rssi(struct iwl_priv *priv,
|
||||||
|
|
||||||
/* dBm = max_rssi dB - agc dB - constant.
|
/* dBm = max_rssi dB - agc dB - constant.
|
||||||
* Higher AGC (higher radio gain) means lower signal. */
|
* Higher AGC (higher radio gain) means lower signal. */
|
||||||
return max_rssi - agc - IWL49_RSSI_OFFSET;
|
return max_rssi - agc - IWLAGN_RSSI_OFFSET;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -2245,7 +2237,7 @@ struct iwl_cfg iwl4965_agn_cfg = {
|
||||||
.ops = &iwl4965_ops,
|
.ops = &iwl4965_ops,
|
||||||
.num_of_queues = IWL49_NUM_QUEUES,
|
.num_of_queues = IWL49_NUM_QUEUES,
|
||||||
.num_of_ampdu_queues = IWL49_NUM_AMPDU_QUEUES,
|
.num_of_ampdu_queues = IWL49_NUM_AMPDU_QUEUES,
|
||||||
.mod_params = &iwl4965_mod_params,
|
.mod_params = &iwlagn_mod_params,
|
||||||
.valid_tx_ant = ANT_AB,
|
.valid_tx_ant = ANT_AB,
|
||||||
.valid_rx_ant = ANT_ABC,
|
.valid_rx_ant = ANT_ABC,
|
||||||
.pll_cfg_val = 0,
|
.pll_cfg_val = 0,
|
||||||
|
@ -2265,22 +2257,3 @@ struct iwl_cfg iwl4965_agn_cfg = {
|
||||||
/* Module firmware */
|
/* Module firmware */
|
||||||
MODULE_FIRMWARE(IWL4965_MODULE_FIRMWARE(IWL4965_UCODE_API_MAX));
|
MODULE_FIRMWARE(IWL4965_MODULE_FIRMWARE(IWL4965_UCODE_API_MAX));
|
||||||
|
|
||||||
module_param_named(antenna, iwl4965_mod_params.antenna, int, S_IRUGO);
|
|
||||||
MODULE_PARM_DESC(antenna, "select antenna (1=Main, 2=Aux, default 0 [both])");
|
|
||||||
module_param_named(swcrypto, iwl4965_mod_params.sw_crypto, int, S_IRUGO);
|
|
||||||
MODULE_PARM_DESC(swcrypto, "using crypto in software (default 0 [hardware])");
|
|
||||||
module_param_named(
|
|
||||||
disable_hw_scan, iwl4965_mod_params.disable_hw_scan, int, S_IRUGO);
|
|
||||||
MODULE_PARM_DESC(disable_hw_scan, "disable hardware scanning (default 0)");
|
|
||||||
|
|
||||||
module_param_named(queues_num, iwl4965_mod_params.num_of_queues, int, S_IRUGO);
|
|
||||||
MODULE_PARM_DESC(queues_num, "number of hw queues.");
|
|
||||||
/* 11n */
|
|
||||||
module_param_named(11n_disable, iwl4965_mod_params.disable_11n, int, S_IRUGO);
|
|
||||||
MODULE_PARM_DESC(11n_disable, "disable 11n functionality");
|
|
||||||
module_param_named(amsdu_size_8K, iwl4965_mod_params.amsdu_size_8K,
|
|
||||||
int, S_IRUGO);
|
|
||||||
MODULE_PARM_DESC(amsdu_size_8K, "enable 8K amsdu size");
|
|
||||||
|
|
||||||
module_param_named(fw_restart4965, iwl4965_mod_params.restart_fw, int, S_IRUGO);
|
|
||||||
MODULE_PARM_DESC(fw_restart4965, "restart firmware in case of error");
|
|
||||||
|
|
|
@ -585,16 +585,3 @@ struct iwl_cfg iwl5150_abg_cfg = {
|
||||||
|
|
||||||
MODULE_FIRMWARE(IWL5000_MODULE_FIRMWARE(IWL5000_UCODE_API_MAX));
|
MODULE_FIRMWARE(IWL5000_MODULE_FIRMWARE(IWL5000_UCODE_API_MAX));
|
||||||
MODULE_FIRMWARE(IWL5150_MODULE_FIRMWARE(IWL5150_UCODE_API_MAX));
|
MODULE_FIRMWARE(IWL5150_MODULE_FIRMWARE(IWL5150_UCODE_API_MAX));
|
||||||
|
|
||||||
module_param_named(swcrypto50, iwlagn_mod_params.sw_crypto, bool, S_IRUGO);
|
|
||||||
MODULE_PARM_DESC(swcrypto50,
|
|
||||||
"using software crypto engine (default 0 [hardware])\n");
|
|
||||||
module_param_named(queues_num50, iwlagn_mod_params.num_of_queues, int, S_IRUGO);
|
|
||||||
MODULE_PARM_DESC(queues_num50, "number of hw queues in 50xx series");
|
|
||||||
module_param_named(11n_disable50, iwlagn_mod_params.disable_11n, int, S_IRUGO);
|
|
||||||
MODULE_PARM_DESC(11n_disable50, "disable 50XX 11n functionality");
|
|
||||||
module_param_named(amsdu_size_8K50, iwlagn_mod_params.amsdu_size_8K,
|
|
||||||
int, S_IRUGO);
|
|
||||||
MODULE_PARM_DESC(amsdu_size_8K50, "enable 8K amsdu size in 50XX series");
|
|
||||||
module_param_named(fw_restart50, iwlagn_mod_params.restart_fw, int, S_IRUGO);
|
|
||||||
MODULE_PARM_DESC(fw_restart50, "restart firmware in case of error");
|
|
||||||
|
|
|
@ -254,7 +254,7 @@ static int iwlagn_calc_rssi(struct iwl_priv *priv,
|
||||||
|
|
||||||
/* dBm = max_rssi dB - agc dB - constant.
|
/* dBm = max_rssi dB - agc dB - constant.
|
||||||
* Higher AGC (higher radio gain) means lower signal. */
|
* Higher AGC (higher radio gain) means lower signal. */
|
||||||
return max_rssi - agc - IWL49_RSSI_OFFSET;
|
return max_rssi - agc - IWLAGN_RSSI_OFFSET;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct iwl_hcmd_ops iwlagn_hcmd = {
|
struct iwl_hcmd_ops iwlagn_hcmd = {
|
||||||
|
|
|
@ -78,6 +78,22 @@
|
||||||
#define IWLAGN_RTC_DATA_SIZE (IWLAGN_RTC_DATA_UPPER_BOUND - \
|
#define IWLAGN_RTC_DATA_SIZE (IWLAGN_RTC_DATA_UPPER_BOUND - \
|
||||||
IWLAGN_RTC_DATA_LOWER_BOUND)
|
IWLAGN_RTC_DATA_LOWER_BOUND)
|
||||||
|
|
||||||
|
/* RSSI to dBm */
|
||||||
|
#define IWLAGN_RSSI_OFFSET 44
|
||||||
|
|
||||||
|
/* PCI registers */
|
||||||
|
#define PCI_CFG_RETRY_TIMEOUT 0x041
|
||||||
|
|
||||||
|
/* PCI register values */
|
||||||
|
#define PCI_CFG_LINK_CTRL_VAL_L0S_EN 0x01
|
||||||
|
#define PCI_CFG_LINK_CTRL_VAL_L1_EN 0x02
|
||||||
|
|
||||||
|
#define IWLAGN_DEFAULT_TX_RETRY 15
|
||||||
|
|
||||||
|
/* Limit range of txpower output target to be between these values */
|
||||||
|
#define IWLAGN_TX_POWER_TARGET_POWER_MIN (0) /* 0 dBm: 1 milliwatt */
|
||||||
|
#define IWLAGN_TX_POWER_TARGET_POWER_MAX (16) /* 16 dBm */
|
||||||
|
|
||||||
/* EEPROM */
|
/* EEPROM */
|
||||||
#define IWLAGN_EEPROM_IMG_SIZE 2048
|
#define IWLAGN_EEPROM_IMG_SIZE 2048
|
||||||
|
|
||||||
|
|
|
@ -403,6 +403,9 @@ void iwlagn_rx_queue_reset(struct iwl_priv *priv, struct iwl_rx_queue *rxq)
|
||||||
list_add_tail(&rxq->pool[i].list, &rxq->rx_used);
|
list_add_tail(&rxq->pool[i].list, &rxq->rx_used);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < RX_QUEUE_SIZE; i++)
|
||||||
|
rxq->queue[i] = NULL;
|
||||||
|
|
||||||
/* Set us so that we have processed and used all buffers, but have
|
/* Set us so that we have processed and used all buffers, but have
|
||||||
* not restocked the Rx queue with fresh buffers */
|
* not restocked the Rx queue with fresh buffers */
|
||||||
rxq->read = rxq->write = 0;
|
rxq->read = rxq->write = 0;
|
||||||
|
@ -538,11 +541,13 @@ void iwlagn_rx_queue_restock(struct iwl_priv *priv)
|
||||||
struct list_head *element;
|
struct list_head *element;
|
||||||
struct iwl_rx_mem_buffer *rxb;
|
struct iwl_rx_mem_buffer *rxb;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
int write;
|
|
||||||
|
|
||||||
spin_lock_irqsave(&rxq->lock, flags);
|
spin_lock_irqsave(&rxq->lock, flags);
|
||||||
write = rxq->write & ~0x7;
|
|
||||||
while ((iwl_rx_queue_space(rxq) > 0) && (rxq->free_count)) {
|
while ((iwl_rx_queue_space(rxq) > 0) && (rxq->free_count)) {
|
||||||
|
/* The overwritten rxb must be a used one */
|
||||||
|
rxb = rxq->queue[rxq->write];
|
||||||
|
BUG_ON(rxb && rxb->page);
|
||||||
|
|
||||||
/* Get next free Rx buffer, remove from free list */
|
/* Get next free Rx buffer, remove from free list */
|
||||||
element = rxq->rx_free.next;
|
element = rxq->rx_free.next;
|
||||||
rxb = list_entry(element, struct iwl_rx_mem_buffer, list);
|
rxb = list_entry(element, struct iwl_rx_mem_buffer, list);
|
||||||
|
@ -635,6 +640,7 @@ void iwlagn_rx_allocate(struct iwl_priv *priv, gfp_t priority)
|
||||||
|
|
||||||
spin_unlock_irqrestore(&rxq->lock, flags);
|
spin_unlock_irqrestore(&rxq->lock, flags);
|
||||||
|
|
||||||
|
BUG_ON(rxb->page);
|
||||||
rxb->page = page;
|
rxb->page = page;
|
||||||
/* Get physical address of the RB */
|
/* Get physical address of the RB */
|
||||||
rxb->page_dma = pci_map_page(priv->pci_dev, page, 0,
|
rxb->page_dma = pci_map_page(priv->pci_dev, page, 0,
|
||||||
|
|
|
@ -404,7 +404,7 @@ static void iwlagn_tx_cmd_build_rate(struct iwl_priv *priv,
|
||||||
if (ieee80211_is_probe_resp(fc))
|
if (ieee80211_is_probe_resp(fc))
|
||||||
data_retry_limit = 3;
|
data_retry_limit = 3;
|
||||||
else
|
else
|
||||||
data_retry_limit = IWL_DEFAULT_TX_RETRY;
|
data_retry_limit = IWLAGN_DEFAULT_TX_RETRY;
|
||||||
tx_cmd->data_retry_limit = data_retry_limit;
|
tx_cmd->data_retry_limit = data_retry_limit;
|
||||||
|
|
||||||
/* Set retry limit on RTS packets */
|
/* Set retry limit on RTS packets */
|
||||||
|
|
|
@ -83,13 +83,6 @@ MODULE_AUTHOR(DRV_COPYRIGHT " " DRV_AUTHOR);
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
MODULE_ALIAS("iwl4965");
|
MODULE_ALIAS("iwl4965");
|
||||||
|
|
||||||
/*************** STATION TABLE MANAGEMENT ****
|
|
||||||
* mac80211 should be examined to determine if sta_info is duplicating
|
|
||||||
* the functionality provided here
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**************************************************************/
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* iwl_commit_rxon - commit staging_rxon to hardware
|
* iwl_commit_rxon - commit staging_rxon to hardware
|
||||||
*
|
*
|
||||||
|
@ -3375,7 +3368,7 @@ static int iwl_init_drv(struct iwl_priv *priv)
|
||||||
/* Set the tx_power_user_lmt to the lowest power level
|
/* Set the tx_power_user_lmt to the lowest power level
|
||||||
* this value will get overwritten by channel max power avg
|
* this value will get overwritten by channel max power avg
|
||||||
* from eeprom */
|
* from eeprom */
|
||||||
priv->tx_power_user_lmt = IWL_TX_POWER_TARGET_POWER_MIN;
|
priv->tx_power_user_lmt = IWLAGN_TX_POWER_TARGET_POWER_MIN;
|
||||||
|
|
||||||
ret = iwl_init_channel_map(priv);
|
ret = iwl_init_channel_map(priv);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
@ -3921,3 +3914,33 @@ module_param_named(debug, iwl_debug_level, uint, S_IRUGO | S_IWUSR);
|
||||||
MODULE_PARM_DESC(debug, "debug output mask");
|
MODULE_PARM_DESC(debug, "debug output mask");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
module_param_named(swcrypto50, iwlagn_mod_params.sw_crypto, bool, S_IRUGO);
|
||||||
|
MODULE_PARM_DESC(swcrypto50,
|
||||||
|
"using crypto in software (default 0 [hardware]) (deprecated)");
|
||||||
|
module_param_named(swcrypto, iwlagn_mod_params.sw_crypto, int, S_IRUGO);
|
||||||
|
MODULE_PARM_DESC(swcrypto, "using crypto in software (default 0 [hardware])");
|
||||||
|
module_param_named(queues_num50,
|
||||||
|
iwlagn_mod_params.num_of_queues, int, S_IRUGO);
|
||||||
|
MODULE_PARM_DESC(queues_num50,
|
||||||
|
"number of hw queues in 50xx series (deprecated)");
|
||||||
|
module_param_named(queues_num, iwlagn_mod_params.num_of_queues, int, S_IRUGO);
|
||||||
|
MODULE_PARM_DESC(queues_num, "number of hw queues.");
|
||||||
|
module_param_named(11n_disable50, iwlagn_mod_params.disable_11n, int, S_IRUGO);
|
||||||
|
MODULE_PARM_DESC(11n_disable50, "disable 50XX 11n functionality (deprecated)");
|
||||||
|
module_param_named(11n_disable, iwlagn_mod_params.disable_11n, int, S_IRUGO);
|
||||||
|
MODULE_PARM_DESC(11n_disable, "disable 11n functionality");
|
||||||
|
module_param_named(amsdu_size_8K50, iwlagn_mod_params.amsdu_size_8K,
|
||||||
|
int, S_IRUGO);
|
||||||
|
MODULE_PARM_DESC(amsdu_size_8K50,
|
||||||
|
"enable 8K amsdu size in 50XX series (deprecated)");
|
||||||
|
module_param_named(amsdu_size_8K, iwlagn_mod_params.amsdu_size_8K,
|
||||||
|
int, S_IRUGO);
|
||||||
|
MODULE_PARM_DESC(amsdu_size_8K, "enable 8K amsdu size");
|
||||||
|
module_param_named(fw_restart50, iwlagn_mod_params.restart_fw, int, S_IRUGO);
|
||||||
|
MODULE_PARM_DESC(fw_restart50,
|
||||||
|
"restart firmware in case of error (deprecated)");
|
||||||
|
module_param_named(fw_restart, iwlagn_mod_params.restart_fw, int, S_IRUGO);
|
||||||
|
MODULE_PARM_DESC(fw_restart, "restart firmware in case of error");
|
||||||
|
module_param_named(
|
||||||
|
disable_hw_scan, iwlagn_mod_params.disable_hw_scan, int, S_IRUGO);
|
||||||
|
MODULE_PARM_DESC(disable_hw_scan, "disable hardware scanning (default 0)");
|
||||||
|
|
|
@ -1376,10 +1376,11 @@ int iwl_set_tx_power(struct iwl_priv *priv, s8 tx_power, bool force)
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
s8 prev_tx_power = priv->tx_power_user_lmt;
|
s8 prev_tx_power = priv->tx_power_user_lmt;
|
||||||
|
|
||||||
if (tx_power < IWL_TX_POWER_TARGET_POWER_MIN) {
|
if (tx_power < IWLAGN_TX_POWER_TARGET_POWER_MIN) {
|
||||||
IWL_WARN(priv, "Requested user TXPOWER %d below lower limit %d.\n",
|
IWL_WARN(priv,
|
||||||
|
"Requested user TXPOWER %d below lower limit %d.\n",
|
||||||
tx_power,
|
tx_power,
|
||||||
IWL_TX_POWER_TARGET_POWER_MIN);
|
IWLAGN_TX_POWER_TARGET_POWER_MIN);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,6 +43,7 @@
|
||||||
#include "iwl-debug.h"
|
#include "iwl-debug.h"
|
||||||
#include "iwl-4965-hw.h"
|
#include "iwl-4965-hw.h"
|
||||||
#include "iwl-3945-hw.h"
|
#include "iwl-3945-hw.h"
|
||||||
|
#include "iwl-agn-hw.h"
|
||||||
#include "iwl-led.h"
|
#include "iwl-led.h"
|
||||||
#include "iwl-power.h"
|
#include "iwl-power.h"
|
||||||
#include "iwl-agn-rs.h"
|
#include "iwl-agn-rs.h"
|
||||||
|
|
Loading…
Reference in New Issue