aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c
diff options
context:
space:
mode:
authorHimanshu Madhani <himanshu.madhani@qlogic.com>2013-08-21 11:24:12 -0400
committerDavid S. Miller <davem@davemloft.net>2013-08-21 15:17:18 -0400
commitc2c5e3a0681bb1945c0cb211a5f4baa22cb2cbb3 (patch)
tree860a3508236f72db6dc15599d568c909208065c7 /drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c
parentaa4a1f7df7cbb98797c9f4edfde3c726e2b3841f (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.c13
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 *,
130inline void qlcnic_enable_tx_intr(struct qlcnic_adapter *adapter, 130inline 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,
138static inline void qlcnic_disable_tx_int(struct qlcnic_adapter *adapter, 139static 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];