{
        struct devlink_port_attrs *attrs = &devlink_port->attrs;
 
-       if (WARN_ON(devlink_port->registered))
-               return -EEXIST;
        devlink_port->attrs_set = true;
        attrs->flavour = flavour;
        if (attrs->switch_id.id_len) {
 {
        int ret;
 
+       if (WARN_ON(devlink_port->registered))
+               return;
        devlink_port->attrs = *attrs;
        ret = __devlink_port_attrs_set(devlink_port, attrs->flavour);
        if (ret)
        struct devlink_port_attrs *attrs = &devlink_port->attrs;
        int ret;
 
+       if (WARN_ON(devlink_port->registered))
+               return;
        ret = __devlink_port_attrs_set(devlink_port,
                                       DEVLINK_PORT_FLAVOUR_PCI_PF);
        if (ret)
        struct devlink_port_attrs *attrs = &devlink_port->attrs;
        int ret;
 
+       if (WARN_ON(devlink_port->registered))
+               return;
        ret = __devlink_port_attrs_set(devlink_port,
                                       DEVLINK_PORT_FLAVOUR_PCI_VF);
        if (ret)