diff options
| author | Himanshu Madhani <himanshu.madhani@qlogic.com> | 2013-12-17 09:01:52 -0500 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2013-12-17 17:09:43 -0500 |
| commit | 80c0e4f3a3a43664b38477fa5d9e6b6149b34d80 (patch) | |
| tree | 53b9a703247d64fa8284b2e971a1916bc6d04aa3 | |
| parent | 9b0fff2a072a9dbf2796309980296edd062f63f7 (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.c | 1 | ||||
| -rw-r--r-- | drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c | 6 | ||||
| -rw-r--r-- | drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | 9 |
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); |
