Thread (2 messages) 2 messages, 2 authors, 2026-03-04

Re: [PATCH] net/mlx5e: use flex array for rqns

From: Tariq Toukan <hidden>
Date: 2026-03-04 08:29:08
Also in: linux-rdma, lkml


On 04/03/2026 6:20, Rosen Penev wrote:
Simplifies allocation. Separate kcalloc and kfree not needed anymore.

Signed-off-by: Rosen Penev <redacted>
---
  drivers/net/ethernet/mellanox/mlx5/core/en/rx_res.c | 13 +++----------
  1 file changed, 3 insertions(+), 10 deletions(-)
This is not the typical structure that matches the usage of kvzalloc_flex().

I prefer keeping current code, being consistent with other dynamically 
allocated members like rss_vhca_ids.

quoted hunk ↗ jump to hunk
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/rx_res.c b/drivers/net/ethernet/mellanox/mlx5/core/en/rx_res.c
index 92974b11ec75..fc71dd72938c 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en/rx_res.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en/rx_res.c
@@ -16,7 +16,6 @@ struct mlx5e_rx_res {
  
  	struct mlx5e_rss *rss[MLX5E_MAX_NUM_RSS];
  	bool rss_active;
-	u32 *rss_rqns;
  	u32 *rss_vhca_ids;
  	unsigned int rss_nch;
  
@@ -29,6 +28,8 @@ struct mlx5e_rx_res {
  		struct mlx5e_rqt rqt;
  		struct mlx5e_tir tir;
  	} ptp;
+
+	u32 rss_rqns[];
  };
  
  /* API for rx_res_rss_* */
@@ -316,7 +317,6 @@ struct mlx5e_rss *mlx5e_rx_res_rss_get(struct mlx5e_rx_res *res, u32 rss_idx)
  static void mlx5e_rx_res_free(struct mlx5e_rx_res *res)
  {
  	kvfree(res->rss_vhca_ids);
-	kvfree(res->rss_rqns);
  	kvfree(res);
  }
  
@@ -325,20 +325,13 @@ static struct mlx5e_rx_res *mlx5e_rx_res_alloc(struct mlx5_core_dev *mdev, unsig
  {
  	struct mlx5e_rx_res *rx_res;
  
-	rx_res = kvzalloc_obj(*rx_res);
+	rx_res = kvzalloc_flex(*rx_res, rss_rqns, max_nch, GFP_KERNEL);
  	if (!rx_res)
  		return NULL;
  
-	rx_res->rss_rqns = kvcalloc(max_nch, sizeof(*rx_res->rss_rqns), GFP_KERNEL);
-	if (!rx_res->rss_rqns) {
-		kvfree(rx_res);
-		return NULL;
-	}
-
  	if (multi_vhca) {
  		rx_res->rss_vhca_ids = kvcalloc(max_nch, sizeof(*rx_res->rss_vhca_ids), GFP_KERNEL);
  		if (!rx_res->rss_vhca_ids) {
-			kvfree(rx_res->rss_rqns);
  			kvfree(rx_res);
  			return NULL;
  		}
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help