diff --git a/net/neuron/channel/ch_haven_recv.c b/net/neuron/channel/ch_haven_recv.c index b58af7a8e860..ae50c5a72aa6 100644 --- a/net/neuron/channel/ch_haven_recv.c +++ b/net/neuron/channel/ch_haven_recv.c @@ -365,6 +365,12 @@ static int channel_hh_probe(struct neuron_channel *cdev) return -ENOMEM; priv->dev = cdev; + ret = of_property_read_u32(node, "haven-label", &priv->haven_label); + if (ret) { + dev_err(dev, "failed to read label info %d\n", ret); + return ret; + } + ret = channel_hh_map_memory(priv, dev); if (ret) { dev_err(dev, "failed to map memory %d\n", ret); @@ -372,12 +378,7 @@ static int channel_hh_probe(struct neuron_channel *cdev) } /* Get outgoing haven doorbell information */ - ret = of_property_read_u32(node, "haven-label", &dbl_label); - if (ret) { - dev_err(dev, "failed to read label info %d\n", ret); - goto fail_tx_dbl; - } - + dbl_label = priv->haven_label; priv->tx_dbl = hh_dbl_tx_register(dbl_label); if (IS_ERR_OR_NULL(priv->tx_dbl)) { ret = PTR_ERR(priv->tx_dbl); diff --git a/net/neuron/channel/ch_haven_send.c b/net/neuron/channel/ch_haven_send.c index 1fb4b41e690f..4b0c2d44621c 100644 --- a/net/neuron/channel/ch_haven_send.c +++ b/net/neuron/channel/ch_haven_send.c @@ -350,17 +350,18 @@ static int channel_hh_probe(struct neuron_channel *cdev) return -ENOMEM; priv->dev = cdev; + ret = of_property_read_u32(node, "haven-label", &priv->haven_label); + if (ret) { + dev_err(dev, "failed to read label info %d\n", ret); + return ret; + } + ret = channel_hh_map_memory(priv, dev); if (ret) return ret; /* Get outgoing haven doorbell information */ - ret = of_property_read_u32(node, "haven-label", &dbl_label); - if (ret) { - dev_err(dev, "failed to read label info %d\n", ret); - goto fail_tx_dbl; - } - + dbl_label = priv->haven_label; priv->tx_dbl = hh_dbl_tx_register(dbl_label); if (IS_ERR_OR_NULL(priv->tx_dbl)) { ret = PTR_ERR(priv->tx_dbl); diff --git a/net/neuron/channel/ch_mq_shmem_common.h b/net/neuron/channel/ch_mq_shmem_common.h index b4b163b237cc..10f3381ce590 100644 --- a/net/neuron/channel/ch_mq_shmem_common.h +++ b/net/neuron/channel/ch_mq_shmem_common.h @@ -78,6 +78,8 @@ struct neuron_mq_data_priv { u32 interrupt_counter; /* name of peer vm */ u32 peer_name; + /* label to get haven resources like doorbell and shm */ + u32 haven_label; /* haven tx doorbell descriptor */ void *tx_dbl; /* haven rx doorbell descriptor */