On 02/02/2023 11:14, alejandro.lucero-palau@xxxxxxx wrote: > From: Alejandro Lucero <alejandro.lucero-palau@xxxxxxx> > > Using the data when enumerating mports, create devlink ports just before > netdevs are registered and remove those devlink ports after netdev has > been unregistered. > > Signed-off-by: Alejandro Lucero <alejandro.lucero-palau@xxxxxxx> ... > @@ -297,6 +298,7 @@ int efx_ef100_vfrep_create(struct efx_nic *efx, unsigned int i) > i, rc); > goto fail1; > } > + ef100_rep_set_devlink_port(efv); > rc = register_netdev(efv->net_dev); > if (rc) { > pci_err(efx->pci_dev, > @@ -308,6 +310,7 @@ int efx_ef100_vfrep_create(struct efx_nic *efx, unsigned int i) > efv->net_dev->name); > return 0; > fail2: > + ef100_rep_unset_devlink_port(efv); > efx_ef100_deconfigure_rep(efv); > fail1: > efx_ef100_rep_destroy_netdev(efv); > @@ -323,6 +326,7 @@ void efx_ef100_vfrep_destroy(struct efx_nic *efx, struct efx_rep *efv) > return; > netif_dbg(efx, drv, rep_dev, "Removing VF representor\n"); > unregister_netdev(rep_dev); > + ef100_rep_unset_devlink_port(efv); > efx_ef100_deconfigure_rep(efv); > efx_ef100_rep_destroy_netdev(efv); > } Would it make sense to move these calls into efx_ef100_[de]configure_rep()? It's responsible for other MAE/m-port related stuff (and is also common with remote reps when they arrive).