if (ret)
                return ret;
 
-       devlink_port_type_eth_set(&port->dl_port, port->netdev);
        devlink_port_attrs_set(&port->dl_port, DEVLINK_PORT_FLAVOUR_PHYSICAL,
                               eth_port.label_port, eth_port.is_split,
                               eth_port.label_subport);
        devlink_port_unregister(&port->dl_port);
 }
 
+void nfp_devlink_port_type_eth_set(struct nfp_port *port)
+{
+       devlink_port_type_eth_set(&port->dl_port, port->netdev);
+}
+
+void nfp_devlink_port_type_clear(struct nfp_port *port)
+{
+       devlink_port_type_clear(&port->dl_port);
+}
+
 struct devlink *nfp_devlink_get_devlink(struct net_device *netdev)
 {
        struct nfp_app *app;
 
                err = nfp_devlink_port_register(pf->app, nn->port);
                if (err)
                        goto err_dfs_clean;
+               nfp_devlink_port_type_eth_set(nn->port);
        }
 
        nfp_net_info(nn);
        return 0;
 
 err_devlink_port_clean:
-       if (nn->port)
+       if (nn->port) {
+               nfp_devlink_port_type_clear(nn->port);
                nfp_devlink_port_unregister(nn->port);
+       }
 err_dfs_clean:
        nfp_net_debugfs_dir_clean(&nn->debugfs_dir);
        nfp_net_clean(nn);
 {
        if (nfp_net_is_data_vnic(nn))
                nfp_app_vnic_clean(pf->app, nn);
-       if (nn->port)
+       if (nn->port) {
+               nfp_devlink_port_type_clear(nn->port);
                nfp_devlink_port_unregister(nn->port);
+       }
        nfp_net_debugfs_dir_clean(&nn->debugfs_dir);
        nfp_net_clean(nn);
 }
 
 
 int nfp_devlink_port_register(struct nfp_app *app, struct nfp_port *port);
 void nfp_devlink_port_unregister(struct nfp_port *port);
+void nfp_devlink_port_type_eth_set(struct nfp_port *port);
+void nfp_devlink_port_type_clear(struct nfp_port *port);
 
 /**
  * Mac stats (0x0000 - 0x0200)