Skip to content

Commit 07c9f1e

Browse files
author
Saeed Mahameed
committed
net/mlx5e: NIC netdev init flow cleanup
Remove redundant call to unregister vport representor in mlx5e_add error flow. Hide the representor priv and eswitch internal structures from en_main.c as preparation step for downstream patches which would allow building the driver without support for representors and eswitch. Fixes: 6f08a22 ("net/mlx5e: Register/unregister vport representors on interface attach/detach") Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com>
1 parent 706b358 commit 07c9f1e

File tree

3 files changed

+20
-16
lines changed

3 files changed

+20
-16
lines changed

drivers/net/ethernet/mellanox/mlx5/core/en_main.c

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4428,32 +4428,27 @@ static void mlx5e_detach(struct mlx5_core_dev *mdev, void *vpriv)
44284428

44294429
static void *mlx5e_add(struct mlx5_core_dev *mdev)
44304430
{
4431-
struct mlx5_eswitch *esw = mdev->priv.eswitch;
4432-
int total_vfs = MLX5_TOTAL_VPORTS(mdev);
4433-
struct mlx5e_rep_priv *rpriv = NULL;
4431+
struct net_device *netdev;
4432+
void *rpriv = NULL;
44344433
void *priv;
4435-
int vport;
44364434
int err;
4437-
struct net_device *netdev;
44384435

44394436
err = mlx5e_check_required_hca_cap(mdev);
44404437
if (err)
44414438
return NULL;
44424439

44434440
if (MLX5_CAP_GEN(mdev, vport_group_manager)) {
4444-
rpriv = kzalloc(sizeof(*rpriv), GFP_KERNEL);
4441+
rpriv = mlx5e_alloc_nic_rep_priv(mdev);
44454442
if (!rpriv) {
4446-
mlx5_core_warn(mdev,
4447-
"Not creating net device, Failed to alloc rep priv data\n");
4443+
mlx5_core_warn(mdev, "Failed to alloc NIC rep priv data\n");
44484444
return NULL;
44494445
}
4450-
rpriv->rep = &esw->offloads.vport_reps[0];
44514446
}
44524447

44534448
netdev = mlx5e_create_netdev(mdev, &mlx5e_nic_profile, rpriv);
44544449
if (!netdev) {
44554450
mlx5_core_err(mdev, "mlx5e_create_netdev failed\n");
4456-
goto err_unregister_reps;
4451+
goto err_free_rpriv;
44574452
}
44584453

44594454
priv = netdev_priv(netdev);
@@ -4474,14 +4469,9 @@ static void *mlx5e_add(struct mlx5_core_dev *mdev)
44744469

44754470
err_detach:
44764471
mlx5e_detach(mdev, priv);
4477-
44784472
err_destroy_netdev:
44794473
mlx5e_destroy_netdev(priv);
4480-
4481-
err_unregister_reps:
4482-
for (vport = 1; vport < total_vfs; vport++)
4483-
mlx5_eswitch_unregister_vport_rep(esw, vport);
4484-
4474+
err_free_rpriv:
44854475
kfree(rpriv);
44864476
return NULL;
44874477
}

drivers/net/ethernet/mellanox/mlx5/core/en_rep.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1099,3 +1099,16 @@ void mlx5e_unregister_vport_reps(struct mlx5e_priv *priv)
10991099
mlx5e_rep_unregister_vf_vports(priv); /* VFs vports */
11001100
mlx5_eswitch_unregister_vport_rep(esw, 0); /* UPLINK PF*/
11011101
}
1102+
1103+
void *mlx5e_alloc_nic_rep_priv(struct mlx5_core_dev *mdev)
1104+
{
1105+
struct mlx5_eswitch *esw = mdev->priv.eswitch;
1106+
struct mlx5e_rep_priv *rpriv;
1107+
1108+
rpriv = kzalloc(sizeof(*rpriv), GFP_KERNEL);
1109+
if (!rpriv)
1110+
return NULL;
1111+
1112+
rpriv->rep = &esw->offloads.vport_reps[0];
1113+
return rpriv;
1114+
}

drivers/net/ethernet/mellanox/mlx5/core/en_rep.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ struct mlx5e_encap_entry {
123123
int encap_size;
124124
};
125125

126+
void *mlx5e_alloc_nic_rep_priv(struct mlx5_core_dev *mdev);
126127
void mlx5e_register_vport_reps(struct mlx5e_priv *priv);
127128
void mlx5e_unregister_vport_reps(struct mlx5e_priv *priv);
128129
bool mlx5e_is_uplink_rep(struct mlx5e_priv *priv);

0 commit comments

Comments
 (0)