aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/brocade
diff options
context:
space:
mode:
authorRasesh Mody <rmody@brocade.com>2011-08-30 11:27:46 -0400
committerDavid S. Miller <davem@davemloft.net>2011-09-15 15:36:34 -0400
commit41eb5ba42d6108029ccc0cdb0c95dfc6a9e348e7 (patch)
treeae70af543406cddbd9c2b9336a33884c25a3b6ea /drivers/net/ethernet/brocade
parentdfee325ad23ff4714981c9d2a4df6386493a4475 (diff)
bna: TX Queue Depth Fix
sk_buff unmap_array grows greater than 65536 (x2) with Tx ring of 65536. Reducing TXQ depth and safe(max) acking of Tx events to 32768 (same as Rx). Add defines for TX and RX queue depths. Signed-off-by: Gurunatha Karaje <gkaraje@brocade.com> Signed-off-by: Rasesh Mody <rmody@brocade.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/brocade')
-rw-r--r--drivers/net/ethernet/brocade/bna/bnad.h4
-rw-r--r--drivers/net/ethernet/brocade/bna/bnad_ethtool.c8
2 files changed, 8 insertions, 4 deletions
diff --git a/drivers/net/ethernet/brocade/bna/bnad.h b/drivers/net/ethernet/brocade/bna/bnad.h
index 0c9d736a15de..6c42c1441679 100644
--- a/drivers/net/ethernet/brocade/bna/bnad.h
+++ b/drivers/net/ethernet/brocade/bna/bnad.h
@@ -86,6 +86,10 @@ struct bnad_rx_ctrl {
86#define BNAD_MAX_Q_DEPTH 0x10000 86#define BNAD_MAX_Q_DEPTH 0x10000
87#define BNAD_MIN_Q_DEPTH 0x200 87#define BNAD_MIN_Q_DEPTH 0x200
88 88
89#define BNAD_MAX_RXQ_DEPTH (BNAD_MAX_Q_DEPTH / bnad_rxqs_per_cq)
90/* keeping MAX TX and RX Q depth equal */
91#define BNAD_MAX_TXQ_DEPTH BNAD_MAX_RXQ_DEPTH
92
89#define BNAD_JUMBO_MTU 9000 93#define BNAD_JUMBO_MTU 9000
90 94
91#define BNAD_NETIF_WAKE_THRESHOLD 8 95#define BNAD_NETIF_WAKE_THRESHOLD 8
diff --git a/drivers/net/ethernet/brocade/bna/bnad_ethtool.c b/drivers/net/ethernet/brocade/bna/bnad_ethtool.c
index 96ff7001a1a2..48422244397c 100644
--- a/drivers/net/ethernet/brocade/bna/bnad_ethtool.c
+++ b/drivers/net/ethernet/brocade/bna/bnad_ethtool.c
@@ -418,10 +418,10 @@ bnad_get_ringparam(struct net_device *netdev,
418{ 418{
419 struct bnad *bnad = netdev_priv(netdev); 419 struct bnad *bnad = netdev_priv(netdev);
420 420
421 ringparam->rx_max_pending = BNAD_MAX_Q_DEPTH / bnad_rxqs_per_cq; 421 ringparam->rx_max_pending = BNAD_MAX_RXQ_DEPTH;
422 ringparam->rx_mini_max_pending = 0; 422 ringparam->rx_mini_max_pending = 0;
423 ringparam->rx_jumbo_max_pending = 0; 423 ringparam->rx_jumbo_max_pending = 0;
424 ringparam->tx_max_pending = BNAD_MAX_Q_DEPTH; 424 ringparam->tx_max_pending = BNAD_MAX_TXQ_DEPTH;
425 425
426 ringparam->rx_pending = bnad->rxq_depth; 426 ringparam->rx_pending = bnad->rxq_depth;
427 ringparam->rx_mini_max_pending = 0; 427 ringparam->rx_mini_max_pending = 0;
@@ -445,13 +445,13 @@ bnad_set_ringparam(struct net_device *netdev,
445 } 445 }
446 446
447 if (ringparam->rx_pending < BNAD_MIN_Q_DEPTH || 447 if (ringparam->rx_pending < BNAD_MIN_Q_DEPTH ||
448 ringparam->rx_pending > BNAD_MAX_Q_DEPTH / bnad_rxqs_per_cq || 448 ringparam->rx_pending > BNAD_MAX_RXQ_DEPTH ||
449 !BNA_POWER_OF_2(ringparam->rx_pending)) { 449 !BNA_POWER_OF_2(ringparam->rx_pending)) {
450 mutex_unlock(&bnad->conf_mutex); 450 mutex_unlock(&bnad->conf_mutex);
451 return -EINVAL; 451 return -EINVAL;
452 } 452 }
453 if (ringparam->tx_pending < BNAD_MIN_Q_DEPTH || 453 if (ringparam->tx_pending < BNAD_MIN_Q_DEPTH ||
454 ringparam->tx_pending > BNAD_MAX_Q_DEPTH || 454 ringparam->tx_pending > BNAD_MAX_TXQ_DEPTH ||
455 !BNA_POWER_OF_2(ringparam->tx_pending)) { 455 !BNA_POWER_OF_2(ringparam->tx_pending)) {
456 mutex_unlock(&bnad->conf_mutex); 456 mutex_unlock(&bnad->conf_mutex);
457 return -EINVAL; 457 return -EINVAL;