Commit 69634ee7 authored by Stephen Hemminger's avatar Stephen Hemminger Committed by Jeff Garzik

[PATCH] sky2: interrupt coalescing tuning

Adjust interrupt deferral values for better performance and avoid
starvation issues under stress.
Signed-off-by: default avatarStephen Hemminger <shemminger@osdl.org>
Signed-off-by: default avatarJeff Garzik <jgarzik@pobox.com>
parent 3e4b32e1
...@@ -2115,9 +2115,8 @@ static int sky2_reset(struct sky2_hw *hw) ...@@ -2115,9 +2115,8 @@ static int sky2_reset(struct sky2_hw *hw)
sky2_write8(hw, B0_Y2LED, LED_STAT_ON); sky2_write8(hw, B0_Y2LED, LED_STAT_ON);
/* Turn on descriptor polling (every 75us) */ /* Turn off descriptor polling */
sky2_write32(hw, B28_DPT_INI, sky2_us2clk(hw, 75)); sky2_write32(hw, B28_DPT_CTRL, DPT_STOP);
sky2_write8(hw, B28_DPT_CTRL, DPT_START);
/* Turn off receive timestamp */ /* Turn off receive timestamp */
sky2_write8(hw, GMAC_TI_ST_CTRL, GMT_ST_STOP); sky2_write8(hw, GMAC_TI_ST_CTRL, GMT_ST_STOP);
...@@ -2162,8 +2161,6 @@ static int sky2_reset(struct sky2_hw *hw) ...@@ -2162,8 +2161,6 @@ static int sky2_reset(struct sky2_hw *hw)
/* Set the list last index */ /* Set the list last index */
sky2_write16(hw, STAT_LAST_IDX, STATUS_RING_SIZE - 1); 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 */ /* These status setup values are copied from SysKonnect's driver */
if (is_ec_a1(hw)) { if (is_ec_a1(hw)) {
/* WA for dev. #4.3 */ /* WA for dev. #4.3 */
...@@ -2174,21 +2171,20 @@ static int sky2_reset(struct sky2_hw *hw) ...@@ -2174,21 +2171,20 @@ static int sky2_reset(struct sky2_hw *hw)
/* set Status-FIFO ISR watermark */ /* set Status-FIFO ISR watermark */
sky2_write8(hw, STAT_FIFO_ISR_WM, 0x07); /* WA for dev. #4.18 */ 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 { } else {
sky2_write16(hw, STAT_TX_IDX_TH, 0x000a); sky2_write16(hw, STAT_TX_IDX_TH, 10);
sky2_write8(hw, STAT_FIFO_WM, 16);
/* set Status-FIFO watermark */
sky2_write8(hw, STAT_FIFO_WM, 0x10);
/* set Status-FIFO ISR watermark */ /* set Status-FIFO ISR watermark */
if (hw->chip_id == CHIP_ID_YUKON_XL && hw->chip_rev == 0) if (hw->chip_id == CHIP_ID_YUKON_XL && hw->chip_rev == 0)
sky2_write8(hw, STAT_FIFO_ISR_WM, 0x10); sky2_write8(hw, STAT_FIFO_ISR_WM, 4);
else
else /* WA dev 4.109 */ sky2_write8(hw, STAT_FIFO_ISR_WM, 16);
sky2_write8(hw, STAT_FIFO_ISR_WM, 0x04);
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 */ /* enable status unit */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment