diff mbox

[v6,02/26] IB/Verbs: Implement raw management helpers

Message ID 1429878230-11749-3-git-send-email-yun.wang@profitbricks.com (mailing list archive)
State Rejected
Headers show

Commit Message

Michael Wang April 24, 2015, 12:23 p.m. UTC
Add raw helpers:
	rdma_tech_ib
	rdma_tech_iboe
	rdma_tech_iwarp
	rdma_ib_or_iboe (transition, clean up later)
To help us detect which technology the port supported.

Cc: Hal Rosenstock <hal@dev.mellanox.co.il>
Cc: Steve Wise <swise@opengridcomputing.com>
Cc: Tom Talpey <tom@talpey.com>
Cc: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Cc: Doug Ledford <dledford@redhat.com>
Cc: Ira Weiny <ira.weiny@intel.com>
Cc: Sean Hefty <sean.hefty@intel.com>
Signed-off-by: Michael Wang <yun.wang@profitbricks.com>
---
 include/rdma/ib_verbs.h | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

Comments

Liran Liss April 24, 2015, 3:15 p.m. UTC | #1
> From: linux-rdma-owner@vger.kernel.org [mailto:linux-rdma-
> 
> Add raw helpers:
> 	rdma_tech_ib
> 	rdma_tech_iboe
> 	rdma_tech_iwarp
> 	rdma_ib_or_iboe (transition, clean up later) To help us detect which
> technology the port supported.
> 

Replace "rdma_tech_*" with "rdma_protocol_*".

> Cc: Hal Rosenstock <hal@dev.mellanox.co.il>
> Cc: Steve Wise <swise@opengridcomputing.com>
> Cc: Tom Talpey <tom@talpey.com>
> Cc: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
> Cc: Doug Ledford <dledford@redhat.com>
> Cc: Ira Weiny <ira.weiny@intel.com>
> Cc: Sean Hefty <sean.hefty@intel.com>
> Signed-off-by: Michael Wang <yun.wang@profitbricks.com>
> ---
>  include/rdma/ib_verbs.h | 25 +++++++++++++++++++++++++
>  1 file changed, 25 insertions(+)
> 
> diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h index
> d54f91e..a12e876 100644
> --- a/include/rdma/ib_verbs.h
> +++ b/include/rdma/ib_verbs.h
> @@ -1748,6 +1748,31 @@ int ib_query_port(struct ib_device *device,  enum
> rdma_link_layer rdma_port_get_link_layer(struct ib_device *device,
>  					       u8 port_num);
> 
> +static inline int rdma_tech_ib(struct ib_device *device, u8 port_num) {
> +	return device->query_transport(device, port_num)
> +			== RDMA_TRANSPORT_IB;
> +}
> +
> +static inline int rdma_tech_iboe(struct ib_device *device, u8 port_num)
> +{
> +	return device->query_transport(device, port_num)
> +			== RDMA_TRANSPORT_IBOE;

Remove RDMA_TRANSPORT_IBOE.
In the current code, the test should be: (IB transport && Ethernet link layer).

We can later consider each provider declaring the transports directly.

> +}
> +
> +static inline int rdma_tech_iwarp(struct ib_device *device, u8
> +port_num) {
> +	return device->query_transport(device, port_num)
> +			== RDMA_TRANSPORT_IWARP;
> +}
> +
> +static inline int rdma_ib_or_iboe(struct ib_device *device, u8
> +port_num) {
> +	enum rdma_transport_type tp = device->query_transport(device,
> +port_num);
> +
> +	return (tp == RDMA_TRANSPORT_IB || tp ==
> RDMA_TRANSPORT_IBOE); }

Remove RDMA_TRANSPORT_IBOE.
Just test against RDMA_TRANSPORT_IB.

> +
>  int ib_query_gid(struct ib_device *device,
>  		 u8 port_num, int index, union ib_gid *gid);
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jason Gunthorpe April 24, 2015, 4:29 p.m. UTC | #2
On Fri, Apr 24, 2015 at 03:15:54PM +0000, Liran Liss wrote:
> > From: linux-rdma-owner@vger.kernel.org [mailto:linux-rdma-

> > +static inline int rdma_tech_iboe(struct ib_device *device, u8 port_num)
> > +{
> > +	return device->query_transport(device, port_num)
> > +			== RDMA_TRANSPORT_IBOE;
> 
> Remove RDMA_TRANSPORT_IBOE.
> In the current code, the test should be: (IB transport && Ethernet link layer).

No, if this rmda_tech stuff is to reflect the specification the port
implements, then RoCEE is a valid specification (IBA Annex A16), as it
RoCEEv2 (A17).

This patch set is trying to drop then link layer concept entirely.

Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Michael Wang April 27, 2015, 7:41 a.m. UTC | #3
On 04/24/2015 06:29 PM, Jason Gunthorpe wrote:
> On Fri, Apr 24, 2015 at 03:15:54PM +0000, Liran Liss wrote:
>>> From: linux-rdma-owner@vger.kernel.org [mailto:linux-rdma-
> 
>>> +static inline int rdma_tech_iboe(struct ib_device *device, u8 port_num)
>>> +{
>>> +	return device->query_transport(device, port_num)
>>> +			== RDMA_TRANSPORT_IBOE;
>>
>> Remove RDMA_TRANSPORT_IBOE.
>> In the current code, the test should be: (IB transport && Ethernet link layer).
> 
> No, if this rmda_tech stuff is to reflect the specification the port
> implements, then RoCEE is a valid specification (IBA Annex A16), as it
> RoCEEv2 (A17).
> 
> This patch set is trying to drop then link layer concept entirely.

I think a new enum on protocol could help solve the conflict in here, we
can still get rid of the link layer meanwhile leave the legacy
transport type alone :-)

Regards,
Michael Wang

> 
> Jason
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index d54f91e..a12e876 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -1748,6 +1748,31 @@  int ib_query_port(struct ib_device *device,
 enum rdma_link_layer rdma_port_get_link_layer(struct ib_device *device,
 					       u8 port_num);
 
+static inline int rdma_tech_ib(struct ib_device *device, u8 port_num)
+{
+	return device->query_transport(device, port_num)
+			== RDMA_TRANSPORT_IB;
+}
+
+static inline int rdma_tech_iboe(struct ib_device *device, u8 port_num)
+{
+	return device->query_transport(device, port_num)
+			== RDMA_TRANSPORT_IBOE;
+}
+
+static inline int rdma_tech_iwarp(struct ib_device *device, u8 port_num)
+{
+	return device->query_transport(device, port_num)
+			== RDMA_TRANSPORT_IWARP;
+}
+
+static inline int rdma_ib_or_iboe(struct ib_device *device, u8 port_num)
+{
+	enum rdma_transport_type tp = device->query_transport(device, port_num);
+
+	return (tp == RDMA_TRANSPORT_IB || tp == RDMA_TRANSPORT_IBOE);
+}
+
 int ib_query_gid(struct ib_device *device,
 		 u8 port_num, int index, union ib_gid *gid);