if (err)
                goto reg_err;
 
-       err = devl_rate_leaf_create(dl_port, vport);
+       err = devl_rate_leaf_create(dl_port, vport, NULL);
        if (err)
                goto rate_err;
 
        if (err)
                return err;
 
-       err = devl_rate_leaf_create(dl_port, vport);
+       err = devl_rate_leaf_create(dl_port, vport, NULL);
        if (err)
                goto rate_err;
 
 
 
        if (nsim_dev_port_is_vf(nsim_dev_port)) {
                err = devl_rate_leaf_create(&nsim_dev_port->devlink_port,
-                                           nsim_dev_port);
+                                           nsim_dev_port, NULL);
                if (err)
                        goto err_nsim_destroy;
        }
 
 void devlink_port_attrs_pci_sf_set(struct devlink_port *devlink_port,
                                   u32 controller, u16 pf, u32 sf,
                                   bool external);
-int devl_rate_leaf_create(struct devlink_port *port, void *priv);
 struct devlink_rate *
 devl_rate_node_create(struct devlink *devlink, void *priv, char *node_name,
                      struct devlink_rate *parent);
+int
+devl_rate_leaf_create(struct devlink_port *devlink_port, void *priv,
+                     struct devlink_rate *parent);
 void devl_rate_leaf_destroy(struct devlink_port *devlink_port);
 void devl_rate_nodes_destroy(struct devlink *devlink);
 void devlink_port_linecard_set(struct devlink_port *devlink_port,
 
  * devl_rate_leaf_create - create devlink rate leaf
  * @devlink_port: devlink port object to create rate object on
  * @priv: driver private data
+ * @parent: parent devlink_rate struct
  *
  * Create devlink rate object of type leaf on provided @devlink_port.
  */
-int devl_rate_leaf_create(struct devlink_port *devlink_port, void *priv)
+int devl_rate_leaf_create(struct devlink_port *devlink_port, void *priv,
+                         struct devlink_rate *parent)
 {
        struct devlink *devlink = devlink_port->devlink;
        struct devlink_rate *devlink_rate;
        if (!devlink_rate)
                return -ENOMEM;
 
+       if (parent) {
+               devlink_rate->parent = parent;
+               refcount_inc(&devlink_rate->parent->refcnt);
+       }
+
        devlink_rate->type = DEVLINK_RATE_TYPE_LEAF;
        devlink_rate->devlink = devlink;
        devlink_rate->devlink_port = devlink_port;