]> err.no Git - linux-2.6/commitdiff
[PATCH] sky2: interrupt coalescing tuning
authorStephen Hemminger <shemminger@osdl.org>
Fri, 9 Dec 2005 19:35:06 +0000 (11:35 -0800)
committerJeff Garzik <jgarzik@pobox.com>
Mon, 12 Dec 2005 20:27:21 +0000 (15:27 -0500)
Adjust interrupt deferral values for better performance and avoid
starvation issues under stress.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
drivers/net/sky2.c

index af9739c1ef5f51f3c542fb522f639e934ecd59f4..0b82dbba16cfb16284157186270515dcdec1932d 100644 (file)
@@ -2115,9 +2115,8 @@ static int sky2_reset(struct sky2_hw *hw)
 
        sky2_write8(hw, B0_Y2LED, LED_STAT_ON);
 
-       /* Turn on descriptor polling (every 75us) */
-       sky2_write32(hw, B28_DPT_INI, sky2_us2clk(hw, 75));
-       sky2_write8(hw, B28_DPT_CTRL, DPT_START);
+       /* Turn off descriptor polling */
+       sky2_write32(hw, B28_DPT_CTRL, DPT_STOP);
 
        /* Turn off receive timestamp */
        sky2_write8(hw, GMAC_TI_ST_CTRL, GMT_ST_STOP);
@@ -2162,8 +2161,6 @@ static int sky2_reset(struct sky2_hw *hw)
        /* Set the list last index */
        sky2_write16(hw, STAT_LAST_IDX, STATUS_RING_SIZE - 1);
 
-       sky2_write32(hw, STAT_TX_TIMER_INI, sky2_us2clk(hw, 1000));
-
        /* These status setup values are copied from SysKonnect's driver */
        if (is_ec_a1(hw)) {
                /* WA for dev. #4.3 */
@@ -2174,21 +2171,20 @@ static int sky2_reset(struct sky2_hw *hw)
 
                /* set Status-FIFO ISR watermark */
                sky2_write8(hw, STAT_FIFO_ISR_WM, 0x07);        /* WA for dev. #4.18 */
-
+               sky2_write32(hw, STAT_TX_TIMER_INI, sky2_us2clk(hw, 10000));
        } else {
-               sky2_write16(hw, STAT_TX_IDX_TH, 0x000a);
-
-               /* set Status-FIFO watermark */
-               sky2_write8(hw, STAT_FIFO_WM, 0x10);
+               sky2_write16(hw, STAT_TX_IDX_TH, 10);
+               sky2_write8(hw, STAT_FIFO_WM, 16);
 
                /* set Status-FIFO ISR watermark */
                if (hw->chip_id == CHIP_ID_YUKON_XL && hw->chip_rev == 0)
-                       sky2_write8(hw, STAT_FIFO_ISR_WM, 0x10);
-
-               else            /* WA dev 4.109 */
-                       sky2_write8(hw, STAT_FIFO_ISR_WM, 0x04);
+                       sky2_write8(hw, STAT_FIFO_ISR_WM, 4);
+               else
+                       sky2_write8(hw, STAT_FIFO_ISR_WM, 16);
 
-               sky2_write32(hw, STAT_ISR_TIMER_INI, 0x0190);
+               sky2_write32(hw, STAT_TX_TIMER_INI, sky2_us2clk(hw, 1000));
+               sky2_write32(hw, STAT_LEV_TIMER_INI, sky2_us2clk(hw, 100));
+               sky2_write32(hw, STAT_ISR_TIMER_INI, sky2_us2clk(hw, 20));
        }
 
        /* enable status unit */