From: Alaa Hleihel <a...@mellanox.com>

When memory is limited (on kdump kernel), reduce size of rx and tx rings.
Also reduce the number of rx rings.

Signed-off-by: Alaa Hleihel <a...@mellanox.com>
Signed-off-by: Tariq Toukan <tar...@mellanox.com>
---
 drivers/net/ethernet/mellanox/mlx4/en_main.c | 9 +++++++--
 drivers/net/ethernet/mellanox/mlx4/mlx4_en.h | 2 +-
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlx4/en_main.c 
b/drivers/net/ethernet/mellanox/mlx4/en_main.c
index d25e16d2c319..109472d6b61f 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_main.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_main.c
@@ -167,8 +167,13 @@ static void mlx4_en_get_profile(struct mlx4_en_dev *mdev)
                params->prof[i].rx_ppp = pfcrx;
                params->prof[i].tx_pause = !(pfcrx || pfctx);
                params->prof[i].tx_ppp = pfctx;
-               params->prof[i].tx_ring_size = MLX4_EN_DEF_TX_RING_SIZE;
-               params->prof[i].rx_ring_size = MLX4_EN_DEF_RX_RING_SIZE;
+               if (mlx4_low_memory_profile()) {
+                       params->prof[i].tx_ring_size = MLX4_EN_MIN_TX_SIZE;
+                       params->prof[i].rx_ring_size = MLX4_EN_MIN_RX_SIZE;
+               } else {
+                       params->prof[i].tx_ring_size = MLX4_EN_DEF_TX_RING_SIZE;
+                       params->prof[i].rx_ring_size = MLX4_EN_DEF_RX_RING_SIZE;
+               }
                params->prof[i].num_up = MLX4_EN_NUM_UP_LOW;
                params->prof[i].num_tx_rings_p_up = 
params->max_num_tx_rings_p_up;
                params->prof[i].tx_ring_num[TX] = params->max_num_tx_rings_p_up 
*
diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h 
b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
index c3228b89df46..485d856546c6 100644
--- a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
+++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
@@ -72,7 +72,7 @@
 #define MLX4_EN_PAGE_SIZE      (1 << MLX4_EN_PAGE_SHIFT)
 #define DEF_RX_RINGS           16
 #define MAX_RX_RINGS           128
-#define MIN_RX_RINGS           4
+#define MIN_RX_RINGS           1
 #define LOG_TXBB_SIZE          6
 #define TXBB_SIZE              BIT(LOG_TXBB_SIZE)
 #define HEADROOM               (2048 / TXBB_SIZE + 1)
-- 
1.8.3.1

Reply via email to