ice: reorder PF/representor devlink port register/unregister flows
Make sure that netdevice is registered/unregistered while devlink port is registered. Signed-off-by: Jiri Pirko <jiri@nvidia.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
dfe6094914
commit
a286ba7387
@ -2988,9 +2988,6 @@ int ice_vsi_release(struct ice_vsi *vsi)
|
||||
clear_bit(ICE_VSI_NETDEV_REGISTERED, vsi->state);
|
||||
}
|
||||
|
||||
if (vsi->type == ICE_VSI_PF)
|
||||
ice_devlink_destroy_pf_port(pf);
|
||||
|
||||
if (test_bit(ICE_FLAG_RSS_ENA, pf->flags))
|
||||
ice_rss_clean(vsi);
|
||||
|
||||
@ -3048,6 +3045,9 @@ int ice_vsi_release(struct ice_vsi *vsi)
|
||||
}
|
||||
}
|
||||
|
||||
if (vsi->type == ICE_VSI_PF)
|
||||
ice_devlink_destroy_pf_port(pf);
|
||||
|
||||
if (vsi->type == ICE_VSI_VF &&
|
||||
vsi->agg_node && vsi->agg_node->valid)
|
||||
vsi->agg_node->num_vsis--;
|
||||
|
@ -4599,6 +4599,10 @@ static int ice_register_netdev(struct ice_pf *pf)
|
||||
if (!vsi || !vsi->netdev)
|
||||
return -EIO;
|
||||
|
||||
err = ice_devlink_create_pf_port(pf);
|
||||
if (err)
|
||||
goto err_devlink_create;
|
||||
|
||||
err = register_netdev(vsi->netdev);
|
||||
if (err)
|
||||
goto err_register_netdev;
|
||||
@ -4606,17 +4610,13 @@ static int ice_register_netdev(struct ice_pf *pf)
|
||||
set_bit(ICE_VSI_NETDEV_REGISTERED, vsi->state);
|
||||
netif_carrier_off(vsi->netdev);
|
||||
netif_tx_stop_all_queues(vsi->netdev);
|
||||
err = ice_devlink_create_pf_port(pf);
|
||||
if (err)
|
||||
goto err_devlink_create;
|
||||
|
||||
devlink_port_type_eth_set(&pf->devlink_port, vsi->netdev);
|
||||
|
||||
return 0;
|
||||
err_devlink_create:
|
||||
unregister_netdev(vsi->netdev);
|
||||
clear_bit(ICE_VSI_NETDEV_REGISTERED, vsi->state);
|
||||
err_register_netdev:
|
||||
ice_devlink_destroy_pf_port(pf);
|
||||
err_devlink_create:
|
||||
free_netdev(vsi->netdev);
|
||||
vsi->netdev = NULL;
|
||||
clear_bit(ICE_VSI_NETDEV_ALLOCD, vsi->state);
|
||||
|
@ -377,10 +377,10 @@ static void ice_repr_rem(struct ice_vf *vf)
|
||||
if (!vf->repr)
|
||||
return;
|
||||
|
||||
ice_devlink_destroy_vf_port(vf);
|
||||
kfree(vf->repr->q_vector);
|
||||
vf->repr->q_vector = NULL;
|
||||
unregister_netdev(vf->repr->netdev);
|
||||
ice_devlink_destroy_vf_port(vf);
|
||||
free_netdev(vf->repr->netdev);
|
||||
vf->repr->netdev = NULL;
|
||||
#ifdef CONFIG_ICE_SWITCHDEV
|
||||
|
Loading…
Reference in New Issue
Block a user