Merge https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next
[linux-2.6-microblaze.git] / drivers / net / ethernet / pensando / ionic / ionic_devlink.c
index b41301a..c7d0e19 100644 (file)
@@ -64,7 +64,7 @@ struct ionic *ionic_devlink_alloc(struct device *dev)
 {
        struct devlink *dl;
 
-       dl = devlink_alloc(&ionic_dl_ops, sizeof(struct ionic));
+       dl = devlink_alloc(&ionic_dl_ops, sizeof(struct ionic), dev);
 
        return devlink_priv(dl);
 }
@@ -82,7 +82,7 @@ int ionic_devlink_register(struct ionic *ionic)
        struct devlink_port_attrs attrs = {};
        int err;
 
-       err = devlink_register(dl, ionic->dev);
+       err = devlink_register(dl);
        if (err) {
                dev_warn(ionic->dev, "devlink_register failed: %d\n", err);
                return err;
@@ -91,20 +91,20 @@ int ionic_devlink_register(struct ionic *ionic)
        attrs.flavour = DEVLINK_PORT_FLAVOUR_PHYSICAL;
        devlink_port_attrs_set(&ionic->dl_port, &attrs);
        err = devlink_port_register(dl, &ionic->dl_port, 0);
-       if (err)
+       if (err) {
                dev_err(ionic->dev, "devlink_port_register failed: %d\n", err);
-       else
-               devlink_port_type_eth_set(&ionic->dl_port,
-                                         ionic->lif->netdev);
+               devlink_unregister(dl);
+               return err;
+       }
 
-       return err;
+       devlink_port_type_eth_set(&ionic->dl_port, ionic->lif->netdev);
+       return 0;
 }
 
 void ionic_devlink_unregister(struct ionic *ionic)
 {
        struct devlink *dl = priv_to_devlink(ionic);
 
-       if (ionic->dl_port.registered)
-               devlink_port_unregister(&ionic->dl_port);
+       devlink_port_unregister(&ionic->dl_port);
        devlink_unregister(dl);
 }