diff options
Diffstat (limited to 'drivers/net/vxge/vxge-config.c')
-rw-r--r-- | drivers/net/vxge/vxge-config.c | 30 |
1 files changed, 10 insertions, 20 deletions
diff --git a/drivers/net/vxge/vxge-config.c b/drivers/net/vxge/vxge-config.c index da35562ba48c..77097e383cf4 100644 --- a/drivers/net/vxge/vxge-config.c +++ b/drivers/net/vxge/vxge-config.c | |||
@@ -2868,6 +2868,8 @@ __vxge_hw_ring_create(struct __vxge_hw_vpath_handle *vp, | |||
2868 | ring->rxd_init = attr->rxd_init; | 2868 | ring->rxd_init = attr->rxd_init; |
2869 | ring->rxd_term = attr->rxd_term; | 2869 | ring->rxd_term = attr->rxd_term; |
2870 | ring->buffer_mode = config->buffer_mode; | 2870 | ring->buffer_mode = config->buffer_mode; |
2871 | ring->tim_rti_cfg1_saved = vp->vpath->tim_rti_cfg1_saved; | ||
2872 | ring->tim_rti_cfg3_saved = vp->vpath->tim_rti_cfg3_saved; | ||
2871 | ring->rxds_limit = config->rxds_limit; | 2873 | ring->rxds_limit = config->rxds_limit; |
2872 | 2874 | ||
2873 | ring->rxd_size = vxge_hw_ring_rxd_size_get(config->buffer_mode); | 2875 | ring->rxd_size = vxge_hw_ring_rxd_size_get(config->buffer_mode); |
@@ -3511,6 +3513,8 @@ __vxge_hw_fifo_create(struct __vxge_hw_vpath_handle *vp, | |||
3511 | 3513 | ||
3512 | /* apply "interrupts per txdl" attribute */ | 3514 | /* apply "interrupts per txdl" attribute */ |
3513 | fifo->interrupt_type = VXGE_HW_FIFO_TXD_INT_TYPE_UTILZ; | 3515 | fifo->interrupt_type = VXGE_HW_FIFO_TXD_INT_TYPE_UTILZ; |
3516 | fifo->tim_tti_cfg1_saved = vpath->tim_tti_cfg1_saved; | ||
3517 | fifo->tim_tti_cfg3_saved = vpath->tim_tti_cfg3_saved; | ||
3514 | 3518 | ||
3515 | if (fifo->config->intr) | 3519 | if (fifo->config->intr) |
3516 | fifo->interrupt_type = VXGE_HW_FIFO_TXD_INT_TYPE_PER_LIST; | 3520 | fifo->interrupt_type = VXGE_HW_FIFO_TXD_INT_TYPE_PER_LIST; |
@@ -4377,6 +4381,8 @@ __vxge_hw_vpath_tim_configure(struct __vxge_hw_device *hldev, u32 vp_id) | |||
4377 | } | 4381 | } |
4378 | 4382 | ||
4379 | writeq(val64, &vp_reg->tim_cfg1_int_num[VXGE_HW_VPATH_INTR_TX]); | 4383 | writeq(val64, &vp_reg->tim_cfg1_int_num[VXGE_HW_VPATH_INTR_TX]); |
4384 | vpath->tim_tti_cfg1_saved = val64; | ||
4385 | |||
4380 | val64 = readq(&vp_reg->tim_cfg2_int_num[VXGE_HW_VPATH_INTR_TX]); | 4386 | val64 = readq(&vp_reg->tim_cfg2_int_num[VXGE_HW_VPATH_INTR_TX]); |
4381 | 4387 | ||
4382 | if (config->tti.uec_a != VXGE_HW_USE_FLASH_DEFAULT) { | 4388 | if (config->tti.uec_a != VXGE_HW_USE_FLASH_DEFAULT) { |
@@ -4433,6 +4439,7 @@ __vxge_hw_vpath_tim_configure(struct __vxge_hw_device *hldev, u32 vp_id) | |||
4433 | } | 4439 | } |
4434 | 4440 | ||
4435 | writeq(val64, &vp_reg->tim_cfg3_int_num[VXGE_HW_VPATH_INTR_TX]); | 4441 | writeq(val64, &vp_reg->tim_cfg3_int_num[VXGE_HW_VPATH_INTR_TX]); |
4442 | vpath->tim_tti_cfg3_saved = val64; | ||
4436 | } | 4443 | } |
4437 | 4444 | ||
4438 | if (config->ring.enable == VXGE_HW_RING_ENABLE) { | 4445 | if (config->ring.enable == VXGE_HW_RING_ENABLE) { |
@@ -4481,6 +4488,8 @@ __vxge_hw_vpath_tim_configure(struct __vxge_hw_device *hldev, u32 vp_id) | |||
4481 | } | 4488 | } |
4482 | 4489 | ||
4483 | writeq(val64, &vp_reg->tim_cfg1_int_num[VXGE_HW_VPATH_INTR_RX]); | 4490 | writeq(val64, &vp_reg->tim_cfg1_int_num[VXGE_HW_VPATH_INTR_RX]); |
4491 | vpath->tim_rti_cfg1_saved = val64; | ||
4492 | |||
4484 | val64 = readq(&vp_reg->tim_cfg2_int_num[VXGE_HW_VPATH_INTR_RX]); | 4493 | val64 = readq(&vp_reg->tim_cfg2_int_num[VXGE_HW_VPATH_INTR_RX]); |
4485 | 4494 | ||
4486 | if (config->rti.uec_a != VXGE_HW_USE_FLASH_DEFAULT) { | 4495 | if (config->rti.uec_a != VXGE_HW_USE_FLASH_DEFAULT) { |
@@ -4537,6 +4546,7 @@ __vxge_hw_vpath_tim_configure(struct __vxge_hw_device *hldev, u32 vp_id) | |||
4537 | } | 4546 | } |
4538 | 4547 | ||
4539 | writeq(val64, &vp_reg->tim_cfg3_int_num[VXGE_HW_VPATH_INTR_RX]); | 4548 | writeq(val64, &vp_reg->tim_cfg3_int_num[VXGE_HW_VPATH_INTR_RX]); |
4549 | vpath->tim_rti_cfg3_saved = val64; | ||
4540 | } | 4550 | } |
4541 | 4551 | ||
4542 | val64 = 0; | 4552 | val64 = 0; |
@@ -4555,26 +4565,6 @@ __vxge_hw_vpath_tim_configure(struct __vxge_hw_device *hldev, u32 vp_id) | |||
4555 | return status; | 4565 | return status; |
4556 | } | 4566 | } |
4557 | 4567 | ||
4558 | void vxge_hw_vpath_tti_ci_set(struct __vxge_hw_device *hldev, u32 vp_id) | ||
4559 | { | ||
4560 | struct __vxge_hw_virtualpath *vpath; | ||
4561 | struct vxge_hw_vpath_reg __iomem *vp_reg; | ||
4562 | struct vxge_hw_vp_config *config; | ||
4563 | u64 val64; | ||
4564 | |||
4565 | vpath = &hldev->virtual_paths[vp_id]; | ||
4566 | vp_reg = vpath->vp_reg; | ||
4567 | config = vpath->vp_config; | ||
4568 | |||
4569 | if (config->fifo.enable == VXGE_HW_FIFO_ENABLE && | ||
4570 | config->tti.timer_ci_en != VXGE_HW_TIM_TIMER_CI_ENABLE) { | ||
4571 | config->tti.timer_ci_en = VXGE_HW_TIM_TIMER_CI_ENABLE; | ||
4572 | val64 = readq(&vp_reg->tim_cfg1_int_num[VXGE_HW_VPATH_INTR_TX]); | ||
4573 | val64 |= VXGE_HW_TIM_CFG1_INT_NUM_TIMER_CI; | ||
4574 | writeq(val64, &vp_reg->tim_cfg1_int_num[VXGE_HW_VPATH_INTR_TX]); | ||
4575 | } | ||
4576 | } | ||
4577 | |||
4578 | /* | 4568 | /* |
4579 | * __vxge_hw_vpath_initialize | 4569 | * __vxge_hw_vpath_initialize |
4580 | * This routine is the final phase of init which initializes the | 4570 | * This routine is the final phase of init which initializes the |