aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/bnx2x/bnx2x_ethtool.c
diff options
context:
space:
mode:
authorDmitry Kravkov <dmitry@broadcom.com>2010-09-12 01:48:28 -0400
committerDavid S. Miller <davem@davemloft.net>2010-09-13 23:02:53 -0400
commit251415808306a19be93ec93268e2985f10d3db8b (patch)
tree176b64ef9f742ae0ebcfa4eceae44859e01e4a1e /drivers/net/bnx2x/bnx2x_ethtool.c
parent441993da47777d961300c070fe1210600af48ad8 (diff)
bnx2x: Spread rx buffers between allocated queues
Default number of rx buffers will be divided equally between allocated queues. This will decrease amount of pre-allocated buffers on systems with multiple CPUs. User can override this behavior with ethtool -G. Minimum amount of rx buffers per queue set to 128. Reported-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com> Signed-off-by: Eilon Greenstein <eilong@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/bnx2x/bnx2x_ethtool.c')
-rw-r--r--drivers/net/bnx2x/bnx2x_ethtool.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/net/bnx2x/bnx2x_ethtool.c b/drivers/net/bnx2x/bnx2x_ethtool.c
index 6f939c5a0089..d9748e97fad3 100644
--- a/drivers/net/bnx2x/bnx2x_ethtool.c
+++ b/drivers/net/bnx2x/bnx2x_ethtool.c
@@ -961,7 +961,14 @@ static void bnx2x_get_ringparam(struct net_device *dev,
961 ering->rx_mini_max_pending = 0; 961 ering->rx_mini_max_pending = 0;
962 ering->rx_jumbo_max_pending = 0; 962 ering->rx_jumbo_max_pending = 0;
963 963
964 ering->rx_pending = bp->rx_ring_size; 964 if (bp->rx_ring_size)
965 ering->rx_pending = bp->rx_ring_size;
966 else
967 if (bp->state == BNX2X_STATE_OPEN && bp->num_queues)
968 ering->rx_pending = MAX_RX_AVAIL/bp->num_queues;
969 else
970 ering->rx_pending = MAX_RX_AVAIL;
971
965 ering->rx_mini_pending = 0; 972 ering->rx_mini_pending = 0;
966 ering->rx_jumbo_pending = 0; 973 ering->rx_jumbo_pending = 0;
967 974
@@ -981,6 +988,7 @@ static int bnx2x_set_ringparam(struct net_device *dev,
981 } 988 }
982 989
983 if ((ering->rx_pending > MAX_RX_AVAIL) || 990 if ((ering->rx_pending > MAX_RX_AVAIL) ||
991 (ering->rx_pending < MIN_RX_AVAIL) ||
984 (ering->tx_pending > MAX_TX_AVAIL) || 992 (ering->tx_pending > MAX_TX_AVAIL) ||
985 (ering->tx_pending <= MAX_SKB_FRAGS + 4)) 993 (ering->tx_pending <= MAX_SKB_FRAGS + 4))
986 return -EINVAL; 994 return -EINVAL;