iwlwifi: define PAN queues/FIFOs

PAN capable microcode has a different
queue assignment (not just more queues
for PAN) due to the way multicast is
handled for AP mode.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
This commit is contained in:
Johannes Berg 2010-08-23 10:46:34 +02:00 committed by Wey-Yi Guy
parent 13bb9483e1
commit 751ca305d0
3 changed files with 22 additions and 8 deletions

View File

@ -57,11 +57,11 @@ static const s8 iwlagn_ipan_queue_to_tx_fifo[] = {
IWL_TX_FIFO_VI, IWL_TX_FIFO_VI,
IWL_TX_FIFO_BE, IWL_TX_FIFO_BE,
IWL_TX_FIFO_BK, IWL_TX_FIFO_BK,
IWL_TX_FIFO_UNUSED, /* FIXME */ IWL_TX_FIFO_BK_IPAN,
IWL_TX_FIFO_UNUSED, /* FIXME */ IWL_TX_FIFO_BE_IPAN,
IWL_TX_FIFO_UNUSED, /* FIXME */ IWL_TX_FIFO_VI_IPAN,
IWL_TX_FIFO_UNUSED, /* FIXME */ IWL_TX_FIFO_VO_IPAN,
IWL_TX_FIFO_UNUSED, /* FIXME */ IWL_TX_FIFO_BE_IPAN,
IWLAGN_CMD_FIFO_NUM, IWLAGN_CMD_FIFO_NUM,
}; };

View File

@ -3012,7 +3012,10 @@ static int __iwl_up(struct iwl_priv *priv)
iwl_write32(priv, CSR_INT, 0xFFFFFFFF); iwl_write32(priv, CSR_INT, 0xFFFFFFFF);
/* must be initialised before iwl_hw_nic_init */ /* must be initialised before iwl_hw_nic_init */
priv->cmd_queue = IWL_DEFAULT_CMD_QUEUE_NUM; if (priv->valid_contexts != BIT(IWL_RXON_CTX_BSS))
priv->cmd_queue = IWL_IPAN_CMD_QUEUE_NUM;
else
priv->cmd_queue = IWL_DEFAULT_CMD_QUEUE_NUM;
ret = iwlagn_hw_nic_init(priv); ret = iwlagn_hw_nic_init(priv);
if (ret) { if (ret) {

View File

@ -253,10 +253,14 @@ struct iwl_channel_info {
struct iwl3945_scan_power_info scan_pwr_info[IWL_NUM_SCAN_RATES]; struct iwl3945_scan_power_info scan_pwr_info[IWL_NUM_SCAN_RATES];
}; };
#define IWL_TX_FIFO_BK 0 #define IWL_TX_FIFO_BK 0 /* shared */
#define IWL_TX_FIFO_BE 1 #define IWL_TX_FIFO_BE 1
#define IWL_TX_FIFO_VI 2 #define IWL_TX_FIFO_VI 2 /* shared */
#define IWL_TX_FIFO_VO 3 #define IWL_TX_FIFO_VO 3
#define IWL_TX_FIFO_BK_IPAN IWL_TX_FIFO_BK
#define IWL_TX_FIFO_BE_IPAN 4
#define IWL_TX_FIFO_VI_IPAN IWL_TX_FIFO_VI
#define IWL_TX_FIFO_VO_IPAN 5
#define IWL_TX_FIFO_UNUSED -1 #define IWL_TX_FIFO_UNUSED -1
/* Minimum number of queues. MAX_NUM is defined in hw specific files. /* Minimum number of queues. MAX_NUM is defined in hw specific files.
@ -270,6 +274,13 @@ struct iwl_channel_info {
#define IWL_DEFAULT_CMD_QUEUE_NUM 4 #define IWL_DEFAULT_CMD_QUEUE_NUM 4
#define IWL_IPAN_CMD_QUEUE_NUM 9 #define IWL_IPAN_CMD_QUEUE_NUM 9
/*
* This queue number is required for proper operation
* because the ucode will stop/start the scheduler as
* required.
*/
#define IWL_IPAN_MCAST_QUEUE 8
/* Power management (not Tx power) structures */ /* Power management (not Tx power) structures */
enum iwl_pwr_src { enum iwl_pwr_src {