aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/vxge
diff options
context:
space:
mode:
authorJon Mason <jon.mason@exar.com>2010-12-10 09:03:01 -0500
committerDavid S. Miller <davem@davemloft.net>2010-12-10 19:08:24 -0500
commitb55e7b153f698bb027102759388d0c09542f68bd (patch)
tree94f67280040021547e1faad03a26c8251fb6a83f /drivers/net/vxge
parent9c1638871671721e8f3693a0dfbb0e2e05b08742 (diff)
vxge: independent interrupt moderation
Configure the workload clock register and TIM register for independent interrupt moderation based on the individual vpath utilization instead of common link utilization. This greatly improves latency. Signed-off-by: Jon Mason <jon.mason@exar.com> Signed-off-by: Ram Vepa <ram.vepa@exar.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/vxge')
-rw-r--r--drivers/net/vxge/vxge-config.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/net/vxge/vxge-config.c b/drivers/net/vxge/vxge-config.c
index 1169aa387cab..01c05f53e2f9 100644
--- a/drivers/net/vxge/vxge-config.c
+++ b/drivers/net/vxge/vxge-config.c
@@ -4422,8 +4422,7 @@ __vxge_hw_vpath_tim_configure(struct __vxge_hw_device *hldev, u32 vp_id)
4422 4422
4423 if (config->tti.util_sel != VXGE_HW_USE_FLASH_DEFAULT) { 4423 if (config->tti.util_sel != VXGE_HW_USE_FLASH_DEFAULT) {
4424 val64 &= ~VXGE_HW_TIM_CFG3_INT_NUM_UTIL_SEL(0x3f); 4424 val64 &= ~VXGE_HW_TIM_CFG3_INT_NUM_UTIL_SEL(0x3f);
4425 val64 |= VXGE_HW_TIM_CFG3_INT_NUM_UTIL_SEL( 4425 val64 |= VXGE_HW_TIM_CFG3_INT_NUM_UTIL_SEL(vp_id);
4426 config->tti.util_sel);
4427 } 4426 }
4428 4427
4429 if (config->tti.ltimer_val != VXGE_HW_USE_FLASH_DEFAULT) { 4428 if (config->tti.ltimer_val != VXGE_HW_USE_FLASH_DEFAULT) {
@@ -4527,8 +4526,7 @@ __vxge_hw_vpath_tim_configure(struct __vxge_hw_device *hldev, u32 vp_id)
4527 4526
4528 if (config->rti.util_sel != VXGE_HW_USE_FLASH_DEFAULT) { 4527 if (config->rti.util_sel != VXGE_HW_USE_FLASH_DEFAULT) {
4529 val64 &= ~VXGE_HW_TIM_CFG3_INT_NUM_UTIL_SEL(0x3f); 4528 val64 &= ~VXGE_HW_TIM_CFG3_INT_NUM_UTIL_SEL(0x3f);
4530 val64 |= VXGE_HW_TIM_CFG3_INT_NUM_UTIL_SEL( 4529 val64 |= VXGE_HW_TIM_CFG3_INT_NUM_UTIL_SEL(vp_id);
4531 config->rti.util_sel);
4532 } 4530 }
4533 4531
4534 if (config->rti.ltimer_val != VXGE_HW_USE_FLASH_DEFAULT) { 4532 if (config->rti.ltimer_val != VXGE_HW_USE_FLASH_DEFAULT) {
@@ -4549,6 +4547,11 @@ __vxge_hw_vpath_tim_configure(struct __vxge_hw_device *hldev, u32 vp_id)
4549 writeq(val64, &vp_reg->tim_cfg2_int_num[VXGE_HW_VPATH_INTR_BMAP]); 4547 writeq(val64, &vp_reg->tim_cfg2_int_num[VXGE_HW_VPATH_INTR_BMAP]);
4550 writeq(val64, &vp_reg->tim_cfg3_int_num[VXGE_HW_VPATH_INTR_BMAP]); 4548 writeq(val64, &vp_reg->tim_cfg3_int_num[VXGE_HW_VPATH_INTR_BMAP]);
4551 4549
4550 val64 = VXGE_HW_TIM_WRKLD_CLC_WRKLD_EVAL_PRD(150);
4551 val64 |= VXGE_HW_TIM_WRKLD_CLC_WRKLD_EVAL_DIV(0);
4552 val64 |= VXGE_HW_TIM_WRKLD_CLC_CNT_RX_TX(3);
4553 writeq(val64, &vp_reg->tim_wrkld_clc);
4554
4552 return status; 4555 return status;
4553} 4556}
4554 4557