iwlwifi: set interrupt coalescing timer range and default
For interrupt coalescing timer, the CSR_INT_COALESCING is an 8 bit register in 32-usec unit, the range can go from 0x00 - 0xFF. set the range and default timeout value for both calibration mode and operation mode. Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: Reinette Chatre <reinette.chatre@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
937c397eb6
commit
2be76703a3
3 changed files with 19 additions and 4 deletions
|
@ -257,8 +257,8 @@ int iwl_hw_nic_init(struct iwl_priv *priv)
|
||||||
spin_lock_irqsave(&priv->lock, flags);
|
spin_lock_irqsave(&priv->lock, flags);
|
||||||
priv->cfg->ops->lib->apm_ops.init(priv);
|
priv->cfg->ops->lib->apm_ops.init(priv);
|
||||||
|
|
||||||
/* Set interrupt coalescing timer to 512 usecs */
|
/* Set interrupt coalescing calibration timer to default (512 usecs) */
|
||||||
iwl_write8(priv, CSR_INT_COALESCING, 512 / 32);
|
iwl_write8(priv, CSR_INT_COALESCING, IWL_HOST_INT_CALIB_TIMEOUT_DEF);
|
||||||
|
|
||||||
spin_unlock_irqrestore(&priv->lock, flags);
|
spin_unlock_irqrestore(&priv->lock, flags);
|
||||||
|
|
||||||
|
|
|
@ -1011,6 +1011,21 @@ struct iwl_event_log {
|
||||||
int wraps_more_count;
|
int wraps_more_count;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* host interrupt timeout value
|
||||||
|
* used with setting interrupt coalescing timer
|
||||||
|
* the CSR_INT_COALESCING is an 8 bit register in 32-usec unit
|
||||||
|
*
|
||||||
|
* default interrupt coalescing timer is 64 x 32 = 2048 usecs
|
||||||
|
* default interrupt coalescing calibration timer is 16 x 32 = 512 usecs
|
||||||
|
*/
|
||||||
|
#define IWL_HOST_INT_TIMEOUT_MAX (0xFF)
|
||||||
|
#define IWL_HOST_INT_TIMEOUT_DEF (0x40)
|
||||||
|
#define IWL_HOST_INT_TIMEOUT_MIN (0x0)
|
||||||
|
#define IWL_HOST_INT_CALIB_TIMEOUT_MAX (0xFF)
|
||||||
|
#define IWL_HOST_INT_CALIB_TIMEOUT_DEF (0x10)
|
||||||
|
#define IWL_HOST_INT_CALIB_TIMEOUT_MIN (0x0)
|
||||||
|
|
||||||
struct iwl_priv {
|
struct iwl_priv {
|
||||||
|
|
||||||
/* ieee device used by generic ieee processing code */
|
/* ieee device used by generic ieee processing code */
|
||||||
|
|
|
@ -473,8 +473,8 @@ int iwl_rx_init(struct iwl_priv *priv, struct iwl_rx_queue *rxq)
|
||||||
(rb_timeout << FH_RCSR_RX_CONFIG_REG_IRQ_RBTH_POS)|
|
(rb_timeout << FH_RCSR_RX_CONFIG_REG_IRQ_RBTH_POS)|
|
||||||
(rfdnlog << FH_RCSR_RX_CONFIG_RBDCB_SIZE_POS));
|
(rfdnlog << FH_RCSR_RX_CONFIG_RBDCB_SIZE_POS));
|
||||||
|
|
||||||
/* Set interrupt coalescing timer to 64 x 32 = 2048 usecs */
|
/* Set interrupt coalescing timer to default (2048 usecs) */
|
||||||
iwl_write8(priv, CSR_INT_COALESCING, 0x40);
|
iwl_write8(priv, CSR_INT_COALESCING, IWL_HOST_INT_TIMEOUT_DEF);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue