RE: [PATCH for-next 03/10] IB/hns: Add & initialize "node_guid" parameter for RDMA CM

From: Salil Mehta
Date: Mon Sep 12 2016 - 11:51:33 EST




> -----Original Message-----
> From: Leon Romanovsky [mailto:leon@xxxxxxxxxx]
> Sent: Monday, September 12, 2016 1:36 PM
> To: Salil Mehta
> Cc: dledford@xxxxxxxxxx; Huwei (Xavier); oulijun; Zhuangyuzeng (Yisen);
> mehta.salil.lnk@xxxxxxxxx; linux-rdma@xxxxxxxxxxxxxxx; linux-
> kernel@xxxxxxxxxxxxxxx; Linuxarm
> Subject: Re: [PATCH for-next 03/10] IB/hns: Add & initialize
> "node_guid" parameter for RDMA CM
>
> On Fri, Sep 02, 2016 at 05:37:18AM +0800, Salil Mehta wrote:
> > From: Lijun Ou <oulijun@xxxxxxxxxx>
> >
> > According to the Infiniband spec, NodeGUID uniquely identifies a
> > node. This must be initialized to some unique value. This patch
> > adds the support to the HNS RoCE driver to fetch the NodeGUID
> > value from DT or ACPI and then use this value to initialize the
> > node_guid parameter of IB device. This value shall be used by
> > RDMA CM.
> >
> > Signed-off-by: Lijun Ou <oulijun@xxxxxxxxxx>
> > Reviewed-by: Wei Hu <xavier.huwei@xxxxxxxxxx>
> > Signed-off-by: Salil Mehta <salil.mehta@xxxxxxxxxx>
> > ---
> > drivers/infiniband/hw/hns/hns_roce_device.h | 1 +
> > drivers/infiniband/hw/hns/hns_roce_main.c | 7 +++++++
> > 2 files changed, 8 insertions(+)
> >
> > diff --git a/drivers/infiniband/hw/hns/hns_roce_device.h
> b/drivers/infiniband/hw/hns/hns_roce_device.h
> > index ea73580..e943b98 100644
> > --- a/drivers/infiniband/hw/hns/hns_roce_device.h
> > +++ b/drivers/infiniband/hw/hns/hns_roce_device.h
> > @@ -74,6 +74,7 @@
> > #define MR_TYPE_DMA 0x03
> >
> > #define PKEY_ID 0xffff
> > +#define GUID_LEN 8
> > #define NODE_DESC_SIZE 64
> >
> > #define SERV_TYPE_RC 0
> > diff --git a/drivers/infiniband/hw/hns/hns_roce_main.c
> b/drivers/infiniband/hw/hns/hns_roce_main.c
> > index 4e93120..ec27f0c 100644
> > --- a/drivers/infiniband/hw/hns/hns_roce_main.c
> > +++ b/drivers/infiniband/hw/hns/hns_roce_main.c
> > @@ -812,6 +812,13 @@ static int hns_roce_get_cfg(struct hns_roce_dev
> *hr_dev)
> > if (IS_ERR(hr_dev->reg_base))
> > return PTR_ERR(hr_dev->reg_base);
> >
> > + /* read the node_guid of IB device from the DT or ACPI */
> > + ret = device_property_read_u8_array(dev, "node-guid",
> > + (u8 *)&hr_dev->ib_dev.node_guid,
> > + GUID_LEN);
> > + if (ret)
> > + dev_err(dev, "couldn't get node_guid from DT or ACPI!\n");
>
> Is it error? If yes, you need to implement proper error folding. If
> not,
> this error shouldn't be error.
Yes, that's correct. This is a merge error. Thanks for catching this.
Above statement should have been like below:

/* read the node_guid of IB device from the DT or ACPI */
ret = device_property_read_u8_array(dev, "node-guid",
(u8 *)&hr_dev->ib_dev.node_guid,
GUID_LEN);
if (ret) {
dev_err(dev, "couldn't get node_guid from DT or ACPI!\n");
return ret;
}

Will fix this. Thanks!

Best regards
Salil Mehta
>
> > +
> > /* get the RoCE associated ethernet ports or netdevices */
> > for (i = 0; i < HNS_ROCE_MAX_PORTS; i++) {
> > if (dev_of_node(dev)) {
> > --
> > 1.7.9.5
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-rdma"
> in
> > the body of a message to majordomo@xxxxxxxxxxxxxxx
> > More majordomo info at http://vger.kernel.org/majordomo-info.html