aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHimanshu Madhani <himanshu.madhani@qlogic.com>2013-12-17 09:01:52 -0500
committerDavid S. Miller <davem@davemloft.net>2013-12-17 17:09:43 -0500
commit80c0e4f3a3a43664b38477fa5d9e6b6149b34d80 (patch)
tree53b9a703247d64fa8284b2e971a1916bc6d04aa3
parent9b0fff2a072a9dbf2796309980296edd062f63f7 (diff)
qlcnic: Allow single Tx/Rx queue for all adapters.
o Allow user to set sigle Tx/Rx queue in MSI-x mode, for ALL supported adapters. Signed-off-by: Himanshu Madhani <himanshu.madhani@qlogic.com> Signed-off-by: Manish Chopra <manish.chopra@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c1
-rw-r--r--drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c6
-rw-r--r--drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c9
3 files changed, 4 insertions, 12 deletions
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c
index 406ab1b44269..01c7799bc825 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c
@@ -289,6 +289,7 @@ int qlcnic_83xx_setup_intr(struct qlcnic_adapter *adapter)
289 if (qlcnic_sriov_vf_check(adapter)) 289 if (qlcnic_sriov_vf_check(adapter))
290 return -EINVAL; 290 return -EINVAL;
291 num_msix = 1; 291 num_msix = 1;
292 adapter->drv_tx_rings = QLCNIC_SINGLE_RING;
292 } 293 }
293 /* setup interrupt mapping table for fw */ 294 /* setup interrupt mapping table for fw */
294 ahw->intr_tbl = vzalloc(num_msix * 295 ahw->intr_tbl = vzalloc(num_msix *
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c
index 0149c9495347..9e1494aab4d7 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c
@@ -1466,8 +1466,7 @@ int qlcnic_82xx_napi_add(struct qlcnic_adapter *adapter,
1466 for (ring = 0; ring < adapter->drv_sds_rings; ring++) { 1466 for (ring = 0; ring < adapter->drv_sds_rings; ring++) {
1467 sds_ring = &recv_ctx->sds_rings[ring]; 1467 sds_ring = &recv_ctx->sds_rings[ring];
1468 if (qlcnic_check_multi_tx(adapter) && 1468 if (qlcnic_check_multi_tx(adapter) &&
1469 !adapter->ahw->diag_test && 1469 !adapter->ahw->diag_test) {
1470 (adapter->drv_tx_rings > QLCNIC_SINGLE_RING)) {
1471 netif_napi_add(netdev, &sds_ring->napi, qlcnic_rx_poll, 1470 netif_napi_add(netdev, &sds_ring->napi, qlcnic_rx_poll,
1472 NAPI_POLL_WEIGHT); 1471 NAPI_POLL_WEIGHT);
1473 } else { 1472 } else {
@@ -1540,8 +1539,7 @@ void qlcnic_82xx_napi_enable(struct qlcnic_adapter *adapter)
1540 1539
1541 if (qlcnic_check_multi_tx(adapter) && 1540 if (qlcnic_check_multi_tx(adapter) &&
1542 (adapter->flags & QLCNIC_MSIX_ENABLED) && 1541 (adapter->flags & QLCNIC_MSIX_ENABLED) &&
1543 !adapter->ahw->diag_test && 1542 !adapter->ahw->diag_test) {
1544 (adapter->drv_tx_rings > QLCNIC_SINGLE_RING)) {
1545 for (ring = 0; ring < adapter->drv_tx_rings; ring++) { 1543 for (ring = 0; ring < adapter->drv_tx_rings; ring++) {
1546 tx_ring = &adapter->tx_ring[ring]; 1544 tx_ring = &adapter->tx_ring[ring];
1547 napi_enable(&tx_ring->napi); 1545 napi_enable(&tx_ring->napi);
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
index 45b1da15ce47..72a1c12decde 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
@@ -646,8 +646,7 @@ int qlcnic_enable_msix(struct qlcnic_adapter *adapter, u32 num_msix)
646 } else { 646 } else {
647 adapter->ahw->num_msix = num_msix; 647 adapter->ahw->num_msix = num_msix;
648 if (qlcnic_check_multi_tx(adapter) && 648 if (qlcnic_check_multi_tx(adapter) &&
649 !adapter->ahw->diag_test && 649 !adapter->ahw->diag_test)
650 (adapter->drv_tx_rings > 1))
651 drv_sds_rings = num_msix - drv_tx_rings; 650 drv_sds_rings = num_msix - drv_tx_rings;
652 else 651 else
653 drv_sds_rings = num_msix; 652 drv_sds_rings = num_msix;
@@ -3722,12 +3721,6 @@ int qlcnic_validate_rings(struct qlcnic_adapter *adapter, __u32 ring_cnt,
3722 return -EINVAL; 3721 return -EINVAL;
3723 } 3722 }
3724 3723
3725 if (ring_cnt < 2) {
3726 netdev_err(netdev,
3727 "%s rings value should not be lower than 2\n", buf);
3728 return -EINVAL;
3729 }
3730
3731 if (!is_power_of_2(ring_cnt)) { 3724 if (!is_power_of_2(ring_cnt)) {
3732 netdev_err(netdev, "%s rings value should be a power of 2\n", 3725 netdev_err(netdev, "%s rings value should be a power of 2\n",
3733 buf); 3726 buf);