diff options
author | Himanshu Madhani <himanshu.madhani@qlogic.com> | 2013-08-21 11:24:12 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-08-21 15:17:18 -0400 |
commit | c2c5e3a0681bb1945c0cb211a5f4baa22cb2cbb3 (patch) | |
tree | 860a3508236f72db6dc15599d568c909208065c7 /drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c | |
parent | aa4a1f7df7cbb98797c9f4edfde3c726e2b3841f (diff) |
qlcnic: Enable diagnostic test for multiple Tx queues.
o Enable diagnostic test via ethtool and QConvergeConsole
application when Multiple Tx queues are enabled on 82xx
series adapters.
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_io.c')
-rw-r--r-- | drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c index f4b09f44173c..89f6dff76d52 100644 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c | |||
@@ -130,7 +130,8 @@ struct sk_buff *qlcnic_process_rxbuf(struct qlcnic_adapter *, | |||
130 | inline void qlcnic_enable_tx_intr(struct qlcnic_adapter *adapter, | 130 | inline void qlcnic_enable_tx_intr(struct qlcnic_adapter *adapter, |
131 | struct qlcnic_host_tx_ring *tx_ring) | 131 | struct qlcnic_host_tx_ring *tx_ring) |
132 | { | 132 | { |
133 | if (qlcnic_check_multi_tx(adapter)) | 133 | if (qlcnic_check_multi_tx(adapter) && |
134 | !adapter->ahw->diag_test) | ||
134 | writel(0x0, tx_ring->crb_intr_mask); | 135 | writel(0x0, tx_ring->crb_intr_mask); |
135 | } | 136 | } |
136 | 137 | ||
@@ -138,7 +139,8 @@ inline void qlcnic_enable_tx_intr(struct qlcnic_adapter *adapter, | |||
138 | static inline void qlcnic_disable_tx_int(struct qlcnic_adapter *adapter, | 139 | static inline void qlcnic_disable_tx_int(struct qlcnic_adapter *adapter, |
139 | struct qlcnic_host_tx_ring *tx_ring) | 140 | struct qlcnic_host_tx_ring *tx_ring) |
140 | { | 141 | { |
141 | if (qlcnic_check_multi_tx(adapter)) | 142 | if (qlcnic_check_multi_tx(adapter) && |
143 | !adapter->ahw->diag_test) | ||
142 | writel(1, tx_ring->crb_intr_mask); | 144 | writel(1, tx_ring->crb_intr_mask); |
143 | } | 145 | } |
144 | 146 | ||
@@ -1466,6 +1468,7 @@ int qlcnic_82xx_napi_add(struct qlcnic_adapter *adapter, | |||
1466 | for (ring = 0; ring < adapter->max_sds_rings; ring++) { | 1468 | for (ring = 0; ring < adapter->max_sds_rings; ring++) { |
1467 | sds_ring = &recv_ctx->sds_rings[ring]; | 1469 | sds_ring = &recv_ctx->sds_rings[ring]; |
1468 | if (qlcnic_check_multi_tx(adapter) && | 1470 | if (qlcnic_check_multi_tx(adapter) && |
1471 | !adapter->ahw->diag_test && | ||
1469 | (adapter->max_drv_tx_rings > 1)) { | 1472 | (adapter->max_drv_tx_rings > 1)) { |
1470 | netif_napi_add(netdev, &sds_ring->napi, qlcnic_rx_poll, | 1473 | netif_napi_add(netdev, &sds_ring->napi, qlcnic_rx_poll, |
1471 | QLCNIC_NETDEV_WEIGHT * 2); | 1474 | QLCNIC_NETDEV_WEIGHT * 2); |
@@ -1487,7 +1490,7 @@ int qlcnic_82xx_napi_add(struct qlcnic_adapter *adapter, | |||
1487 | return -ENOMEM; | 1490 | return -ENOMEM; |
1488 | } | 1491 | } |
1489 | 1492 | ||
1490 | if (qlcnic_check_multi_tx(adapter)) { | 1493 | if (qlcnic_check_multi_tx(adapter) && !adapter->ahw->diag_test) { |
1491 | for (ring = 0; ring < adapter->max_drv_tx_rings; ring++) { | 1494 | for (ring = 0; ring < adapter->max_drv_tx_rings; ring++) { |
1492 | tx_ring = &adapter->tx_ring[ring]; | 1495 | tx_ring = &adapter->tx_ring[ring]; |
1493 | netif_napi_add(netdev, &tx_ring->napi, qlcnic_tx_poll, | 1496 | netif_napi_add(netdev, &tx_ring->napi, qlcnic_tx_poll, |
@@ -1512,7 +1515,7 @@ void qlcnic_82xx_napi_del(struct qlcnic_adapter *adapter) | |||
1512 | 1515 | ||
1513 | qlcnic_free_sds_rings(adapter->recv_ctx); | 1516 | qlcnic_free_sds_rings(adapter->recv_ctx); |
1514 | 1517 | ||
1515 | if (qlcnic_check_multi_tx(adapter)) { | 1518 | if (qlcnic_check_multi_tx(adapter) && !adapter->ahw->diag_test) { |
1516 | for (ring = 0; ring < adapter->max_drv_tx_rings; ring++) { | 1519 | for (ring = 0; ring < adapter->max_drv_tx_rings; ring++) { |
1517 | tx_ring = &adapter->tx_ring[ring]; | 1520 | tx_ring = &adapter->tx_ring[ring]; |
1518 | netif_napi_del(&tx_ring->napi); | 1521 | netif_napi_del(&tx_ring->napi); |
@@ -1540,6 +1543,7 @@ void qlcnic_82xx_napi_enable(struct qlcnic_adapter *adapter) | |||
1540 | 1543 | ||
1541 | if (qlcnic_check_multi_tx(adapter) && | 1544 | if (qlcnic_check_multi_tx(adapter) && |
1542 | (adapter->flags & QLCNIC_MSIX_ENABLED) && | 1545 | (adapter->flags & QLCNIC_MSIX_ENABLED) && |
1546 | !adapter->ahw->diag_test && | ||
1543 | (adapter->max_drv_tx_rings > 1)) { | 1547 | (adapter->max_drv_tx_rings > 1)) { |
1544 | for (ring = 0; ring < adapter->max_drv_tx_rings; ring++) { | 1548 | for (ring = 0; ring < adapter->max_drv_tx_rings; ring++) { |
1545 | tx_ring = &adapter->tx_ring[ring]; | 1549 | tx_ring = &adapter->tx_ring[ring]; |
@@ -1567,6 +1571,7 @@ void qlcnic_82xx_napi_disable(struct qlcnic_adapter *adapter) | |||
1567 | } | 1571 | } |
1568 | 1572 | ||
1569 | if ((adapter->flags & QLCNIC_MSIX_ENABLED) && | 1573 | if ((adapter->flags & QLCNIC_MSIX_ENABLED) && |
1574 | !adapter->ahw->diag_test && | ||
1570 | qlcnic_check_multi_tx(adapter)) { | 1575 | qlcnic_check_multi_tx(adapter)) { |
1571 | for (ring = 0; ring < adapter->max_drv_tx_rings; ring++) { | 1576 | for (ring = 0; ring < adapter->max_drv_tx_rings; ring++) { |
1572 | tx_ring = &adapter->tx_ring[ring]; | 1577 | tx_ring = &adapter->tx_ring[ring]; |