aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c
diff options
context:
space:
mode:
authorHimanshu Madhani <himanshu.madhani@qlogic.com>2013-11-04 13:31:31 -0500
committerDavid S. Miller <davem@davemloft.net>2013-11-04 15:33:19 -0500
commit34e8c406fda5b5a9d2e126a92bab84cd28e3b5fa (patch)
tree7867f7b76c97c693425d76e424ce54aa7e0dcbd2 /drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c
parentf27c75b3903ab02bfe295aa58ad61ef5b756b065 (diff)
qlcnic: refactor Tx/SDS ring calculation and validation in driver.
o Current driver has duplicate code for validating user input for changing Tx/SDS rings using set_channel ethtool interface. This patch removes duplicate code and refactored Tx/SDS ring validation for 82xx/83xx/84xx series adapter. o Refactored code now calculates maximum Tx/Rx ring driver can support based on Default, NPAR and SRIOV PF/VF mode of driver. Signed-off-by: Himanshu Madhani <himanshu.madhani@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c')
-rw-r--r--drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c
index 86850dd633a1..859cb161fc63 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c
@@ -270,7 +270,7 @@ int qlcnic_82xx_fw_cmd_create_rx_ctx(struct qlcnic_adapter *adapter)
270 int err; 270 int err;
271 271
272 nrds_rings = adapter->max_rds_rings; 272 nrds_rings = adapter->max_rds_rings;
273 nsds_rings = adapter->max_sds_rings; 273 nsds_rings = adapter->drv_sds_rings;
274 274
275 rq_size = SIZEOF_HOSTRQ_RX(struct qlcnic_hostrq_rx_ctx, nrds_rings, 275 rq_size = SIZEOF_HOSTRQ_RX(struct qlcnic_hostrq_rx_ctx, nrds_rings,
276 nsds_rings); 276 nsds_rings);
@@ -475,7 +475,7 @@ int qlcnic_82xx_fw_cmd_create_tx_ctx(struct qlcnic_adapter *adapter,
475 475
476 if (qlcnic_check_multi_tx(adapter) && 476 if (qlcnic_check_multi_tx(adapter) &&
477 !adapter->ahw->diag_test) { 477 !adapter->ahw->diag_test) {
478 temp_nsds_rings = adapter->max_sds_rings; 478 temp_nsds_rings = adapter->drv_sds_rings;
479 index = temp_nsds_rings + ring; 479 index = temp_nsds_rings + ring;
480 msix_id = ahw->intr_tbl[index].id; 480 msix_id = ahw->intr_tbl[index].id;
481 prq->msi_index = cpu_to_le16(msix_id); 481 prq->msi_index = cpu_to_le16(msix_id);
@@ -512,7 +512,7 @@ int qlcnic_82xx_fw_cmd_create_tx_ctx(struct qlcnic_adapter *adapter,
512 if (qlcnic_check_multi_tx(adapter) && 512 if (qlcnic_check_multi_tx(adapter) &&
513 !adapter->ahw->diag_test && 513 !adapter->ahw->diag_test &&
514 (adapter->flags & QLCNIC_MSIX_ENABLED)) { 514 (adapter->flags & QLCNIC_MSIX_ENABLED)) {
515 index = adapter->max_sds_rings + ring; 515 index = adapter->drv_sds_rings + ring;
516 intr_mask = ahw->intr_tbl[index].src; 516 intr_mask = ahw->intr_tbl[index].src;
517 tx_ring->crb_intr_mask = ahw->pci_base0 + intr_mask; 517 tx_ring->crb_intr_mask = ahw->pci_base0 + intr_mask;
518 } 518 }
@@ -582,7 +582,7 @@ int qlcnic_alloc_hw_resources(struct qlcnic_adapter *adapter)
582 582
583 recv_ctx = adapter->recv_ctx; 583 recv_ctx = adapter->recv_ctx;
584 584
585 for (ring = 0; ring < adapter->max_drv_tx_rings; ring++) { 585 for (ring = 0; ring < adapter->drv_tx_rings; ring++) {
586 tx_ring = &adapter->tx_ring[ring]; 586 tx_ring = &adapter->tx_ring[ring];
587 ptr = (__le32 *)dma_alloc_coherent(&pdev->dev, sizeof(u32), 587 ptr = (__le32 *)dma_alloc_coherent(&pdev->dev, sizeof(u32),
588 &tx_ring->hw_cons_phys_addr, 588 &tx_ring->hw_cons_phys_addr,
@@ -616,7 +616,7 @@ int qlcnic_alloc_hw_resources(struct qlcnic_adapter *adapter)
616 616
617 } 617 }
618 618
619 for (ring = 0; ring < adapter->max_sds_rings; ring++) { 619 for (ring = 0; ring < adapter->drv_sds_rings; ring++) {
620 sds_ring = &recv_ctx->sds_rings[ring]; 620 sds_ring = &recv_ctx->sds_rings[ring];
621 621
622 addr = dma_alloc_coherent(&adapter->pdev->dev, 622 addr = dma_alloc_coherent(&adapter->pdev->dev,
@@ -664,7 +664,7 @@ int qlcnic_fw_create_ctx(struct qlcnic_adapter *dev)
664 if (err) 664 if (err)
665 goto err_out; 665 goto err_out;
666 666
667 for (ring = 0; ring < dev->max_drv_tx_rings; ring++) { 667 for (ring = 0; ring < dev->drv_tx_rings; ring++) {
668 err = qlcnic_fw_cmd_create_tx_ctx(dev, 668 err = qlcnic_fw_cmd_create_tx_ctx(dev,
669 &dev->tx_ring[ring], 669 &dev->tx_ring[ring],
670 ring); 670 ring);
@@ -703,7 +703,7 @@ void qlcnic_fw_destroy_ctx(struct qlcnic_adapter *adapter)
703 703
704 if (test_and_clear_bit(__QLCNIC_FW_ATTACHED, &adapter->state)) { 704 if (test_and_clear_bit(__QLCNIC_FW_ATTACHED, &adapter->state)) {
705 qlcnic_fw_cmd_del_rx_ctx(adapter); 705 qlcnic_fw_cmd_del_rx_ctx(adapter);
706 for (ring = 0; ring < adapter->max_drv_tx_rings; ring++) 706 for (ring = 0; ring < adapter->drv_tx_rings; ring++)
707 qlcnic_fw_cmd_del_tx_ctx(adapter, 707 qlcnic_fw_cmd_del_tx_ctx(adapter,
708 &adapter->tx_ring[ring]); 708 &adapter->tx_ring[ring]);
709 709
@@ -733,7 +733,7 @@ void qlcnic_free_hw_resources(struct qlcnic_adapter *adapter)
733 733
734 recv_ctx = adapter->recv_ctx; 734 recv_ctx = adapter->recv_ctx;
735 735
736 for (ring = 0; ring < adapter->max_drv_tx_rings; ring++) { 736 for (ring = 0; ring < adapter->drv_tx_rings; ring++) {
737 tx_ring = &adapter->tx_ring[ring]; 737 tx_ring = &adapter->tx_ring[ring];
738 if (tx_ring->hw_consumer != NULL) { 738 if (tx_ring->hw_consumer != NULL) {
739 dma_free_coherent(&adapter->pdev->dev, sizeof(u32), 739 dma_free_coherent(&adapter->pdev->dev, sizeof(u32),
@@ -764,7 +764,7 @@ void qlcnic_free_hw_resources(struct qlcnic_adapter *adapter)
764 } 764 }
765 } 765 }
766 766
767 for (ring = 0; ring < adapter->max_sds_rings; ring++) { 767 for (ring = 0; ring < adapter->drv_sds_rings; ring++) {
768 sds_ring = &recv_ctx->sds_rings[ring]; 768 sds_ring = &recv_ctx->sds_rings[ring];
769 769
770 if (sds_ring->desc_head != NULL) { 770 if (sds_ring->desc_head != NULL) {
@@ -895,6 +895,8 @@ int qlcnic_82xx_get_nic_info(struct qlcnic_adapter *adapter,
895 npar_info->max_rx_ques = le16_to_cpu(nic_info->max_rx_ques); 895 npar_info->max_rx_ques = le16_to_cpu(nic_info->max_rx_ques);
896 npar_info->capabilities = le32_to_cpu(nic_info->capabilities); 896 npar_info->capabilities = le32_to_cpu(nic_info->capabilities);
897 npar_info->max_mtu = le16_to_cpu(nic_info->max_mtu); 897 npar_info->max_mtu = le16_to_cpu(nic_info->max_mtu);
898 adapter->max_tx_rings = npar_info->max_tx_ques;
899 adapter->max_sds_rings = npar_info->max_rx_ques;
898 } 900 }
899 901
900 qlcnic_free_mbx_args(&cmd); 902 qlcnic_free_mbx_args(&cmd);