Skip to content

Commit

Permalink
Merge branch 'devlink-fix-order-of-port-and-netdev-register-in-drivers'
Browse files Browse the repository at this point in the history
Jiri Pirko says:

====================
devlink: fix order of port and netdev register in drivers

Some of the drivers use wrong order in registering devlink port and
netdev, registering netdev first. That was not intended as the devlink
port is some sort of parent for the netdev. Fix the ordering.

Note that the follow-up patchset is going to make this ordering
mandatory.
====================

Link: https://lore.kernel.org/r/20220926110938.2800005-1-jiri@resnulli.us
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
  • Loading branch information
Jakub Kicinski committed Sep 27, 2022
2 parents 73dfe93 + 1fd7c08 commit 9257f69
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 19 deletions.
2 changes: 1 addition & 1 deletion drivers/net/ethernet/fungible/funeth/funeth_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1829,8 +1829,8 @@ static void fun_destroy_netdev(struct net_device *netdev)

fp = netdev_priv(netdev);
devlink_port_type_clear(&fp->dl_port);
devlink_port_unregister(&fp->dl_port);
unregister_netdev(netdev);
devlink_port_unregister(&fp->dl_port);
fun_ktls_cleanup(fp);
fun_free_stats_area(fp);
fun_free_rss(fp);
Expand Down
6 changes: 3 additions & 3 deletions drivers/net/ethernet/intel/ice/ice_lib.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down Expand Up @@ -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--;
Expand Down
12 changes: 6 additions & 6 deletions drivers/net/ethernet/intel/ice/ice_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -4599,24 +4599,24 @@ 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;

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);
Expand Down
2 changes: 1 addition & 1 deletion drivers/net/ethernet/intel/ice/ice_repr.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
16 changes: 8 additions & 8 deletions drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -320,25 +320,25 @@ static int ionic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
dev_err(dev, "Cannot enable existing VFs: %d\n", err);
}

err = ionic_lif_register(ionic->lif);
err = ionic_devlink_register(ionic);
if (err) {
dev_err(dev, "Cannot register LIF: %d, aborting\n", err);
dev_err(dev, "Cannot register devlink: %d\n", err);
goto err_out_deinit_lifs;
}

err = ionic_devlink_register(ionic);
err = ionic_lif_register(ionic->lif);
if (err) {
dev_err(dev, "Cannot register devlink: %d\n", err);
goto err_out_deregister_lifs;
dev_err(dev, "Cannot register LIF: %d, aborting\n", err);
goto err_out_deregister_devlink;
}

mod_timer(&ionic->watchdog_timer,
round_jiffies(jiffies + ionic->watchdog_period));

return 0;

err_out_deregister_lifs:
ionic_lif_unregister(ionic->lif);
err_out_deregister_devlink:
ionic_devlink_unregister(ionic);
err_out_deinit_lifs:
ionic_vf_dealloc(ionic);
ionic_lif_deinit(ionic->lif);
Expand Down Expand Up @@ -380,8 +380,8 @@ static void ionic_remove(struct pci_dev *pdev)
del_timer_sync(&ionic->watchdog_timer);

if (ionic->lif) {
ionic_devlink_unregister(ionic);
ionic_lif_unregister(ionic->lif);
ionic_devlink_unregister(ionic);
ionic_lif_deinit(ionic->lif);
ionic_lif_free(ionic->lif);
ionic->lif = NULL;
Expand Down

0 comments on commit 9257f69

Please sign in to comment.