iwlwifi: set interrupt coalescing timer range and default
authorWey-Yi Guy <wey-yi.w.guy@intel.com>
Fri, 15 Jan 2010 21:43:37 +0000 (13:43 -0800)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 19 Jan 2010 21:25:11 +0000 (16:25 -0500)
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>
drivers/net/wireless/iwlwifi/iwl-core.c
drivers/net/wireless/iwlwifi/iwl-dev.h
drivers/net/wireless/iwlwifi/iwl-rx.c

index 5b56307a3812f6bc92a66935b2e427c0404bd5ac..29eb7b4dc7d459a8b336fe016e1c7462958ac23a 100644 (file)
@@ -257,8 +257,8 @@ int iwl_hw_nic_init(struct iwl_priv *priv)
        spin_lock_irqsave(&priv->lock, flags);
        priv->cfg->ops->lib->apm_ops.init(priv);
 
-       /* Set interrupt coalescing timer to 512 usecs */
-       iwl_write8(priv, CSR_INT_COALESCING, 512 / 32);
+       /* Set interrupt coalescing calibration timer to default (512 usecs) */
+       iwl_write8(priv, CSR_INT_COALESCING, IWL_HOST_INT_CALIB_TIMEOUT_DEF);
 
        spin_unlock_irqrestore(&priv->lock, flags);
 
index 63e45cd3f6346fc85654b34d97aca64bd69d3737..251eb737860c3168c0be3e151014ebd8992a50df 100644 (file)
@@ -1011,6 +1011,21 @@ struct iwl_event_log {
        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 {
 
        /* ieee device used by generic ieee processing code */
index 5bbe5f1f749c2d1e494a92ab5a67a9e10150fb13..07bdba93c179ef63d015f60aa45ad4456506761a 100644 (file)
@@ -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)|
                           (rfdnlog << FH_RCSR_RX_CONFIG_RBDCB_SIZE_POS));
 
-       /* Set interrupt coalescing timer to 64 x 32 = 2048 usecs */
-       iwl_write8(priv, CSR_INT_COALESCING, 0x40);
+       /* Set interrupt coalescing timer to default (2048 usecs) */
+       iwl_write8(priv, CSR_INT_COALESCING, IWL_HOST_INT_TIMEOUT_DEF);
 
        return 0;
 }