RE: [PATCH v3 25/28] IB/Verbs: Use management helper cap_af_ib()

From: Hefty, Sean
Date: Thu Apr 16 2015 - 11:12:24 EST


> >> diff --git a/drivers/infiniband/core/cma.c
> b/drivers/infiniband/core/cma.c
> >> index 65e41f4..7f5815d 100644
> >> --- a/drivers/infiniband/core/cma.c
> >> +++ b/drivers/infiniband/core/cma.c
> >> @@ -470,7 +470,7 @@ static int cma_resolve_ib_dev(struct
> rdma_id_private *id_priv)
> >>
> >> list_for_each_entry(cur_dev, &dev_list, list) {
> >> for (p = 1; p <= cur_dev->device->phys_port_cnt; ++p) {
> >> - if (!rdma_ib_or_iboe(cur_dev->device, p))
> >> + if (!cap_af_ib(cur_dev->device, p))
> >> continue;
> >>
> >> if (ib_find_cached_pkey(cur_dev->device, p,
> pkey, &index))
> >> diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
> >> index 29ddd14..dfe33f3 100644
> >> --- a/include/rdma/ib_verbs.h
> >> +++ b/include/rdma/ib_verbs.h
> >> @@ -1879,6 +1879,21 @@ static inline int cap_ipoib(struct ib_device
> *device, u8 port_num)
> >> }
> >>
> >> /**
> >> + * cap_af_ib - Check if the port of device has the capability
> >> + * Native Infiniband Address.
> >> + *
> >> + * @device: Device to be checked
> >> + * @port_num: Port number of the device
> >> + *
> >> + * Return 0 when port of the device don't support
> >> + * Native Infiniband Address.
> >> + */
> >> +static inline int cap_af_ib(struct ib_device *device, u8 port_num)
> >> +{
> >> + return rdma_ib_or_iboe(device, port_num);
> >> +}
> >
> > Sean, can you please put a precise writeup what does it take to
> > support AF_IB... I am a bit
> > confused here and wasn't sure if this can be supported with RoCE.
>
> I think this means IB GID addressing is checked (Native Infiniband
> Address) and not AF_IB (which is socket address/protocol family like
> INET and INET6).
>
> I think this naming is confusing and maybe cap_ib_gid is better ?

I need to trace back through the code to see where this is used, but I thought the check was determining if an address conveyed using sockaddr_ib applied to the port. Sockaddr_ib was intended to target IB-classic specifically. It should apply to RoCE/IBoE as well. I don't think it applies to RoCEv2/IBoUDP without a translation.
N‹§²æ¸›yú²X¬¶ÇvØ–)Þ{.nlj·¥Š{±‘êX§¶›¡Ü}©ž²ÆzÚj:+v‰¨¾«‘êZ+€Êzf£¢·hšˆ§~†­†Ûÿû®w¥¢¸?™¨è&¢)ßf”ùy§m…á«a¶Úÿ 0¶ìå