#include "linux/pci.h"
 #include "ena_devlink.h"
 
+static void ena_devlink_port_register(struct devlink *devlink)
+{
+       struct ena_adapter *adapter = ENA_DEVLINK_PRIV(devlink);
+       struct devlink_port_attrs attrs = {};
+
+       attrs.flavour = DEVLINK_PORT_FLAVOUR_PHYSICAL;
+       devlink_port_attrs_set(&adapter->devlink_port, &attrs);
+       devl_port_register(devlink, &adapter->devlink_port, 0);
+}
+
+static void ena_devlink_port_unregister(struct devlink *devlink)
+{
+       struct ena_adapter *adapter = ENA_DEVLINK_PRIV(devlink);
+
+       devl_port_unregister(&adapter->devlink_port);
+}
+
 static int ena_devlink_reload_down(struct devlink *devlink,
                                   bool netns_change,
                                   enum devlink_reload_action action,
                return -EOPNOTSUPP;
        }
 
+       ena_devlink_port_unregister(devlink);
+
        rtnl_lock();
        ena_destroy_device(adapter, false);
        rtnl_unlock();
 
        rtnl_unlock();
 
+       ena_devlink_port_register(devlink);
+
        if (!err)
                *actions_performed = BIT(DEVLINK_RELOAD_ACTION_DRIVER_REINIT);
 
 
 void ena_devlink_register(struct devlink *devlink, struct device *dev)
 {
-       devlink_register(devlink);
+       devl_lock(devlink);
+       ena_devlink_port_register(devlink);
+       devl_register(devlink);
+       devl_unlock(devlink);
 }
 
 void ena_devlink_unregister(struct devlink *devlink)
 {
-       devlink_unregister(devlink);
+       devl_lock(devlink);
+       ena_devlink_port_unregister(devlink);
+       devl_unregister(devlink);
+       devl_unlock(devlink);
 }