diff mbox

[v2,02/17] IB/Verbs: Implement raw management helpers

Message ID 5523CDA7.8090902@profitbricks.com
State Not Applicable, archived
Delegated to: David Miller
Headers show

Commit Message

Michael Wang April 7, 2015, 12:29 p.m. UTC
Add raw helpers:
	rdma_transport_ib
	rdma_transport_iboe
	rdma_transport_iwarp
	rdma_ib_mgmt
To help us checking transport type.

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

Sean Hefty April 7, 2015, 9:25 p.m. UTC | #1
> +static inline int rdma_transport_ib(struct ib_device *device, u8

> port_num)

> +{

> +	return device->query_transport(device, port_num)

> +			== RDMA_TRANSPORT_IB;

> +}

> +

> +static inline int rdma_transport_iboe(struct ib_device *device, u8

> port_num)

> +{

> +	return device->query_transport(device, port_num)

> +			== RDMA_TRANSPORT_IBOE;

> +}


We need to do something with the function names to make their use more obvious.  Both IB and IBoE have transport IB.  I think Jason suggested rdma_tech_ib / rdma_tech_iboe.

Regarding transport types, I believe that usnic supports 2 different transports.  Although usnic isn't used by anything else in the core layer, we should probably be able to handle a device that supports multiple protocols.  I'm not sure what the 'transport' should be for iWarp, since iWarp is layered over TCP.  But that may just mean that the term transport isn't great.

- Sean
Michael Wang April 8, 2015, 8:41 a.m. UTC | #2
On 04/07/2015 11:25 PM, Hefty, Sean wrote:
>> +static inline int rdma_transport_ib(struct ib_device *device, u8
>> port_num)
>> +{
>> +	return device->query_transport(device, port_num)
>> +			== RDMA_TRANSPORT_IB;
>> +}
>> +
>> +static inline int rdma_transport_iboe(struct ib_device *device, u8
>> port_num)
>> +{
>> +	return device->query_transport(device, port_num)
>> +			== RDMA_TRANSPORT_IBOE;
>> +}
> 
> We need to do something with the function names to make their use more obvious.  Both IB and IBoE have transport IB.  I think Jason suggested rdma_tech_ib / rdma_tech_iboe.
> 
> Regarding transport types, I believe that usnic supports 2 different transports.  Although usnic isn't used by anything else in the core layer, we should probably be able to handle a device that supports multiple protocols.  I'm not sure what the 'transport' should be for iWarp, since iWarp is layered over TCP.  But that may just mean that the term transport isn't great.

Agree, it do confusing folks, I will use tech instead in next version :-)

Regards,
Michael Wang

> 
> - Sean
> 
--
To unsubscribe from this list: send the line "unsubscribe netdev" 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..780b3b7 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_transport_ib(struct ib_device *device, u8 port_num)
+{
+	return device->query_transport(device, port_num)
+			== RDMA_TRANSPORT_IB;
+}
+
+static inline int rdma_transport_iboe(struct ib_device *device, u8 port_num)
+{
+	return device->query_transport(device, port_num)
+			== RDMA_TRANSPORT_IBOE;
+}
+
+static inline int rdma_transport_iwarp(struct ib_device *device, u8 port_num)
+{
+	return device->query_transport(device, port_num)
+			== RDMA_TRANSPORT_IWARP;
+}
+
+static inline int rdma_ib_mgmt(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);