net/mlx4: Set number of RX rings in a utility function
authorIdo Shamay <idos@mellanox.com>
Fri, 21 Feb 2014 10:39:17 +0000 (12:39 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 24 Feb 2014 23:38:01 +0000 (18:38 -0500)
mlx4_en_add() is too long.
Moving set number of RX rings to a utiltity function to improve
readability and modulization of the code.

Signed-off-by: Ido Shamay <idos@mellanox.com>
Signed-off-by: Amir Vadai <amirv@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlx4/en_main.c
drivers/net/ethernet/mellanox/mlx4/en_rx.c
drivers/net/ethernet/mellanox/mlx4/mlx4_en.h

index d357bf5a46860314a4c74ae10c630bae8f61f096..fa2f6e76f69bb03f9a822fb23f5af1f3875174c3 100644 (file)
@@ -274,19 +274,8 @@ static void *mlx4_en_add(struct mlx4_dev *dev)
        if (mdev->dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_TS)
                mlx4_en_init_timestamp(mdev);
 
-       mlx4_foreach_port(i, dev, MLX4_PORT_TYPE_ETH) {
-               if (!dev->caps.comp_pool) {
-                       mdev->profile.prof[i].rx_ring_num =
-                               rounddown_pow_of_two(max_t(int, MIN_RX_RINGS,
-                                                          min_t(int,
-                                                                dev->caps.num_comp_vectors,
-                                                                DEF_RX_RINGS)));
-               } else {
-                       mdev->profile.prof[i].rx_ring_num = rounddown_pow_of_two(
-                               min_t(int, dev->caps.comp_pool/
-                                     dev->caps.num_ports - 1 , MAX_MSIX_P_PORT - 1));
-               }
-       }
+       /* Set default number of RX rings*/
+       mlx4_en_set_num_rx_rings(mdev);
 
        /* Create our own workqueue for reset/multicast tasks
         * Note: we cannot use the shared workqueue because of deadlocks caused
index 890922c1c8eea11d4d737d81aefffde4e157e3a2..85434d73c9bcea8aecf743004670e7a5b8477dd0 100644 (file)
@@ -318,6 +318,28 @@ static void mlx4_en_free_rx_buf(struct mlx4_en_priv *priv,
        }
 }
 
+void mlx4_en_set_num_rx_rings(struct mlx4_en_dev *mdev)
+{
+       int i;
+       int num_of_eqs;
+       struct mlx4_dev *dev = mdev->dev;
+
+       mlx4_foreach_port(i, dev, MLX4_PORT_TYPE_ETH) {
+               if (!dev->caps.comp_pool)
+                       num_of_eqs = max_t(int, MIN_RX_RINGS,
+                                          min_t(int,
+                                                dev->caps.num_comp_vectors,
+                                                DEF_RX_RINGS));
+               else
+                       num_of_eqs = min_t(int, MAX_MSIX_P_PORT,
+                                          dev->caps.comp_pool/
+                                          dev->caps.num_ports) - 1;
+
+               mdev->profile.prof[i].rx_ring_num =
+                       rounddown_pow_of_two(num_of_eqs);
+       }
+}
+
 int mlx4_en_create_rx_ring(struct mlx4_en_priv *priv,
                           struct mlx4_en_rx_ring **pring,
                           u32 size, u16 stride, int node)
index 9ca223bc90fc4fe7445a447828028b8a046f6fcb..3c25c7bf3dba6bac301f3207e41c01bf5f1b1954 100644 (file)
@@ -737,7 +737,7 @@ int mlx4_en_activate_tx_ring(struct mlx4_en_priv *priv,
                             int cq, int user_prio);
 void mlx4_en_deactivate_tx_ring(struct mlx4_en_priv *priv,
                                struct mlx4_en_tx_ring *ring);
-
+void mlx4_en_set_num_rx_rings(struct mlx4_en_dev *mdev);
 int mlx4_en_create_rx_ring(struct mlx4_en_priv *priv,
                           struct mlx4_en_rx_ring **pring,
                           u32 size, u16 stride, int node);