All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v8 00/23] IB/Verbs: IB Management Helpers
@ 2015-05-05 12:50 ` Michael Wang
  0 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Since v7:
  * Thanks to Doug, Ira, Devesh for the testing :-)
  * Thanks for the comments from or, Doug, Ira, Jason :-)
    Please remind me if anything missed :-P
  * Use rdma_cap_XX() instead of cap_XX() for readability
  * Remove CC list in git log for maintainability
  * Use bool as return value
  * Updated github repository to v8

There are plenty of lengthy code to check the transport type of IB device,
or the link layer type of it's port, but actually we are just speculating
whether a particular management/feature is supported by the device/port.

Thus instead of inferring, we should have our own mechanism for IB management
capability/protocol/feature checking, several proposals below.

This patch set will introduce query_protocol() to check management requirement
instead of inferring from transport and link layer respectively, along with
the new enum on protocol type.

Mapping List:
		node-type	link-layer	transport	protocol
nes		RNIC		ETH		IWARP		IWARP
amso1100	RNIC		ETH		IWARP		IWARP
cxgb3   	RNIC		ETH		IWARP		IWARP
cxgb4   	RNIC		ETH		IWARP		IWARP
usnic   	USNIC_UDP	ETH		USNIC_UDP	USNIC_UDP
ocrdma  	IB_CA		ETH		IB		IBOE
mlx4    	IB_CA		IB/ETH		IB		IB/IBOE
mlx5    	IB_CA		IB		IB		IB
ehca    	IB_CA		IB		IB		IB
ipath   	IB_CA		IB		IB		IB
mthca   	IB_CA		IB		IB		IB
qib     	IB_CA		IB		IB		IB

For example:
	if (transport == IB) && (link-layer == ETH)
will now become:
	if (query_protocol() == IBOE)

Thus we will be able to get rid of the respective transport and link-layer
checking, and it will help us to add new protocol/Technology (like OPA) more
easier, also with the introduced management helpers, IB management logical
will be more clear and easier for extending.

Highlights:
    The long CC list in each patches was complained consider about the
    maintainability, it was suggested folks to provide their reviewed-by or
    Acked-by instead, so for those who used to be on the CC list, please
    provide your signature voluntarily :-)

    The 'mgmt-helpers' branch of 'git-9UaJU3cA/F/QT0dZR+AlfA@public.gmane.org:ywang-pb/infiniband-wy.git'
    contain this series based on the latest 'infiniband/for-next'

    Patch 1#~14# included all the logical reform, 15#~23# introduced the
    management helpers.

    Doug suggested the bitmask mechanism:
	https://www.mail-archive.com/linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg23765.html
    which could be the plan for future reforming, we prefer that to be another
    series which focus on semantic and performance.

    This patch-set is somewhat 'bloated' now and it may be a good timing for
    staging, I'd like to suggest we focus on improving existed helpers and push
    all the further reforms into next series ;-)

Proposals:
    Sean:
	https://www.mail-archive.com/linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg23339.html
    Doug:
	https://www.mail-archive.com/linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg23418.html
	https://www.mail-archive.com/linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg23765.html
    Jason:
	https://www.mail-archive.com/linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg23425.html

Michael Wang (23):
  IB/Verbs: Implement new callback query_protocol()
  IB/Verbs: Implement raw management helpers
  IB/Verbs: Reform IB-core mad/agent/user_mad
  IB/Verbs: Reform IB-core cm
  IB/Verbs: Reform IB-core sa_query
  IB/Verbs: Reform IB-core multicast
  IB/Verbs: Reform IB-ulp ipoib
  IB/Verbs: Reform IB-ulp xprtrdma
  IB/Verbs: Reform IB-core verbs
  IB/Verbs: Reform cm related part in IB-core cma/ucm
  IB/Verbs: Reform route related part in IB-core cma
  IB/Verbs: Reform mcast related part in IB-core cma
  IB/Verbs: Reform cma_acquire_dev()
  IB/Verbs: Reform rest part in IB-core cma
  IB/Verbs: Use management helper rdma_cap_ib_mad()
  IB/Verbs: Use management helper rdma_cap_ib_smi()
  IB/Verbs: Use management helper rdma_cap_ib_cm()
  IB/Verbs: Use management helper rdma_cap_iw_cm()
  IB/Verbs: Use management helper rdma_cap_ib_sa()
  IB/Verbs: Use management helper rdma_cap_ib_mcast()
  IB/Verbs: Use management helper rdma_cap_read_multi_sge()
  IB/Verbs: Use management helper rdma_cap_af_ib()
  IB/Verbs: Use management helper rdma_cap_eth_ah()

 drivers/infiniband/core/agent.c              |   2 +-
 drivers/infiniband/core/cm.c                 |  20 ++-
 drivers/infiniband/core/cma.c                | 257 +++++++++++----------------
 drivers/infiniband/core/device.c             |   1 +
 drivers/infiniband/core/mad.c                |  43 +++--
 drivers/infiniband/core/multicast.c          |  12 +-
 drivers/infiniband/core/sa_query.c           |  30 ++--
 drivers/infiniband/core/ucm.c                |   3 +-
 drivers/infiniband/core/ucma.c               |  25 +--
 drivers/infiniband/core/user_mad.c           |  26 ++-
 drivers/infiniband/core/verbs.c              |   6 +-
 drivers/infiniband/hw/amso1100/c2_provider.c |   7 +
 drivers/infiniband/hw/cxgb3/iwch_provider.c  |   7 +
 drivers/infiniband/hw/cxgb4/provider.c       |   7 +
 drivers/infiniband/hw/ehca/ehca_hca.c        |   6 +
 drivers/infiniband/hw/ehca/ehca_iverbs.h     |   3 +
 drivers/infiniband/hw/ehca/ehca_main.c       |   1 +
 drivers/infiniband/hw/ipath/ipath_verbs.c    |   7 +
 drivers/infiniband/hw/mlx4/main.c            |  10 ++
 drivers/infiniband/hw/mlx5/main.c            |   7 +
 drivers/infiniband/hw/mthca/mthca_provider.c |   7 +
 drivers/infiniband/hw/nes/nes_verbs.c        |   6 +
 drivers/infiniband/hw/ocrdma/ocrdma_main.c   |   1 +
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c  |   6 +
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.h  |   3 +
 drivers/infiniband/hw/qib/qib_verbs.c        |   7 +
 drivers/infiniband/hw/usnic/usnic_ib_main.c  |   1 +
 drivers/infiniband/hw/usnic/usnic_ib_verbs.c |   6 +
 drivers/infiniband/hw/usnic/usnic_ib_verbs.h |   2 +
 drivers/infiniband/ulp/ipoib/ipoib_main.c    |  15 +-
 include/rdma/ib_verbs.h                      | 167 +++++++++++++++++
 net/sunrpc/xprtrdma/svc_rdma_recvfrom.c      |   4 +-
 net/sunrpc/xprtrdma/svc_rdma_transport.c     |  45 ++---
 33 files changed, 477 insertions(+), 273 deletions(-)

-- 
2.1.0

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

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [PATCH v8 00/23] IB/Verbs: IB Management Helpers
@ 2015-05-05 12:50 ` Michael Wang
  0 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma, linux-kernel
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Since v7:
  * Thanks to Doug, Ira, Devesh for the testing :-)
  * Thanks for the comments from or, Doug, Ira, Jason :-)
    Please remind me if anything missed :-P
  * Use rdma_cap_XX() instead of cap_XX() for readability
  * Remove CC list in git log for maintainability
  * Use bool as return value
  * Updated github repository to v8

There are plenty of lengthy code to check the transport type of IB device,
or the link layer type of it's port, but actually we are just speculating
whether a particular management/feature is supported by the device/port.

Thus instead of inferring, we should have our own mechanism for IB management
capability/protocol/feature checking, several proposals below.

This patch set will introduce query_protocol() to check management requirement
instead of inferring from transport and link layer respectively, along with
the new enum on protocol type.

Mapping List:
		node-type	link-layer	transport	protocol
nes		RNIC		ETH		IWARP		IWARP
amso1100	RNIC		ETH		IWARP		IWARP
cxgb3   	RNIC		ETH		IWARP		IWARP
cxgb4   	RNIC		ETH		IWARP		IWARP
usnic   	USNIC_UDP	ETH		USNIC_UDP	USNIC_UDP
ocrdma  	IB_CA		ETH		IB		IBOE
mlx4    	IB_CA		IB/ETH		IB		IB/IBOE
mlx5    	IB_CA		IB		IB		IB
ehca    	IB_CA		IB		IB		IB
ipath   	IB_CA		IB		IB		IB
mthca   	IB_CA		IB		IB		IB
qib     	IB_CA		IB		IB		IB

For example:
	if (transport == IB) && (link-layer == ETH)
will now become:
	if (query_protocol() == IBOE)

Thus we will be able to get rid of the respective transport and link-layer
checking, and it will help us to add new protocol/Technology (like OPA) more
easier, also with the introduced management helpers, IB management logical
will be more clear and easier for extending.

Highlights:
    The long CC list in each patches was complained consider about the
    maintainability, it was suggested folks to provide their reviewed-by or
    Acked-by instead, so for those who used to be on the CC list, please
    provide your signature voluntarily :-)

    The 'mgmt-helpers' branch of 'git@github.com:ywang-pb/infiniband-wy.git'
    contain this series based on the latest 'infiniband/for-next'

    Patch 1#~14# included all the logical reform, 15#~23# introduced the
    management helpers.

    Doug suggested the bitmask mechanism:
	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23765.html
    which could be the plan for future reforming, we prefer that to be another
    series which focus on semantic and performance.

    This patch-set is somewhat 'bloated' now and it may be a good timing for
    staging, I'd like to suggest we focus on improving existed helpers and push
    all the further reforms into next series ;-)

Proposals:
    Sean:
	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23339.html
    Doug:
	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23418.html
	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23765.html
    Jason:
	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23425.html

Michael Wang (23):
  IB/Verbs: Implement new callback query_protocol()
  IB/Verbs: Implement raw management helpers
  IB/Verbs: Reform IB-core mad/agent/user_mad
  IB/Verbs: Reform IB-core cm
  IB/Verbs: Reform IB-core sa_query
  IB/Verbs: Reform IB-core multicast
  IB/Verbs: Reform IB-ulp ipoib
  IB/Verbs: Reform IB-ulp xprtrdma
  IB/Verbs: Reform IB-core verbs
  IB/Verbs: Reform cm related part in IB-core cma/ucm
  IB/Verbs: Reform route related part in IB-core cma
  IB/Verbs: Reform mcast related part in IB-core cma
  IB/Verbs: Reform cma_acquire_dev()
  IB/Verbs: Reform rest part in IB-core cma
  IB/Verbs: Use management helper rdma_cap_ib_mad()
  IB/Verbs: Use management helper rdma_cap_ib_smi()
  IB/Verbs: Use management helper rdma_cap_ib_cm()
  IB/Verbs: Use management helper rdma_cap_iw_cm()
  IB/Verbs: Use management helper rdma_cap_ib_sa()
  IB/Verbs: Use management helper rdma_cap_ib_mcast()
  IB/Verbs: Use management helper rdma_cap_read_multi_sge()
  IB/Verbs: Use management helper rdma_cap_af_ib()
  IB/Verbs: Use management helper rdma_cap_eth_ah()

 drivers/infiniband/core/agent.c              |   2 +-
 drivers/infiniband/core/cm.c                 |  20 ++-
 drivers/infiniband/core/cma.c                | 257 +++++++++++----------------
 drivers/infiniband/core/device.c             |   1 +
 drivers/infiniband/core/mad.c                |  43 +++--
 drivers/infiniband/core/multicast.c          |  12 +-
 drivers/infiniband/core/sa_query.c           |  30 ++--
 drivers/infiniband/core/ucm.c                |   3 +-
 drivers/infiniband/core/ucma.c               |  25 +--
 drivers/infiniband/core/user_mad.c           |  26 ++-
 drivers/infiniband/core/verbs.c              |   6 +-
 drivers/infiniband/hw/amso1100/c2_provider.c |   7 +
 drivers/infiniband/hw/cxgb3/iwch_provider.c  |   7 +
 drivers/infiniband/hw/cxgb4/provider.c       |   7 +
 drivers/infiniband/hw/ehca/ehca_hca.c        |   6 +
 drivers/infiniband/hw/ehca/ehca_iverbs.h     |   3 +
 drivers/infiniband/hw/ehca/ehca_main.c       |   1 +
 drivers/infiniband/hw/ipath/ipath_verbs.c    |   7 +
 drivers/infiniband/hw/mlx4/main.c            |  10 ++
 drivers/infiniband/hw/mlx5/main.c            |   7 +
 drivers/infiniband/hw/mthca/mthca_provider.c |   7 +
 drivers/infiniband/hw/nes/nes_verbs.c        |   6 +
 drivers/infiniband/hw/ocrdma/ocrdma_main.c   |   1 +
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c  |   6 +
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.h  |   3 +
 drivers/infiniband/hw/qib/qib_verbs.c        |   7 +
 drivers/infiniband/hw/usnic/usnic_ib_main.c  |   1 +
 drivers/infiniband/hw/usnic/usnic_ib_verbs.c |   6 +
 drivers/infiniband/hw/usnic/usnic_ib_verbs.h |   2 +
 drivers/infiniband/ulp/ipoib/ipoib_main.c    |  15 +-
 include/rdma/ib_verbs.h                      | 167 +++++++++++++++++
 net/sunrpc/xprtrdma/svc_rdma_recvfrom.c      |   4 +-
 net/sunrpc/xprtrdma/svc_rdma_transport.c     |  45 ++---
 33 files changed, 477 insertions(+), 273 deletions(-)

-- 
2.1.0


^ permalink raw reply	[flat|nested] 64+ messages in thread

* [PATCH v8 01/23] IB/Verbs: Implement new callback query_protocol()
  2015-05-05 12:50 ` Michael Wang
  (?)
@ 2015-05-05 12:50 ` Michael Wang
  -1 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma, linux-kernel
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Add new callback query_protocol() and implement for each HW.

Mapping List:
		node-type	link-layer	transport	protocol
nes		RNIC		ETH		IWARP		IWARP
amso1100	RNIC		ETH		IWARP		IWARP
cxgb3   	RNIC		ETH		IWARP		IWARP
cxgb4   	RNIC		ETH		IWARP		IWARP
usnic   	USNIC_UDP	ETH		USNIC_UDP	USNIC_UDP
ocrdma  	IB_CA		ETH		IB		IBOE
mlx4    	IB_CA		IB/ETH		IB		IB/IBOE
mlx5    	IB_CA		IB		IB		IB
ehca    	IB_CA		IB		IB		IB
ipath   	IB_CA		IB		IB		IB
mthca   	IB_CA		IB		IB		IB
qib     	IB_CA		IB		IB		IB

Signed-off-by: Michael Wang <yun.wang@profitbricks.com>
---
 drivers/infiniband/core/device.c             |  1 +
 drivers/infiniband/hw/amso1100/c2_provider.c |  7 +++++++
 drivers/infiniband/hw/cxgb3/iwch_provider.c  |  7 +++++++
 drivers/infiniband/hw/cxgb4/provider.c       |  7 +++++++
 drivers/infiniband/hw/ehca/ehca_hca.c        |  6 ++++++
 drivers/infiniband/hw/ehca/ehca_iverbs.h     |  3 +++
 drivers/infiniband/hw/ehca/ehca_main.c       |  1 +
 drivers/infiniband/hw/ipath/ipath_verbs.c    |  7 +++++++
 drivers/infiniband/hw/mlx4/main.c            | 10 ++++++++++
 drivers/infiniband/hw/mlx5/main.c            |  7 +++++++
 drivers/infiniband/hw/mthca/mthca_provider.c |  7 +++++++
 drivers/infiniband/hw/nes/nes_verbs.c        |  6 ++++++
 drivers/infiniband/hw/ocrdma/ocrdma_main.c   |  1 +
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c  |  6 ++++++
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.h  |  3 +++
 drivers/infiniband/hw/qib/qib_verbs.c        |  7 +++++++
 drivers/infiniband/hw/usnic/usnic_ib_main.c  |  1 +
 drivers/infiniband/hw/usnic/usnic_ib_verbs.c |  6 ++++++
 drivers/infiniband/hw/usnic/usnic_ib_verbs.h |  2 ++
 include/rdma/ib_verbs.h                      |  9 +++++++++
 20 files changed, 104 insertions(+)

diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c
index 18c1ece..b360350 100644
--- a/drivers/infiniband/core/device.c
+++ b/drivers/infiniband/core/device.c
@@ -76,6 +76,7 @@ static int ib_device_check_mandatory(struct ib_device *device)
 	} mandatory_table[] = {
 		IB_MANDATORY_FUNC(query_device),
 		IB_MANDATORY_FUNC(query_port),
+		IB_MANDATORY_FUNC(query_protocol),
 		IB_MANDATORY_FUNC(query_pkey),
 		IB_MANDATORY_FUNC(query_gid),
 		IB_MANDATORY_FUNC(alloc_pd),
diff --git a/drivers/infiniband/hw/amso1100/c2_provider.c b/drivers/infiniband/hw/amso1100/c2_provider.c
index bdf3507..6fe329a 100644
--- a/drivers/infiniband/hw/amso1100/c2_provider.c
+++ b/drivers/infiniband/hw/amso1100/c2_provider.c
@@ -99,6 +99,12 @@ static int c2_query_port(struct ib_device *ibdev,
 	return 0;
 }
 
+static enum rdma_protocol_type
+c2_query_protocol(struct ib_device *device, u8 port_num)
+{
+	return RDMA_PROTOCOL_IWARP;
+}
+
 static int c2_query_pkey(struct ib_device *ibdev,
 			 u8 port, u16 index, u16 * pkey)
 {
@@ -801,6 +807,7 @@ int c2_register_device(struct c2_dev *dev)
 	dev->ibdev.dma_device = &dev->pcidev->dev;
 	dev->ibdev.query_device = c2_query_device;
 	dev->ibdev.query_port = c2_query_port;
+	dev->ibdev.query_protocol = c2_query_protocol;
 	dev->ibdev.query_pkey = c2_query_pkey;
 	dev->ibdev.query_gid = c2_query_gid;
 	dev->ibdev.alloc_ucontext = c2_alloc_ucontext;
diff --git a/drivers/infiniband/hw/cxgb3/iwch_provider.c b/drivers/infiniband/hw/cxgb3/iwch_provider.c
index 811b24a..298d1ca 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_provider.c
+++ b/drivers/infiniband/hw/cxgb3/iwch_provider.c
@@ -1232,6 +1232,12 @@ static int iwch_query_port(struct ib_device *ibdev,
 	return 0;
 }
 
+static enum rdma_protocol_type
+iwch_query_protocol(struct ib_device *device, u8 port_num)
+{
+	return RDMA_PROTOCOL_IWARP;
+}
+
 static ssize_t show_rev(struct device *dev, struct device_attribute *attr,
 			char *buf)
 {
@@ -1385,6 +1391,7 @@ int iwch_register_device(struct iwch_dev *dev)
 	dev->ibdev.dma_device = &(dev->rdev.rnic_info.pdev->dev);
 	dev->ibdev.query_device = iwch_query_device;
 	dev->ibdev.query_port = iwch_query_port;
+	dev->ibdev.query_protocol = iwch_query_protocol;
 	dev->ibdev.query_pkey = iwch_query_pkey;
 	dev->ibdev.query_gid = iwch_query_gid;
 	dev->ibdev.alloc_ucontext = iwch_alloc_ucontext;
diff --git a/drivers/infiniband/hw/cxgb4/provider.c b/drivers/infiniband/hw/cxgb4/provider.c
index 66bd6a2..f52ee63 100644
--- a/drivers/infiniband/hw/cxgb4/provider.c
+++ b/drivers/infiniband/hw/cxgb4/provider.c
@@ -390,6 +390,12 @@ static int c4iw_query_port(struct ib_device *ibdev, u8 port,
 	return 0;
 }
 
+static enum rdma_protocol_type
+c4iw_query_protocol(struct ib_device *device, u8 port_num)
+{
+	return RDMA_PROTOCOL_IWARP;
+}
+
 static ssize_t show_rev(struct device *dev, struct device_attribute *attr,
 			char *buf)
 {
@@ -506,6 +512,7 @@ int c4iw_register_device(struct c4iw_dev *dev)
 	dev->ibdev.dma_device = &(dev->rdev.lldi.pdev->dev);
 	dev->ibdev.query_device = c4iw_query_device;
 	dev->ibdev.query_port = c4iw_query_port;
+	dev->ibdev.query_protocol = c4iw_query_protocol;
 	dev->ibdev.query_pkey = c4iw_query_pkey;
 	dev->ibdev.query_gid = c4iw_query_gid;
 	dev->ibdev.alloc_ucontext = c4iw_alloc_ucontext;
diff --git a/drivers/infiniband/hw/ehca/ehca_hca.c b/drivers/infiniband/hw/ehca/ehca_hca.c
index 9ed4d25..1f4dc9c 100644
--- a/drivers/infiniband/hw/ehca/ehca_hca.c
+++ b/drivers/infiniband/hw/ehca/ehca_hca.c
@@ -242,6 +242,12 @@ query_port1:
 	return ret;
 }
 
+enum rdma_protocol_type
+ehca_query_protocol(struct ib_device *device, u8 port_num)
+{
+	return RDMA_PROTOCOL_IB;
+}
+
 int ehca_query_sma_attr(struct ehca_shca *shca,
 			u8 port, struct ehca_sma_attr *attr)
 {
diff --git a/drivers/infiniband/hw/ehca/ehca_iverbs.h b/drivers/infiniband/hw/ehca/ehca_iverbs.h
index 22f79af..077185b 100644
--- a/drivers/infiniband/hw/ehca/ehca_iverbs.h
+++ b/drivers/infiniband/hw/ehca/ehca_iverbs.h
@@ -49,6 +49,9 @@ int ehca_query_device(struct ib_device *ibdev, struct ib_device_attr *props);
 int ehca_query_port(struct ib_device *ibdev, u8 port,
 		    struct ib_port_attr *props);
 
+enum rdma_protocol_type
+ehca_query_protocol(struct ib_device *device, u8 port_num);
+
 int ehca_query_sma_attr(struct ehca_shca *shca, u8 port,
 			struct ehca_sma_attr *attr);
 
diff --git a/drivers/infiniband/hw/ehca/ehca_main.c b/drivers/infiniband/hw/ehca/ehca_main.c
index cd8d290..321545b 100644
--- a/drivers/infiniband/hw/ehca/ehca_main.c
+++ b/drivers/infiniband/hw/ehca/ehca_main.c
@@ -467,6 +467,7 @@ static int ehca_init_device(struct ehca_shca *shca)
 	shca->ib_device.dma_device          = &shca->ofdev->dev;
 	shca->ib_device.query_device        = ehca_query_device;
 	shca->ib_device.query_port          = ehca_query_port;
+	shca->ib_device.query_protocol      = ehca_query_protocol;
 	shca->ib_device.query_gid           = ehca_query_gid;
 	shca->ib_device.query_pkey          = ehca_query_pkey;
 	/* shca->in_device.modify_device    = ehca_modify_device    */
diff --git a/drivers/infiniband/hw/ipath/ipath_verbs.c b/drivers/infiniband/hw/ipath/ipath_verbs.c
index 44ea939..34b94c3a 100644
--- a/drivers/infiniband/hw/ipath/ipath_verbs.c
+++ b/drivers/infiniband/hw/ipath/ipath_verbs.c
@@ -1638,6 +1638,12 @@ static int ipath_query_port(struct ib_device *ibdev,
 	return 0;
 }
 
+static enum rdma_protocol_type
+ipath_query_protocol(struct ib_device *device, u8 port_num)
+{
+	return RDMA_PROTOCOL_IB;
+}
+
 static int ipath_modify_device(struct ib_device *device,
 			       int device_modify_mask,
 			       struct ib_device_modify *device_modify)
@@ -2140,6 +2146,7 @@ int ipath_register_ib_device(struct ipath_devdata *dd)
 	dev->query_device = ipath_query_device;
 	dev->modify_device = ipath_modify_device;
 	dev->query_port = ipath_query_port;
+	dev->query_protocol = ipath_query_protocol;
 	dev->modify_port = ipath_modify_port;
 	dev->query_pkey = ipath_query_pkey;
 	dev->query_gid = ipath_query_gid;
diff --git a/drivers/infiniband/hw/mlx4/main.c b/drivers/infiniband/hw/mlx4/main.c
index 57070c5..26678d2 100644
--- a/drivers/infiniband/hw/mlx4/main.c
+++ b/drivers/infiniband/hw/mlx4/main.c
@@ -420,6 +420,15 @@ static int mlx4_ib_query_port(struct ib_device *ibdev, u8 port,
 	return __mlx4_ib_query_port(ibdev, port, props, 0);
 }
 
+static enum rdma_protocol_type
+mlx4_ib_query_protocol(struct ib_device *device, u8 port_num)
+{
+	struct mlx4_dev *dev = to_mdev(device)->dev;
+
+	return dev->caps.port_mask[port_num] == MLX4_PORT_TYPE_IB ?
+		RDMA_PROTOCOL_IB : RDMA_PROTOCOL_IBOE;
+}
+
 int __mlx4_ib_query_gid(struct ib_device *ibdev, u8 port, int index,
 			union ib_gid *gid, int netw_view)
 {
@@ -2202,6 +2211,7 @@ static void *mlx4_ib_add(struct mlx4_dev *dev)
 
 	ibdev->ib_dev.query_device	= mlx4_ib_query_device;
 	ibdev->ib_dev.query_port	= mlx4_ib_query_port;
+	ibdev->ib_dev.query_protocol	= mlx4_ib_query_protocol;
 	ibdev->ib_dev.get_link_layer	= mlx4_ib_port_link_layer;
 	ibdev->ib_dev.query_gid		= mlx4_ib_query_gid;
 	ibdev->ib_dev.query_pkey	= mlx4_ib_query_pkey;
diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c
index 57c9809..8dec380 100644
--- a/drivers/infiniband/hw/mlx5/main.c
+++ b/drivers/infiniband/hw/mlx5/main.c
@@ -262,6 +262,12 @@ out:
 	return err;
 }
 
+static enum rdma_protocol_type
+mlx5_ib_query_protocol(struct ib_device *device, u8 port_num)
+{
+	return RDMA_PROTOCOL_IB;
+}
+
 static int mlx5_ib_query_gid(struct ib_device *ibdev, u8 port, int index,
 			     union ib_gid *gid)
 {
@@ -1244,6 +1250,7 @@ static void *mlx5_ib_add(struct mlx5_core_dev *mdev)
 
 	dev->ib_dev.query_device	= mlx5_ib_query_device;
 	dev->ib_dev.query_port		= mlx5_ib_query_port;
+	dev->ib_dev.query_protocol	= mlx5_ib_query_protocol;
 	dev->ib_dev.query_gid		= mlx5_ib_query_gid;
 	dev->ib_dev.query_pkey		= mlx5_ib_query_pkey;
 	dev->ib_dev.modify_device	= mlx5_ib_modify_device;
diff --git a/drivers/infiniband/hw/mthca/mthca_provider.c b/drivers/infiniband/hw/mthca/mthca_provider.c
index 415f8e1..ad1cca3 100644
--- a/drivers/infiniband/hw/mthca/mthca_provider.c
+++ b/drivers/infiniband/hw/mthca/mthca_provider.c
@@ -179,6 +179,12 @@ static int mthca_query_port(struct ib_device *ibdev,
 	return err;
 }
 
+static enum rdma_protocol_type
+mthca_query_protocol(struct ib_device *device, u8 port_num)
+{
+	return RDMA_PROTOCOL_IB;
+}
+
 static int mthca_modify_device(struct ib_device *ibdev,
 			       int mask,
 			       struct ib_device_modify *props)
@@ -1281,6 +1287,7 @@ int mthca_register_device(struct mthca_dev *dev)
 	dev->ib_dev.dma_device           = &dev->pdev->dev;
 	dev->ib_dev.query_device         = mthca_query_device;
 	dev->ib_dev.query_port           = mthca_query_port;
+	dev->ib_dev.query_protocol       = mthca_query_protocol;
 	dev->ib_dev.modify_device        = mthca_modify_device;
 	dev->ib_dev.modify_port          = mthca_modify_port;
 	dev->ib_dev.query_pkey           = mthca_query_pkey;
diff --git a/drivers/infiniband/hw/nes/nes_verbs.c b/drivers/infiniband/hw/nes/nes_verbs.c
index c0d0296..027f6d1 100644
--- a/drivers/infiniband/hw/nes/nes_verbs.c
+++ b/drivers/infiniband/hw/nes/nes_verbs.c
@@ -606,6 +606,11 @@ static int nes_query_port(struct ib_device *ibdev, u8 port, struct ib_port_attr
 	return 0;
 }
 
+static enum rdma_protocol_type
+nes_query_protocol(struct ib_device *device, u8 port_num)
+{
+	return RDMA_PROTOCOL_IWARP;
+}
 
 /**
  * nes_query_pkey
@@ -3879,6 +3884,7 @@ struct nes_ib_device *nes_init_ofa_device(struct net_device *netdev)
 	nesibdev->ibdev.dev.parent = &nesdev->pcidev->dev;
 	nesibdev->ibdev.query_device = nes_query_device;
 	nesibdev->ibdev.query_port = nes_query_port;
+	nesibdev->ibdev.query_protocol = nes_query_protocol;
 	nesibdev->ibdev.query_pkey = nes_query_pkey;
 	nesibdev->ibdev.query_gid = nes_query_gid;
 	nesibdev->ibdev.alloc_ucontext = nes_alloc_ucontext;
diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_main.c b/drivers/infiniband/hw/ocrdma/ocrdma_main.c
index 7a2b59a..85d99e9 100644
--- a/drivers/infiniband/hw/ocrdma/ocrdma_main.c
+++ b/drivers/infiniband/hw/ocrdma/ocrdma_main.c
@@ -244,6 +244,7 @@ static int ocrdma_register_device(struct ocrdma_dev *dev)
 	/* mandatory verbs. */
 	dev->ibdev.query_device = ocrdma_query_device;
 	dev->ibdev.query_port = ocrdma_query_port;
+	dev->ibdev.query_protocol = ocrdma_query_protocol;
 	dev->ibdev.modify_port = ocrdma_modify_port;
 	dev->ibdev.query_gid = ocrdma_query_gid;
 	dev->ibdev.get_link_layer = ocrdma_link_layer;
diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
index 8771755..3e98360 100644
--- a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
+++ b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
@@ -187,6 +187,12 @@ int ocrdma_query_port(struct ib_device *ibdev,
 	return 0;
 }
 
+enum rdma_protocol_type
+ocrdma_query_protocol(struct ib_device *device, u8 port_num)
+{
+	return RDMA_PROTOCOL_IBOE;
+}
+
 int ocrdma_modify_port(struct ib_device *ibdev, u8 port, int mask,
 		       struct ib_port_modify *props)
 {
diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.h b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.h
index b8f7853..3cdc81e 100644
--- a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.h
+++ b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.h
@@ -41,6 +41,9 @@ int ocrdma_query_port(struct ib_device *, u8 port, struct ib_port_attr *props);
 int ocrdma_modify_port(struct ib_device *, u8 port, int mask,
 		       struct ib_port_modify *props);
 
+enum rdma_protocol_type
+ocrdma_query_protocol(struct ib_device *device, u8 port_num);
+
 void ocrdma_get_guid(struct ocrdma_dev *, u8 *guid);
 int ocrdma_query_gid(struct ib_device *, u8 port,
 		     int index, union ib_gid *gid);
diff --git a/drivers/infiniband/hw/qib/qib_verbs.c b/drivers/infiniband/hw/qib/qib_verbs.c
index 4a35998..9fd4b28 100644
--- a/drivers/infiniband/hw/qib/qib_verbs.c
+++ b/drivers/infiniband/hw/qib/qib_verbs.c
@@ -1650,6 +1650,12 @@ static int qib_query_port(struct ib_device *ibdev, u8 port,
 	return 0;
 }
 
+static enum rdma_protocol_type
+qib_query_protocol(struct ib_device *device, u8 port_num)
+{
+	return RDMA_PROTOCOL_IB;
+}
+
 static int qib_modify_device(struct ib_device *device,
 			     int device_modify_mask,
 			     struct ib_device_modify *device_modify)
@@ -2184,6 +2190,7 @@ int qib_register_ib_device(struct qib_devdata *dd)
 	ibdev->query_device = qib_query_device;
 	ibdev->modify_device = qib_modify_device;
 	ibdev->query_port = qib_query_port;
+	ibdev->query_protocol = qib_query_protocol;
 	ibdev->modify_port = qib_modify_port;
 	ibdev->query_pkey = qib_query_pkey;
 	ibdev->query_gid = qib_query_gid;
diff --git a/drivers/infiniband/hw/usnic/usnic_ib_main.c b/drivers/infiniband/hw/usnic/usnic_ib_main.c
index 0d0f986..bd9f364 100644
--- a/drivers/infiniband/hw/usnic/usnic_ib_main.c
+++ b/drivers/infiniband/hw/usnic/usnic_ib_main.c
@@ -360,6 +360,7 @@ static void *usnic_ib_device_add(struct pci_dev *dev)
 
 	us_ibdev->ib_dev.query_device = usnic_ib_query_device;
 	us_ibdev->ib_dev.query_port = usnic_ib_query_port;
+	us_ibdev->ib_dev.query_protocol = usnic_ib_query_protocol;
 	us_ibdev->ib_dev.query_pkey = usnic_ib_query_pkey;
 	us_ibdev->ib_dev.query_gid = usnic_ib_query_gid;
 	us_ibdev->ib_dev.get_link_layer = usnic_ib_port_link_layer;
diff --git a/drivers/infiniband/hw/usnic/usnic_ib_verbs.c b/drivers/infiniband/hw/usnic/usnic_ib_verbs.c
index 53bd6a2..732b5c5 100644
--- a/drivers/infiniband/hw/usnic/usnic_ib_verbs.c
+++ b/drivers/infiniband/hw/usnic/usnic_ib_verbs.c
@@ -348,6 +348,12 @@ int usnic_ib_query_port(struct ib_device *ibdev, u8 port,
 	return 0;
 }
 
+enum rdma_protocol_type
+usnic_ib_query_protocol(struct ib_device *device, u8 port_num)
+{
+	return RDMA_PROTOCOL_USNIC_UDP;
+}
+
 int usnic_ib_query_qp(struct ib_qp *qp, struct ib_qp_attr *qp_attr,
 				int qp_attr_mask,
 				struct ib_qp_init_attr *qp_init_attr)
diff --git a/drivers/infiniband/hw/usnic/usnic_ib_verbs.h b/drivers/infiniband/hw/usnic/usnic_ib_verbs.h
index bb864f5..57ddba5 100644
--- a/drivers/infiniband/hw/usnic/usnic_ib_verbs.h
+++ b/drivers/infiniband/hw/usnic/usnic_ib_verbs.h
@@ -27,6 +27,8 @@ int usnic_ib_query_device(struct ib_device *ibdev,
 				struct ib_device_attr *props);
 int usnic_ib_query_port(struct ib_device *ibdev, u8 port,
 				struct ib_port_attr *props);
+enum rdma_protocol_type
+usnic_ib_query_protocol(struct ib_device *device, u8 port_num);
 int usnic_ib_query_qp(struct ib_qp *qp, struct ib_qp_attr *qp_attr,
 				int qp_attr_mask,
 				struct ib_qp_init_attr *qp_init_attr);
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index 65994a1..080f204 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -81,6 +81,13 @@ enum rdma_transport_type {
 	RDMA_TRANSPORT_USNIC_UDP
 };
 
+enum rdma_protocol_type {
+	RDMA_PROTOCOL_IB,
+	RDMA_PROTOCOL_IBOE,
+	RDMA_PROTOCOL_IWARP,
+	RDMA_PROTOCOL_USNIC_UDP
+};
+
 __attribute_const__ enum rdma_transport_type
 rdma_node_get_transport(enum rdma_node_type node_type);
 
@@ -1501,6 +1508,8 @@ struct ib_device {
 	int		           (*query_port)(struct ib_device *device,
 						 u8 port_num,
 						 struct ib_port_attr *port_attr);
+	enum rdma_protocol_type    (*query_protocol)(struct ib_device *device,
+						     u8 port_num);
 	enum rdma_link_layer	   (*get_link_layer)(struct ib_device *device,
 						     u8 port_num);
 	int		           (*query_gid)(struct ib_device *device,
-- 
2.1.0

^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 02/23] IB/Verbs: Implement raw management helpers
  2015-05-05 12:50 ` Michael Wang
@ 2015-05-05 12:50     ` Michael Wang
  -1 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Add raw helpers:
        rdma_protocol_ib
        rdma_protocol_iboe
        rdma_protocol_iwarp
        rdma_ib_or_iboe (transition, clean up later)
To help us detect which technology the port supported.

Signed-off-by: Michael Wang <yun.wang-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
---
 include/rdma/ib_verbs.h | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index 080f204..e6dd984 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -1752,6 +1752,28 @@ 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 bool rdma_protocol_ib(struct ib_device *device, u8 port_num)
+{
+	return device->query_protocol(device, port_num) == RDMA_PROTOCOL_IB;
+}
+
+static inline bool rdma_protocol_iboe(struct ib_device *device, u8 port_num)
+{
+	return device->query_protocol(device, port_num) == RDMA_PROTOCOL_IBOE;
+}
+
+static inline bool rdma_protocol_iwarp(struct ib_device *device, u8 port_num)
+{
+	return device->query_protocol(device, port_num) == RDMA_PROTOCOL_IWARP;
+}
+
+static inline bool rdma_ib_or_iboe(struct ib_device *device, u8 port_num)
+{
+	enum rdma_protocol_type pt = device->query_protocol(device, port_num);
+
+	return (pt == RDMA_PROTOCOL_IB || pt == RDMA_PROTOCOL_IBOE);
+}
+
 int ib_query_gid(struct ib_device *device,
 		 u8 port_num, int index, union ib_gid *gid);
 
-- 
2.1.0

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

^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 02/23] IB/Verbs: Implement raw management helpers
@ 2015-05-05 12:50     ` Michael Wang
  0 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma, linux-kernel
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Add raw helpers:
        rdma_protocol_ib
        rdma_protocol_iboe
        rdma_protocol_iwarp
        rdma_ib_or_iboe (transition, clean up later)
To help us detect which technology the port supported.

Signed-off-by: Michael Wang <yun.wang@profitbricks.com>
---
 include/rdma/ib_verbs.h | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index 080f204..e6dd984 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -1752,6 +1752,28 @@ 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 bool rdma_protocol_ib(struct ib_device *device, u8 port_num)
+{
+	return device->query_protocol(device, port_num) == RDMA_PROTOCOL_IB;
+}
+
+static inline bool rdma_protocol_iboe(struct ib_device *device, u8 port_num)
+{
+	return device->query_protocol(device, port_num) == RDMA_PROTOCOL_IBOE;
+}
+
+static inline bool rdma_protocol_iwarp(struct ib_device *device, u8 port_num)
+{
+	return device->query_protocol(device, port_num) == RDMA_PROTOCOL_IWARP;
+}
+
+static inline bool rdma_ib_or_iboe(struct ib_device *device, u8 port_num)
+{
+	enum rdma_protocol_type pt = device->query_protocol(device, port_num);
+
+	return (pt == RDMA_PROTOCOL_IB || pt == RDMA_PROTOCOL_IBOE);
+}
+
 int ib_query_gid(struct ib_device *device,
 		 u8 port_num, int index, union ib_gid *gid);
 
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 03/23] IB/Verbs: Reform IB-core mad/agent/user_mad
  2015-05-05 12:50 ` Michael Wang
@ 2015-05-05 12:50     ` Michael Wang
  -1 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Use raw management helpers to reform IB-core mad/agent/user_mad.

Signed-off-by: Michael Wang <yun.wang-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
---
 drivers/infiniband/core/agent.c    |  2 +-
 drivers/infiniband/core/mad.c      | 43 +++++++++++++++++++-------------------
 drivers/infiniband/core/user_mad.c | 26 ++++++++++++++++-------
 3 files changed, 41 insertions(+), 30 deletions(-)

diff --git a/drivers/infiniband/core/agent.c b/drivers/infiniband/core/agent.c
index f6d2961..89d4fbc 100644
--- a/drivers/infiniband/core/agent.c
+++ b/drivers/infiniband/core/agent.c
@@ -156,7 +156,7 @@ int ib_agent_port_open(struct ib_device *device, int port_num)
 		goto error1;
 	}
 
-	if (rdma_port_get_link_layer(device, port_num) == IB_LINK_LAYER_INFINIBAND) {
+	if (rdma_protocol_ib(device, port_num)) {
 		/* Obtain send only MAD agent for SMI QP */
 		port_priv->agent[0] = ib_register_mad_agent(device, port_num,
 							    IB_QPT_SMI, NULL, 0,
diff --git a/drivers/infiniband/core/mad.c b/drivers/infiniband/core/mad.c
index 74c30f4..507eb67 100644
--- a/drivers/infiniband/core/mad.c
+++ b/drivers/infiniband/core/mad.c
@@ -2938,7 +2938,7 @@ static int ib_mad_port_open(struct ib_device *device,
 	init_mad_qp(port_priv, &port_priv->qp_info[1]);
 
 	cq_size = mad_sendq_size + mad_recvq_size;
-	has_smi = rdma_port_get_link_layer(device, port_num) == IB_LINK_LAYER_INFINIBAND;
+	has_smi = rdma_protocol_ib(device, port_num);
 	if (has_smi)
 		cq_size *= 2;
 
@@ -3057,9 +3057,6 @@ static void ib_mad_init_device(struct ib_device *device)
 {
 	int start, end, i;
 
-	if (rdma_node_get_transport(device->node_type) != RDMA_TRANSPORT_IB)
-		return;
-
 	if (device->node_type == RDMA_NODE_IB_SWITCH) {
 		start = 0;
 		end   = 0;
@@ -3069,6 +3066,9 @@ static void ib_mad_init_device(struct ib_device *device)
 	}
 
 	for (i = start; i <= end; i++) {
+		if (!rdma_ib_or_iboe(device, i))
+			continue;
+
 		if (ib_mad_port_open(device, i)) {
 			dev_err(&device->dev, "Couldn't open port %d\n", i);
 			goto error;
@@ -3086,40 +3086,39 @@ error_agent:
 		dev_err(&device->dev, "Couldn't close port %d\n", i);
 
 error:
-	i--;
+	while (--i >= start) {
+		if (!rdma_ib_or_iboe(device, i))
+			continue;
 
-	while (i >= start) {
 		if (ib_agent_port_close(device, i))
 			dev_err(&device->dev,
 				"Couldn't close port %d for agents\n", i);
 		if (ib_mad_port_close(device, i))
 			dev_err(&device->dev, "Couldn't close port %d\n", i);
-		i--;
 	}
 }
 
 static void ib_mad_remove_device(struct ib_device *device)
 {
-	int i, num_ports, cur_port;
-
-	if (rdma_node_get_transport(device->node_type) != RDMA_TRANSPORT_IB)
-		return;
+	int start, end, i;
 
 	if (device->node_type == RDMA_NODE_IB_SWITCH) {
-		num_ports = 1;
-		cur_port = 0;
+		start = 0;
+		end   = 0;
 	} else {
-		num_ports = device->phys_port_cnt;
-		cur_port = 1;
+		start = 1;
+		end   = device->phys_port_cnt;
 	}
-	for (i = 0; i < num_ports; i++, cur_port++) {
-		if (ib_agent_port_close(device, cur_port))
+
+	for (i = start; i <= end; i++) {
+		if (!rdma_ib_or_iboe(device, i))
+			continue;
+
+		if (ib_agent_port_close(device, i))
 			dev_err(&device->dev,
-				"Couldn't close port %d for agents\n",
-				cur_port);
-		if (ib_mad_port_close(device, cur_port))
-			dev_err(&device->dev, "Couldn't close port %d\n",
-				cur_port);
+				"Couldn't close port %d for agents\n", i);
+		if (ib_mad_port_close(device, i))
+			dev_err(&device->dev, "Couldn't close port %d\n", i);
 	}
 }
 
diff --git a/drivers/infiniband/core/user_mad.c b/drivers/infiniband/core/user_mad.c
index 928cdd2..aa8b334 100644
--- a/drivers/infiniband/core/user_mad.c
+++ b/drivers/infiniband/core/user_mad.c
@@ -1273,9 +1273,7 @@ static void ib_umad_add_one(struct ib_device *device)
 {
 	struct ib_umad_device *umad_dev;
 	int s, e, i;
-
-	if (rdma_node_get_transport(device->node_type) != RDMA_TRANSPORT_IB)
-		return;
+	int count = 0;
 
 	if (device->node_type == RDMA_NODE_IB_SWITCH)
 		s = e = 0;
@@ -1296,21 +1294,33 @@ static void ib_umad_add_one(struct ib_device *device)
 	umad_dev->end_port   = e;
 
 	for (i = s; i <= e; ++i) {
+		if (!rdma_ib_or_iboe(device, i))
+			continue;
+
 		umad_dev->port[i - s].umad_dev = umad_dev;
 
 		if (ib_umad_init_port(device, i, umad_dev,
 				      &umad_dev->port[i - s]))
 			goto err;
+
+		count++;
 	}
 
+	if (!count)
+		goto free;
+
 	ib_set_client_data(device, &umad_client, umad_dev);
 
 	return;
 
 err:
-	while (--i >= s)
-		ib_umad_kill_port(&umad_dev->port[i - s]);
+	while (--i >= s) {
+		if (!rdma_ib_or_iboe(device, i))
+			continue;
 
+		ib_umad_kill_port(&umad_dev->port[i - s]);
+	}
+free:
 	kobject_put(&umad_dev->kobj);
 }
 
@@ -1322,8 +1332,10 @@ static void ib_umad_remove_one(struct ib_device *device)
 	if (!umad_dev)
 		return;
 
-	for (i = 0; i <= umad_dev->end_port - umad_dev->start_port; ++i)
-		ib_umad_kill_port(&umad_dev->port[i]);
+	for (i = 0; i <= umad_dev->end_port - umad_dev->start_port; ++i) {
+		if (rdma_ib_or_iboe(device, i))
+			ib_umad_kill_port(&umad_dev->port[i]);
+	}
 
 	kobject_put(&umad_dev->kobj);
 }
-- 
2.1.0

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

^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 03/23] IB/Verbs: Reform IB-core mad/agent/user_mad
@ 2015-05-05 12:50     ` Michael Wang
  0 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma, linux-kernel
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Use raw management helpers to reform IB-core mad/agent/user_mad.

Signed-off-by: Michael Wang <yun.wang@profitbricks.com>
---
 drivers/infiniband/core/agent.c    |  2 +-
 drivers/infiniband/core/mad.c      | 43 +++++++++++++++++++-------------------
 drivers/infiniband/core/user_mad.c | 26 ++++++++++++++++-------
 3 files changed, 41 insertions(+), 30 deletions(-)

diff --git a/drivers/infiniband/core/agent.c b/drivers/infiniband/core/agent.c
index f6d2961..89d4fbc 100644
--- a/drivers/infiniband/core/agent.c
+++ b/drivers/infiniband/core/agent.c
@@ -156,7 +156,7 @@ int ib_agent_port_open(struct ib_device *device, int port_num)
 		goto error1;
 	}
 
-	if (rdma_port_get_link_layer(device, port_num) == IB_LINK_LAYER_INFINIBAND) {
+	if (rdma_protocol_ib(device, port_num)) {
 		/* Obtain send only MAD agent for SMI QP */
 		port_priv->agent[0] = ib_register_mad_agent(device, port_num,
 							    IB_QPT_SMI, NULL, 0,
diff --git a/drivers/infiniband/core/mad.c b/drivers/infiniband/core/mad.c
index 74c30f4..507eb67 100644
--- a/drivers/infiniband/core/mad.c
+++ b/drivers/infiniband/core/mad.c
@@ -2938,7 +2938,7 @@ static int ib_mad_port_open(struct ib_device *device,
 	init_mad_qp(port_priv, &port_priv->qp_info[1]);
 
 	cq_size = mad_sendq_size + mad_recvq_size;
-	has_smi = rdma_port_get_link_layer(device, port_num) == IB_LINK_LAYER_INFINIBAND;
+	has_smi = rdma_protocol_ib(device, port_num);
 	if (has_smi)
 		cq_size *= 2;
 
@@ -3057,9 +3057,6 @@ static void ib_mad_init_device(struct ib_device *device)
 {
 	int start, end, i;
 
-	if (rdma_node_get_transport(device->node_type) != RDMA_TRANSPORT_IB)
-		return;
-
 	if (device->node_type == RDMA_NODE_IB_SWITCH) {
 		start = 0;
 		end   = 0;
@@ -3069,6 +3066,9 @@ static void ib_mad_init_device(struct ib_device *device)
 	}
 
 	for (i = start; i <= end; i++) {
+		if (!rdma_ib_or_iboe(device, i))
+			continue;
+
 		if (ib_mad_port_open(device, i)) {
 			dev_err(&device->dev, "Couldn't open port %d\n", i);
 			goto error;
@@ -3086,40 +3086,39 @@ error_agent:
 		dev_err(&device->dev, "Couldn't close port %d\n", i);
 
 error:
-	i--;
+	while (--i >= start) {
+		if (!rdma_ib_or_iboe(device, i))
+			continue;
 
-	while (i >= start) {
 		if (ib_agent_port_close(device, i))
 			dev_err(&device->dev,
 				"Couldn't close port %d for agents\n", i);
 		if (ib_mad_port_close(device, i))
 			dev_err(&device->dev, "Couldn't close port %d\n", i);
-		i--;
 	}
 }
 
 static void ib_mad_remove_device(struct ib_device *device)
 {
-	int i, num_ports, cur_port;
-
-	if (rdma_node_get_transport(device->node_type) != RDMA_TRANSPORT_IB)
-		return;
+	int start, end, i;
 
 	if (device->node_type == RDMA_NODE_IB_SWITCH) {
-		num_ports = 1;
-		cur_port = 0;
+		start = 0;
+		end   = 0;
 	} else {
-		num_ports = device->phys_port_cnt;
-		cur_port = 1;
+		start = 1;
+		end   = device->phys_port_cnt;
 	}
-	for (i = 0; i < num_ports; i++, cur_port++) {
-		if (ib_agent_port_close(device, cur_port))
+
+	for (i = start; i <= end; i++) {
+		if (!rdma_ib_or_iboe(device, i))
+			continue;
+
+		if (ib_agent_port_close(device, i))
 			dev_err(&device->dev,
-				"Couldn't close port %d for agents\n",
-				cur_port);
-		if (ib_mad_port_close(device, cur_port))
-			dev_err(&device->dev, "Couldn't close port %d\n",
-				cur_port);
+				"Couldn't close port %d for agents\n", i);
+		if (ib_mad_port_close(device, i))
+			dev_err(&device->dev, "Couldn't close port %d\n", i);
 	}
 }
 
diff --git a/drivers/infiniband/core/user_mad.c b/drivers/infiniband/core/user_mad.c
index 928cdd2..aa8b334 100644
--- a/drivers/infiniband/core/user_mad.c
+++ b/drivers/infiniband/core/user_mad.c
@@ -1273,9 +1273,7 @@ static void ib_umad_add_one(struct ib_device *device)
 {
 	struct ib_umad_device *umad_dev;
 	int s, e, i;
-
-	if (rdma_node_get_transport(device->node_type) != RDMA_TRANSPORT_IB)
-		return;
+	int count = 0;
 
 	if (device->node_type == RDMA_NODE_IB_SWITCH)
 		s = e = 0;
@@ -1296,21 +1294,33 @@ static void ib_umad_add_one(struct ib_device *device)
 	umad_dev->end_port   = e;
 
 	for (i = s; i <= e; ++i) {
+		if (!rdma_ib_or_iboe(device, i))
+			continue;
+
 		umad_dev->port[i - s].umad_dev = umad_dev;
 
 		if (ib_umad_init_port(device, i, umad_dev,
 				      &umad_dev->port[i - s]))
 			goto err;
+
+		count++;
 	}
 
+	if (!count)
+		goto free;
+
 	ib_set_client_data(device, &umad_client, umad_dev);
 
 	return;
 
 err:
-	while (--i >= s)
-		ib_umad_kill_port(&umad_dev->port[i - s]);
+	while (--i >= s) {
+		if (!rdma_ib_or_iboe(device, i))
+			continue;
 
+		ib_umad_kill_port(&umad_dev->port[i - s]);
+	}
+free:
 	kobject_put(&umad_dev->kobj);
 }
 
@@ -1322,8 +1332,10 @@ static void ib_umad_remove_one(struct ib_device *device)
 	if (!umad_dev)
 		return;
 
-	for (i = 0; i <= umad_dev->end_port - umad_dev->start_port; ++i)
-		ib_umad_kill_port(&umad_dev->port[i]);
+	for (i = 0; i <= umad_dev->end_port - umad_dev->start_port; ++i) {
+		if (rdma_ib_or_iboe(device, i))
+			ib_umad_kill_port(&umad_dev->port[i]);
+	}
 
 	kobject_put(&umad_dev->kobj);
 }
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 04/23] IB/Verbs: Reform IB-core cm
  2015-05-05 12:50 ` Michael Wang
@ 2015-05-05 12:50     ` Michael Wang
  -1 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Use raw management helpers to reform IB-core cm.

Signed-off-by: Michael Wang <yun.wang-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
---
 drivers/infiniband/core/cm.c | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c
index e28a494..add5e484 100644
--- a/drivers/infiniband/core/cm.c
+++ b/drivers/infiniband/core/cm.c
@@ -3760,11 +3760,9 @@ static void cm_add_one(struct ib_device *ib_device)
 	};
 	unsigned long flags;
 	int ret;
+	int count = 0;
 	u8 i;
 
-	if (rdma_node_get_transport(ib_device->node_type) != RDMA_TRANSPORT_IB)
-		return;
-
 	cm_dev = kzalloc(sizeof(*cm_dev) + sizeof(*port) *
 			 ib_device->phys_port_cnt, GFP_KERNEL);
 	if (!cm_dev)
@@ -3783,6 +3781,9 @@ static void cm_add_one(struct ib_device *ib_device)
 
 	set_bit(IB_MGMT_METHOD_SEND, reg_req.method_mask);
 	for (i = 1; i <= ib_device->phys_port_cnt; i++) {
+		if (!rdma_ib_or_iboe(ib_device, i))
+			continue;
+
 		port = kzalloc(sizeof *port, GFP_KERNEL);
 		if (!port)
 			goto error1;
@@ -3809,7 +3810,13 @@ static void cm_add_one(struct ib_device *ib_device)
 		ret = ib_modify_port(ib_device, i, 0, &port_modify);
 		if (ret)
 			goto error3;
+
+		count++;
 	}
+
+	if (!count)
+		goto free;
+
 	ib_set_client_data(ib_device, &cm_client, cm_dev);
 
 	write_lock_irqsave(&cm.device_lock, flags);
@@ -3825,11 +3832,15 @@ error1:
 	port_modify.set_port_cap_mask = 0;
 	port_modify.clr_port_cap_mask = IB_PORT_CM_SUP;
 	while (--i) {
+		if (!rdma_ib_or_iboe(ib_device, i))
+			continue;
+
 		port = cm_dev->port[i-1];
 		ib_modify_port(ib_device, port->port_num, 0, &port_modify);
 		ib_unregister_mad_agent(port->mad_agent);
 		cm_remove_port_fs(port);
 	}
+free:
 	device_unregister(cm_dev->device);
 	kfree(cm_dev);
 }
@@ -3853,6 +3864,9 @@ static void cm_remove_one(struct ib_device *ib_device)
 	write_unlock_irqrestore(&cm.device_lock, flags);
 
 	for (i = 1; i <= ib_device->phys_port_cnt; i++) {
+		if (!rdma_ib_or_iboe(ib_device, i))
+			continue;
+
 		port = cm_dev->port[i-1];
 		ib_modify_port(ib_device, port->port_num, 0, &port_modify);
 		ib_unregister_mad_agent(port->mad_agent);
-- 
2.1.0

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

^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 04/23] IB/Verbs: Reform IB-core cm
@ 2015-05-05 12:50     ` Michael Wang
  0 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma, linux-kernel
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Use raw management helpers to reform IB-core cm.

Signed-off-by: Michael Wang <yun.wang@profitbricks.com>
---
 drivers/infiniband/core/cm.c | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c
index e28a494..add5e484 100644
--- a/drivers/infiniband/core/cm.c
+++ b/drivers/infiniband/core/cm.c
@@ -3760,11 +3760,9 @@ static void cm_add_one(struct ib_device *ib_device)
 	};
 	unsigned long flags;
 	int ret;
+	int count = 0;
 	u8 i;
 
-	if (rdma_node_get_transport(ib_device->node_type) != RDMA_TRANSPORT_IB)
-		return;
-
 	cm_dev = kzalloc(sizeof(*cm_dev) + sizeof(*port) *
 			 ib_device->phys_port_cnt, GFP_KERNEL);
 	if (!cm_dev)
@@ -3783,6 +3781,9 @@ static void cm_add_one(struct ib_device *ib_device)
 
 	set_bit(IB_MGMT_METHOD_SEND, reg_req.method_mask);
 	for (i = 1; i <= ib_device->phys_port_cnt; i++) {
+		if (!rdma_ib_or_iboe(ib_device, i))
+			continue;
+
 		port = kzalloc(sizeof *port, GFP_KERNEL);
 		if (!port)
 			goto error1;
@@ -3809,7 +3810,13 @@ static void cm_add_one(struct ib_device *ib_device)
 		ret = ib_modify_port(ib_device, i, 0, &port_modify);
 		if (ret)
 			goto error3;
+
+		count++;
 	}
+
+	if (!count)
+		goto free;
+
 	ib_set_client_data(ib_device, &cm_client, cm_dev);
 
 	write_lock_irqsave(&cm.device_lock, flags);
@@ -3825,11 +3832,15 @@ error1:
 	port_modify.set_port_cap_mask = 0;
 	port_modify.clr_port_cap_mask = IB_PORT_CM_SUP;
 	while (--i) {
+		if (!rdma_ib_or_iboe(ib_device, i))
+			continue;
+
 		port = cm_dev->port[i-1];
 		ib_modify_port(ib_device, port->port_num, 0, &port_modify);
 		ib_unregister_mad_agent(port->mad_agent);
 		cm_remove_port_fs(port);
 	}
+free:
 	device_unregister(cm_dev->device);
 	kfree(cm_dev);
 }
@@ -3853,6 +3864,9 @@ static void cm_remove_one(struct ib_device *ib_device)
 	write_unlock_irqrestore(&cm.device_lock, flags);
 
 	for (i = 1; i <= ib_device->phys_port_cnt; i++) {
+		if (!rdma_ib_or_iboe(ib_device, i))
+			continue;
+
 		port = cm_dev->port[i-1];
 		ib_modify_port(ib_device, port->port_num, 0, &port_modify);
 		ib_unregister_mad_agent(port->mad_agent);
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 05/23] IB/Verbs: Reform IB-core sa_query
  2015-05-05 12:50 ` Michael Wang
@ 2015-05-05 12:50     ` Michael Wang
  -1 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Use raw management helpers to reform IB-core sa_query.

Signed-off-by: Michael Wang <yun.wang-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
---
 drivers/infiniband/core/sa_query.c | 30 +++++++++++++++++-------------
 1 file changed, 17 insertions(+), 13 deletions(-)

diff --git a/drivers/infiniband/core/sa_query.c b/drivers/infiniband/core/sa_query.c
index c38f030..b115c28 100644
--- a/drivers/infiniband/core/sa_query.c
+++ b/drivers/infiniband/core/sa_query.c
@@ -450,7 +450,7 @@ static void ib_sa_event(struct ib_event_handler *handler, struct ib_event *event
 		struct ib_sa_port *port =
 			&sa_dev->port[event->element.port_num - sa_dev->start_port];
 
-		if (rdma_port_get_link_layer(handler->device, port->port_num) != IB_LINK_LAYER_INFINIBAND)
+		if (WARN_ON(!rdma_protocol_ib(handler->device, port->port_num)))
 			return;
 
 		spin_lock_irqsave(&port->ah_lock, flags);
@@ -540,7 +540,7 @@ int ib_init_ah_from_path(struct ib_device *device, u8 port_num,
 	ah_attr->port_num = port_num;
 	ah_attr->static_rate = rec->rate;
 
-	force_grh = rdma_port_get_link_layer(device, port_num) == IB_LINK_LAYER_ETHERNET;
+	force_grh = rdma_protocol_iboe(device, port_num);
 
 	if (rec->hop_limit > 1 || force_grh) {
 		ah_attr->ah_flags = IB_AH_GRH;
@@ -1153,9 +1153,7 @@ static void ib_sa_add_one(struct ib_device *device)
 {
 	struct ib_sa_device *sa_dev;
 	int s, e, i;
-
-	if (rdma_node_get_transport(device->node_type) != RDMA_TRANSPORT_IB)
-		return;
+	int count = 0;
 
 	if (device->node_type == RDMA_NODE_IB_SWITCH)
 		s = e = 0;
@@ -1175,7 +1173,7 @@ static void ib_sa_add_one(struct ib_device *device)
 
 	for (i = 0; i <= e - s; ++i) {
 		spin_lock_init(&sa_dev->port[i].ah_lock);
-		if (rdma_port_get_link_layer(device, i + 1) != IB_LINK_LAYER_INFINIBAND)
+		if (!rdma_protocol_ib(device, i + 1))
 			continue;
 
 		sa_dev->port[i].sm_ah    = NULL;
@@ -1189,8 +1187,13 @@ static void ib_sa_add_one(struct ib_device *device)
 			goto err;
 
 		INIT_WORK(&sa_dev->port[i].update_task, update_sm_ah);
+
+		count++;
 	}
 
+	if (!count)
+		goto free;
+
 	ib_set_client_data(device, &sa_client, sa_dev);
 
 	/*
@@ -1204,19 +1207,20 @@ static void ib_sa_add_one(struct ib_device *device)
 	if (ib_register_event_handler(&sa_dev->event_handler))
 		goto err;
 
-	for (i = 0; i <= e - s; ++i)
-		if (rdma_port_get_link_layer(device, i + 1) == IB_LINK_LAYER_INFINIBAND)
+	for (i = 0; i <= e - s; ++i) {
+		if (rdma_protocol_ib(device, i + 1))
 			update_sm_ah(&sa_dev->port[i].update_task);
+	}
 
 	return;
 
 err:
-	while (--i >= 0)
-		if (rdma_port_get_link_layer(device, i + 1) == IB_LINK_LAYER_INFINIBAND)
+	while (--i >= 0) {
+		if (rdma_protocol_ib(device, i + 1))
 			ib_unregister_mad_agent(sa_dev->port[i].agent);
-
+	}
+free:
 	kfree(sa_dev);
-
 	return;
 }
 
@@ -1233,7 +1237,7 @@ static void ib_sa_remove_one(struct ib_device *device)
 	flush_workqueue(ib_wq);
 
 	for (i = 0; i <= sa_dev->end_port - sa_dev->start_port; ++i) {
-		if (rdma_port_get_link_layer(device, i + 1) == IB_LINK_LAYER_INFINIBAND) {
+		if (rdma_protocol_ib(device, i + 1)) {
 			ib_unregister_mad_agent(sa_dev->port[i].agent);
 			if (sa_dev->port[i].sm_ah)
 				kref_put(&sa_dev->port[i].sm_ah->ref, free_sm_ah);
-- 
2.1.0

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

^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 05/23] IB/Verbs: Reform IB-core sa_query
@ 2015-05-05 12:50     ` Michael Wang
  0 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma, linux-kernel
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Use raw management helpers to reform IB-core sa_query.

Signed-off-by: Michael Wang <yun.wang@profitbricks.com>
---
 drivers/infiniband/core/sa_query.c | 30 +++++++++++++++++-------------
 1 file changed, 17 insertions(+), 13 deletions(-)

diff --git a/drivers/infiniband/core/sa_query.c b/drivers/infiniband/core/sa_query.c
index c38f030..b115c28 100644
--- a/drivers/infiniband/core/sa_query.c
+++ b/drivers/infiniband/core/sa_query.c
@@ -450,7 +450,7 @@ static void ib_sa_event(struct ib_event_handler *handler, struct ib_event *event
 		struct ib_sa_port *port =
 			&sa_dev->port[event->element.port_num - sa_dev->start_port];
 
-		if (rdma_port_get_link_layer(handler->device, port->port_num) != IB_LINK_LAYER_INFINIBAND)
+		if (WARN_ON(!rdma_protocol_ib(handler->device, port->port_num)))
 			return;
 
 		spin_lock_irqsave(&port->ah_lock, flags);
@@ -540,7 +540,7 @@ int ib_init_ah_from_path(struct ib_device *device, u8 port_num,
 	ah_attr->port_num = port_num;
 	ah_attr->static_rate = rec->rate;
 
-	force_grh = rdma_port_get_link_layer(device, port_num) == IB_LINK_LAYER_ETHERNET;
+	force_grh = rdma_protocol_iboe(device, port_num);
 
 	if (rec->hop_limit > 1 || force_grh) {
 		ah_attr->ah_flags = IB_AH_GRH;
@@ -1153,9 +1153,7 @@ static void ib_sa_add_one(struct ib_device *device)
 {
 	struct ib_sa_device *sa_dev;
 	int s, e, i;
-
-	if (rdma_node_get_transport(device->node_type) != RDMA_TRANSPORT_IB)
-		return;
+	int count = 0;
 
 	if (device->node_type == RDMA_NODE_IB_SWITCH)
 		s = e = 0;
@@ -1175,7 +1173,7 @@ static void ib_sa_add_one(struct ib_device *device)
 
 	for (i = 0; i <= e - s; ++i) {
 		spin_lock_init(&sa_dev->port[i].ah_lock);
-		if (rdma_port_get_link_layer(device, i + 1) != IB_LINK_LAYER_INFINIBAND)
+		if (!rdma_protocol_ib(device, i + 1))
 			continue;
 
 		sa_dev->port[i].sm_ah    = NULL;
@@ -1189,8 +1187,13 @@ static void ib_sa_add_one(struct ib_device *device)
 			goto err;
 
 		INIT_WORK(&sa_dev->port[i].update_task, update_sm_ah);
+
+		count++;
 	}
 
+	if (!count)
+		goto free;
+
 	ib_set_client_data(device, &sa_client, sa_dev);
 
 	/*
@@ -1204,19 +1207,20 @@ static void ib_sa_add_one(struct ib_device *device)
 	if (ib_register_event_handler(&sa_dev->event_handler))
 		goto err;
 
-	for (i = 0; i <= e - s; ++i)
-		if (rdma_port_get_link_layer(device, i + 1) == IB_LINK_LAYER_INFINIBAND)
+	for (i = 0; i <= e - s; ++i) {
+		if (rdma_protocol_ib(device, i + 1))
 			update_sm_ah(&sa_dev->port[i].update_task);
+	}
 
 	return;
 
 err:
-	while (--i >= 0)
-		if (rdma_port_get_link_layer(device, i + 1) == IB_LINK_LAYER_INFINIBAND)
+	while (--i >= 0) {
+		if (rdma_protocol_ib(device, i + 1))
 			ib_unregister_mad_agent(sa_dev->port[i].agent);
-
+	}
+free:
 	kfree(sa_dev);
-
 	return;
 }
 
@@ -1233,7 +1237,7 @@ static void ib_sa_remove_one(struct ib_device *device)
 	flush_workqueue(ib_wq);
 
 	for (i = 0; i <= sa_dev->end_port - sa_dev->start_port; ++i) {
-		if (rdma_port_get_link_layer(device, i + 1) == IB_LINK_LAYER_INFINIBAND) {
+		if (rdma_protocol_ib(device, i + 1)) {
 			ib_unregister_mad_agent(sa_dev->port[i].agent);
 			if (sa_dev->port[i].sm_ah)
 				kref_put(&sa_dev->port[i].sm_ah->ref, free_sm_ah);
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 06/23] IB/Verbs: Reform IB-core multicast
  2015-05-05 12:50 ` Michael Wang
@ 2015-05-05 12:50     ` Michael Wang
  -1 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Use raw management helpers to reform IB-core multicast.

Signed-off-by: Michael Wang <yun.wang-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
---
 drivers/infiniband/core/multicast.c | 12 +++---------
 1 file changed, 3 insertions(+), 9 deletions(-)

diff --git a/drivers/infiniband/core/multicast.c b/drivers/infiniband/core/multicast.c
index fa17b55..b57ed03 100644
--- a/drivers/infiniband/core/multicast.c
+++ b/drivers/infiniband/core/multicast.c
@@ -780,8 +780,7 @@ static void mcast_event_handler(struct ib_event_handler *handler,
 	int index;
 
 	dev = container_of(handler, struct mcast_device, event_handler);
-	if (rdma_port_get_link_layer(dev->device, event->element.port_num) !=
-	    IB_LINK_LAYER_INFINIBAND)
+	if (WARN_ON(!rdma_protocol_ib(dev->device, event->element.port_num)))
 		return;
 
 	index = event->element.port_num - dev->start_port;
@@ -808,9 +807,6 @@ static void mcast_add_one(struct ib_device *device)
 	int i;
 	int count = 0;
 
-	if (rdma_node_get_transport(device->node_type) != RDMA_TRANSPORT_IB)
-		return;
-
 	dev = kmalloc(sizeof *dev + device->phys_port_cnt * sizeof *port,
 		      GFP_KERNEL);
 	if (!dev)
@@ -824,8 +820,7 @@ static void mcast_add_one(struct ib_device *device)
 	}
 
 	for (i = 0; i <= dev->end_port - dev->start_port; i++) {
-		if (rdma_port_get_link_layer(device, dev->start_port + i) !=
-		    IB_LINK_LAYER_INFINIBAND)
+		if (!rdma_protocol_ib(device, dev->start_port + i))
 			continue;
 		port = &dev->port[i];
 		port->dev = dev;
@@ -863,8 +858,7 @@ static void mcast_remove_one(struct ib_device *device)
 	flush_workqueue(mcast_wq);
 
 	for (i = 0; i <= dev->end_port - dev->start_port; i++) {
-		if (rdma_port_get_link_layer(device, dev->start_port + i) ==
-		    IB_LINK_LAYER_INFINIBAND) {
+		if (rdma_protocol_ib(device, dev->start_port + i)) {
 			port = &dev->port[i];
 			deref_port(port);
 			wait_for_completion(&port->comp);
-- 
2.1.0

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

^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 06/23] IB/Verbs: Reform IB-core multicast
@ 2015-05-05 12:50     ` Michael Wang
  0 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma, linux-kernel
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Use raw management helpers to reform IB-core multicast.

Signed-off-by: Michael Wang <yun.wang@profitbricks.com>
---
 drivers/infiniband/core/multicast.c | 12 +++---------
 1 file changed, 3 insertions(+), 9 deletions(-)

diff --git a/drivers/infiniband/core/multicast.c b/drivers/infiniband/core/multicast.c
index fa17b55..b57ed03 100644
--- a/drivers/infiniband/core/multicast.c
+++ b/drivers/infiniband/core/multicast.c
@@ -780,8 +780,7 @@ static void mcast_event_handler(struct ib_event_handler *handler,
 	int index;
 
 	dev = container_of(handler, struct mcast_device, event_handler);
-	if (rdma_port_get_link_layer(dev->device, event->element.port_num) !=
-	    IB_LINK_LAYER_INFINIBAND)
+	if (WARN_ON(!rdma_protocol_ib(dev->device, event->element.port_num)))
 		return;
 
 	index = event->element.port_num - dev->start_port;
@@ -808,9 +807,6 @@ static void mcast_add_one(struct ib_device *device)
 	int i;
 	int count = 0;
 
-	if (rdma_node_get_transport(device->node_type) != RDMA_TRANSPORT_IB)
-		return;
-
 	dev = kmalloc(sizeof *dev + device->phys_port_cnt * sizeof *port,
 		      GFP_KERNEL);
 	if (!dev)
@@ -824,8 +820,7 @@ static void mcast_add_one(struct ib_device *device)
 	}
 
 	for (i = 0; i <= dev->end_port - dev->start_port; i++) {
-		if (rdma_port_get_link_layer(device, dev->start_port + i) !=
-		    IB_LINK_LAYER_INFINIBAND)
+		if (!rdma_protocol_ib(device, dev->start_port + i))
 			continue;
 		port = &dev->port[i];
 		port->dev = dev;
@@ -863,8 +858,7 @@ static void mcast_remove_one(struct ib_device *device)
 	flush_workqueue(mcast_wq);
 
 	for (i = 0; i <= dev->end_port - dev->start_port; i++) {
-		if (rdma_port_get_link_layer(device, dev->start_port + i) ==
-		    IB_LINK_LAYER_INFINIBAND) {
+		if (rdma_protocol_ib(device, dev->start_port + i)) {
 			port = &dev->port[i];
 			deref_port(port);
 			wait_for_completion(&port->comp);
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 07/23] IB/Verbs: Reform IB-ulp ipoib
  2015-05-05 12:50 ` Michael Wang
@ 2015-05-05 12:50     ` Michael Wang
  -1 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Use raw management helpers to reform IB-ulp ipoib.

Signed-off-by: Michael Wang <yun.wang-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
---
 drivers/infiniband/ulp/ipoib/ipoib_main.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
index 7cad4dd..468fc2b 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
@@ -1680,9 +1680,7 @@ static void ipoib_add_one(struct ib_device *device)
 	struct net_device *dev;
 	struct ipoib_dev_priv *priv;
 	int s, e, p;
-
-	if (rdma_node_get_transport(device->node_type) != RDMA_TRANSPORT_IB)
-		return;
+	int count = 0;
 
 	dev_list = kmalloc(sizeof *dev_list, GFP_KERNEL);
 	if (!dev_list)
@@ -1699,15 +1697,21 @@ static void ipoib_add_one(struct ib_device *device)
 	}
 
 	for (p = s; p <= e; ++p) {
-		if (rdma_port_get_link_layer(device, p) != IB_LINK_LAYER_INFINIBAND)
+		if (!rdma_protocol_ib(device, p))
 			continue;
 		dev = ipoib_add_port("ib%d", device, p);
 		if (!IS_ERR(dev)) {
 			priv = netdev_priv(dev);
 			list_add_tail(&priv->list, dev_list);
+			count++;
 		}
 	}
 
+	if (!count) {
+		kfree(dev_list);
+		return;
+	}
+
 	ib_set_client_data(device, &ipoib_client, dev_list);
 }
 
@@ -1716,9 +1720,6 @@ static void ipoib_remove_one(struct ib_device *device)
 	struct ipoib_dev_priv *priv, *tmp;
 	struct list_head *dev_list;
 
-	if (rdma_node_get_transport(device->node_type) != RDMA_TRANSPORT_IB)
-		return;
-
 	dev_list = ib_get_client_data(device, &ipoib_client);
 	if (!dev_list)
 		return;
-- 
2.1.0

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

^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 07/23] IB/Verbs: Reform IB-ulp ipoib
@ 2015-05-05 12:50     ` Michael Wang
  0 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma, linux-kernel
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Use raw management helpers to reform IB-ulp ipoib.

Signed-off-by: Michael Wang <yun.wang@profitbricks.com>
---
 drivers/infiniband/ulp/ipoib/ipoib_main.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
index 7cad4dd..468fc2b 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
@@ -1680,9 +1680,7 @@ static void ipoib_add_one(struct ib_device *device)
 	struct net_device *dev;
 	struct ipoib_dev_priv *priv;
 	int s, e, p;
-
-	if (rdma_node_get_transport(device->node_type) != RDMA_TRANSPORT_IB)
-		return;
+	int count = 0;
 
 	dev_list = kmalloc(sizeof *dev_list, GFP_KERNEL);
 	if (!dev_list)
@@ -1699,15 +1697,21 @@ static void ipoib_add_one(struct ib_device *device)
 	}
 
 	for (p = s; p <= e; ++p) {
-		if (rdma_port_get_link_layer(device, p) != IB_LINK_LAYER_INFINIBAND)
+		if (!rdma_protocol_ib(device, p))
 			continue;
 		dev = ipoib_add_port("ib%d", device, p);
 		if (!IS_ERR(dev)) {
 			priv = netdev_priv(dev);
 			list_add_tail(&priv->list, dev_list);
+			count++;
 		}
 	}
 
+	if (!count) {
+		kfree(dev_list);
+		return;
+	}
+
 	ib_set_client_data(device, &ipoib_client, dev_list);
 }
 
@@ -1716,9 +1720,6 @@ static void ipoib_remove_one(struct ib_device *device)
 	struct ipoib_dev_priv *priv, *tmp;
 	struct list_head *dev_list;
 
-	if (rdma_node_get_transport(device->node_type) != RDMA_TRANSPORT_IB)
-		return;
-
 	dev_list = ib_get_client_data(device, &ipoib_client);
 	if (!dev_list)
 		return;
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 08/23] IB/Verbs: Reform IB-ulp xprtrdma
  2015-05-05 12:50 ` Michael Wang
@ 2015-05-05 12:50     ` Michael Wang
  -1 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Use raw management helpers to reform IB-ulp xprtrdma.

Signed-off-by: Michael Wang <yun.wang-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
---
 net/sunrpc/xprtrdma/svc_rdma_recvfrom.c  |  4 +--
 net/sunrpc/xprtrdma/svc_rdma_transport.c | 45 +++++++++++++-------------------
 2 files changed, 20 insertions(+), 29 deletions(-)

diff --git a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
index f9f13a3..2cc625d 100644
--- a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
+++ b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
@@ -117,8 +117,8 @@ static void rdma_build_arg_xdr(struct svc_rqst *rqstp,
 
 static int rdma_read_max_sge(struct svcxprt_rdma *xprt, int sge_count)
 {
-	if (rdma_node_get_transport(xprt->sc_cm_id->device->node_type) ==
-	     RDMA_TRANSPORT_IWARP)
+	if (rdma_protocol_iwarp(xprt->sc_cm_id->device,
+				xprt->sc_cm_id->port_num))
 		return 1;
 	else
 		return min_t(int, sge_count, xprt->sc_max_sge);
diff --git a/net/sunrpc/xprtrdma/svc_rdma_transport.c b/net/sunrpc/xprtrdma/svc_rdma_transport.c
index f609c1c..3df8320 100644
--- a/net/sunrpc/xprtrdma/svc_rdma_transport.c
+++ b/net/sunrpc/xprtrdma/svc_rdma_transport.c
@@ -851,7 +851,7 @@ static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt)
 	struct ib_qp_init_attr qp_attr;
 	struct ib_device_attr devattr;
 	int uninitialized_var(dma_mr_acc);
-	int need_dma_mr;
+	int need_dma_mr = 0;
 	int ret;
 	int i;
 
@@ -985,35 +985,26 @@ static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt)
 	/*
 	 * Determine if a DMA MR is required and if so, what privs are required
 	 */
-	switch (rdma_node_get_transport(newxprt->sc_cm_id->device->node_type)) {
-	case RDMA_TRANSPORT_IWARP:
-		newxprt->sc_dev_caps |= SVCRDMA_DEVCAP_READ_W_INV;
-		if (!(newxprt->sc_dev_caps & SVCRDMA_DEVCAP_FAST_REG)) {
-			need_dma_mr = 1;
-			dma_mr_acc =
-				(IB_ACCESS_LOCAL_WRITE |
-				 IB_ACCESS_REMOTE_WRITE);
-		} else if (!(devattr.device_cap_flags & IB_DEVICE_LOCAL_DMA_LKEY)) {
-			need_dma_mr = 1;
-			dma_mr_acc = IB_ACCESS_LOCAL_WRITE;
-		} else
-			need_dma_mr = 0;
-		break;
-	case RDMA_TRANSPORT_IB:
-		if (!(newxprt->sc_dev_caps & SVCRDMA_DEVCAP_FAST_REG)) {
-			need_dma_mr = 1;
-			dma_mr_acc = IB_ACCESS_LOCAL_WRITE;
-		} else if (!(devattr.device_cap_flags &
-			     IB_DEVICE_LOCAL_DMA_LKEY)) {
-			need_dma_mr = 1;
-			dma_mr_acc = IB_ACCESS_LOCAL_WRITE;
-		} else
-			need_dma_mr = 0;
-		break;
-	default:
+	if (!rdma_protocol_iwarp(newxprt->sc_cm_id->device,
+				 newxprt->sc_cm_id->port_num) &&
+	    !rdma_ib_or_iboe(newxprt->sc_cm_id->device,
+			     newxprt->sc_cm_id->port_num))
 		goto errout;
+
+	if (!(newxprt->sc_dev_caps & SVCRDMA_DEVCAP_FAST_REG) ||
+	    !(devattr.device_cap_flags & IB_DEVICE_LOCAL_DMA_LKEY)) {
+		need_dma_mr = 1;
+		dma_mr_acc = IB_ACCESS_LOCAL_WRITE;
+		if (rdma_protocol_iwarp(newxprt->sc_cm_id->device,
+					newxprt->sc_cm_id->port_num) &&
+		    !(newxprt->sc_dev_caps & SVCRDMA_DEVCAP_FAST_REG))
+			dma_mr_acc |= IB_ACCESS_REMOTE_WRITE;
 	}
 
+	if (rdma_protocol_iwarp(newxprt->sc_cm_id->device,
+				newxprt->sc_cm_id->port_num))
+		newxprt->sc_dev_caps |= SVCRDMA_DEVCAP_READ_W_INV;
+
 	/* Create the DMA MR if needed, otherwise, use the DMA LKEY */
 	if (need_dma_mr) {
 		/* Register all of physical memory */
-- 
2.1.0

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

^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 08/23] IB/Verbs: Reform IB-ulp xprtrdma
@ 2015-05-05 12:50     ` Michael Wang
  0 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma, linux-kernel
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Use raw management helpers to reform IB-ulp xprtrdma.

Signed-off-by: Michael Wang <yun.wang@profitbricks.com>
---
 net/sunrpc/xprtrdma/svc_rdma_recvfrom.c  |  4 +--
 net/sunrpc/xprtrdma/svc_rdma_transport.c | 45 +++++++++++++-------------------
 2 files changed, 20 insertions(+), 29 deletions(-)

diff --git a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
index f9f13a3..2cc625d 100644
--- a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
+++ b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
@@ -117,8 +117,8 @@ static void rdma_build_arg_xdr(struct svc_rqst *rqstp,
 
 static int rdma_read_max_sge(struct svcxprt_rdma *xprt, int sge_count)
 {
-	if (rdma_node_get_transport(xprt->sc_cm_id->device->node_type) ==
-	     RDMA_TRANSPORT_IWARP)
+	if (rdma_protocol_iwarp(xprt->sc_cm_id->device,
+				xprt->sc_cm_id->port_num))
 		return 1;
 	else
 		return min_t(int, sge_count, xprt->sc_max_sge);
diff --git a/net/sunrpc/xprtrdma/svc_rdma_transport.c b/net/sunrpc/xprtrdma/svc_rdma_transport.c
index f609c1c..3df8320 100644
--- a/net/sunrpc/xprtrdma/svc_rdma_transport.c
+++ b/net/sunrpc/xprtrdma/svc_rdma_transport.c
@@ -851,7 +851,7 @@ static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt)
 	struct ib_qp_init_attr qp_attr;
 	struct ib_device_attr devattr;
 	int uninitialized_var(dma_mr_acc);
-	int need_dma_mr;
+	int need_dma_mr = 0;
 	int ret;
 	int i;
 
@@ -985,35 +985,26 @@ static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt)
 	/*
 	 * Determine if a DMA MR is required and if so, what privs are required
 	 */
-	switch (rdma_node_get_transport(newxprt->sc_cm_id->device->node_type)) {
-	case RDMA_TRANSPORT_IWARP:
-		newxprt->sc_dev_caps |= SVCRDMA_DEVCAP_READ_W_INV;
-		if (!(newxprt->sc_dev_caps & SVCRDMA_DEVCAP_FAST_REG)) {
-			need_dma_mr = 1;
-			dma_mr_acc =
-				(IB_ACCESS_LOCAL_WRITE |
-				 IB_ACCESS_REMOTE_WRITE);
-		} else if (!(devattr.device_cap_flags & IB_DEVICE_LOCAL_DMA_LKEY)) {
-			need_dma_mr = 1;
-			dma_mr_acc = IB_ACCESS_LOCAL_WRITE;
-		} else
-			need_dma_mr = 0;
-		break;
-	case RDMA_TRANSPORT_IB:
-		if (!(newxprt->sc_dev_caps & SVCRDMA_DEVCAP_FAST_REG)) {
-			need_dma_mr = 1;
-			dma_mr_acc = IB_ACCESS_LOCAL_WRITE;
-		} else if (!(devattr.device_cap_flags &
-			     IB_DEVICE_LOCAL_DMA_LKEY)) {
-			need_dma_mr = 1;
-			dma_mr_acc = IB_ACCESS_LOCAL_WRITE;
-		} else
-			need_dma_mr = 0;
-		break;
-	default:
+	if (!rdma_protocol_iwarp(newxprt->sc_cm_id->device,
+				 newxprt->sc_cm_id->port_num) &&
+	    !rdma_ib_or_iboe(newxprt->sc_cm_id->device,
+			     newxprt->sc_cm_id->port_num))
 		goto errout;
+
+	if (!(newxprt->sc_dev_caps & SVCRDMA_DEVCAP_FAST_REG) ||
+	    !(devattr.device_cap_flags & IB_DEVICE_LOCAL_DMA_LKEY)) {
+		need_dma_mr = 1;
+		dma_mr_acc = IB_ACCESS_LOCAL_WRITE;
+		if (rdma_protocol_iwarp(newxprt->sc_cm_id->device,
+					newxprt->sc_cm_id->port_num) &&
+		    !(newxprt->sc_dev_caps & SVCRDMA_DEVCAP_FAST_REG))
+			dma_mr_acc |= IB_ACCESS_REMOTE_WRITE;
 	}
 
+	if (rdma_protocol_iwarp(newxprt->sc_cm_id->device,
+				newxprt->sc_cm_id->port_num))
+		newxprt->sc_dev_caps |= SVCRDMA_DEVCAP_READ_W_INV;
+
 	/* Create the DMA MR if needed, otherwise, use the DMA LKEY */
 	if (need_dma_mr) {
 		/* Register all of physical memory */
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 09/23] IB/Verbs: Reform IB-core verbs
  2015-05-05 12:50 ` Michael Wang
@ 2015-05-05 12:50     ` Michael Wang
  -1 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Use raw management helpers to reform IB-core verbs

Signed-off-by: Michael Wang <yun.wang-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
---
 drivers/infiniband/core/verbs.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c
index f93eb8d..7dd2f51 100644
--- a/drivers/infiniband/core/verbs.c
+++ b/drivers/infiniband/core/verbs.c
@@ -198,11 +198,9 @@ int ib_init_ah_from_wc(struct ib_device *device, u8 port_num, struct ib_wc *wc,
 	u32 flow_class;
 	u16 gid_index;
 	int ret;
-	int is_eth = (rdma_port_get_link_layer(device, port_num) ==
-			IB_LINK_LAYER_ETHERNET);
 
 	memset(ah_attr, 0, sizeof *ah_attr);
-	if (is_eth) {
+	if (rdma_protocol_iboe(device, port_num)) {
 		if (!(wc->wc_flags & IB_WC_GRH))
 			return -EPROTOTYPE;
 
@@ -871,7 +869,7 @@ int ib_resolve_eth_l2_attrs(struct ib_qp *qp,
 	union ib_gid  sgid;
 
 	if ((*qp_attr_mask & IB_QP_AV)  &&
-	    (rdma_port_get_link_layer(qp->device, qp_attr->ah_attr.port_num) == IB_LINK_LAYER_ETHERNET)) {
+	    (rdma_protocol_iboe(qp->device, qp_attr->ah_attr.port_num))) {
 		ret = ib_query_gid(qp->device, qp_attr->ah_attr.port_num,
 				   qp_attr->ah_attr.grh.sgid_index, &sgid);
 		if (ret)
-- 
2.1.0

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

^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 09/23] IB/Verbs: Reform IB-core verbs
@ 2015-05-05 12:50     ` Michael Wang
  0 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma, linux-kernel
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Use raw management helpers to reform IB-core verbs

Signed-off-by: Michael Wang <yun.wang@profitbricks.com>
---
 drivers/infiniband/core/verbs.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c
index f93eb8d..7dd2f51 100644
--- a/drivers/infiniband/core/verbs.c
+++ b/drivers/infiniband/core/verbs.c
@@ -198,11 +198,9 @@ int ib_init_ah_from_wc(struct ib_device *device, u8 port_num, struct ib_wc *wc,
 	u32 flow_class;
 	u16 gid_index;
 	int ret;
-	int is_eth = (rdma_port_get_link_layer(device, port_num) ==
-			IB_LINK_LAYER_ETHERNET);
 
 	memset(ah_attr, 0, sizeof *ah_attr);
-	if (is_eth) {
+	if (rdma_protocol_iboe(device, port_num)) {
 		if (!(wc->wc_flags & IB_WC_GRH))
 			return -EPROTOTYPE;
 
@@ -871,7 +869,7 @@ int ib_resolve_eth_l2_attrs(struct ib_qp *qp,
 	union ib_gid  sgid;
 
 	if ((*qp_attr_mask & IB_QP_AV)  &&
-	    (rdma_port_get_link_layer(qp->device, qp_attr->ah_attr.port_num) == IB_LINK_LAYER_ETHERNET)) {
+	    (rdma_protocol_iboe(qp->device, qp_attr->ah_attr.port_num))) {
 		ret = ib_query_gid(qp->device, qp_attr->ah_attr.port_num,
 				   qp_attr->ah_attr.grh.sgid_index, &sgid);
 		if (ret)
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 10/23] IB/Verbs: Reform cm related part in IB-core cma/ucm
  2015-05-05 12:50 ` Michael Wang
@ 2015-05-05 12:50     ` Michael Wang
  -1 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Use raw management helpers to reform cm related part in IB-core cma/ucm.

Few checks focus on the device cm type rather than the port capability,
directly pass port 1 works currently, but can't support mixing cm type
device in future.

Signed-off-by: Michael Wang <yun.wang-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
---
 drivers/infiniband/core/cma.c | 81 +++++++++++++------------------------------
 drivers/infiniband/core/ucm.c |  3 +-
 2 files changed, 26 insertions(+), 58 deletions(-)

diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index d570030..8a07e89 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -735,8 +735,7 @@ int rdma_init_qp_attr(struct rdma_cm_id *id, struct ib_qp_attr *qp_attr,
 	int ret = 0;
 
 	id_priv = container_of(id, struct rdma_id_private, id);
-	switch (rdma_node_get_transport(id_priv->id.device->node_type)) {
-	case RDMA_TRANSPORT_IB:
+	if (rdma_ib_or_iboe(id->device, id->port_num)) {
 		if (!id_priv->cm_id.ib || (id_priv->id.qp_type == IB_QPT_UD))
 			ret = cma_ib_init_qp_attr(id_priv, qp_attr, qp_attr_mask);
 		else
@@ -745,19 +744,15 @@ int rdma_init_qp_attr(struct rdma_cm_id *id, struct ib_qp_attr *qp_attr,
 
 		if (qp_attr->qp_state == IB_QPS_RTR)
 			qp_attr->rq_psn = id_priv->seq_num;
-		break;
-	case RDMA_TRANSPORT_IWARP:
+	} else if (rdma_protocol_iwarp(id->device, id->port_num)) {
 		if (!id_priv->cm_id.iw) {
 			qp_attr->qp_access_flags = 0;
 			*qp_attr_mask = IB_QP_STATE | IB_QP_ACCESS_FLAGS;
 		} else
 			ret = iw_cm_init_qp_attr(id_priv->cm_id.iw, qp_attr,
 						 qp_attr_mask);
-		break;
-	default:
+	} else
 		ret = -ENOSYS;
-		break;
-	}
 
 	return ret;
 }
@@ -1037,17 +1032,12 @@ void rdma_destroy_id(struct rdma_cm_id *id)
 	mutex_unlock(&id_priv->handler_mutex);
 
 	if (id_priv->cma_dev) {
-		switch (rdma_node_get_transport(id_priv->id.device->node_type)) {
-		case RDMA_TRANSPORT_IB:
+		if (rdma_ib_or_iboe(id_priv->id.device, 1)) {
 			if (id_priv->cm_id.ib)
 				ib_destroy_cm_id(id_priv->cm_id.ib);
-			break;
-		case RDMA_TRANSPORT_IWARP:
+		} else if (rdma_protocol_iwarp(id_priv->id.device, 1)) {
 			if (id_priv->cm_id.iw)
 				iw_destroy_cm_id(id_priv->cm_id.iw);
-			break;
-		default:
-			break;
 		}
 		cma_leave_mc_groups(id_priv);
 		cma_release_dev(id_priv);
@@ -1626,7 +1616,7 @@ static void cma_listen_on_dev(struct rdma_id_private *id_priv,
 	int ret;
 
 	if (cma_family(id_priv) == AF_IB &&
-	    rdma_node_get_transport(cma_dev->device->node_type) != RDMA_TRANSPORT_IB)
+	    !rdma_ib_or_iboe(cma_dev->device, 1))
 		return;
 
 	id = rdma_create_id(cma_listen_handler, id_priv, id_priv->id.ps,
@@ -2028,7 +2018,7 @@ static int cma_bind_loopback(struct rdma_id_private *id_priv)
 	mutex_lock(&lock);
 	list_for_each_entry(cur_dev, &dev_list, list) {
 		if (cma_family(id_priv) == AF_IB &&
-		    rdma_node_get_transport(cur_dev->device->node_type) != RDMA_TRANSPORT_IB)
+		    !rdma_ib_or_iboe(cur_dev->device, 1))
 			continue;
 
 		if (!cma_dev)
@@ -2060,7 +2050,7 @@ port_found:
 		goto out;
 
 	id_priv->id.route.addr.dev_addr.dev_type =
-		(rdma_port_get_link_layer(cma_dev->device, p) == IB_LINK_LAYER_INFINIBAND) ?
+		(rdma_protocol_ib(cma_dev->device, p)) ?
 		ARPHRD_INFINIBAND : ARPHRD_ETHER;
 
 	rdma_addr_set_sgid(&id_priv->id.route.addr.dev_addr, &gid);
@@ -2537,18 +2527,15 @@ int rdma_listen(struct rdma_cm_id *id, int backlog)
 
 	id_priv->backlog = backlog;
 	if (id->device) {
-		switch (rdma_node_get_transport(id->device->node_type)) {
-		case RDMA_TRANSPORT_IB:
+		if (rdma_ib_or_iboe(id->device, 1)) {
 			ret = cma_ib_listen(id_priv);
 			if (ret)
 				goto err;
-			break;
-		case RDMA_TRANSPORT_IWARP:
+		} else if (rdma_protocol_iwarp(id->device, 1)) {
 			ret = cma_iw_listen(id_priv, backlog);
 			if (ret)
 				goto err;
-			break;
-		default:
+		} else {
 			ret = -ENOSYS;
 			goto err;
 		}
@@ -2884,20 +2871,15 @@ int rdma_connect(struct rdma_cm_id *id, struct rdma_conn_param *conn_param)
 		id_priv->srq = conn_param->srq;
 	}
 
-	switch (rdma_node_get_transport(id->device->node_type)) {
-	case RDMA_TRANSPORT_IB:
+	if (rdma_ib_or_iboe(id->device, id->port_num)) {
 		if (id->qp_type == IB_QPT_UD)
 			ret = cma_resolve_ib_udp(id_priv, conn_param);
 		else
 			ret = cma_connect_ib(id_priv, conn_param);
-		break;
-	case RDMA_TRANSPORT_IWARP:
+	} else if (rdma_protocol_iwarp(id->device, id->port_num))
 		ret = cma_connect_iw(id_priv, conn_param);
-		break;
-	default:
+	else
 		ret = -ENOSYS;
-		break;
-	}
 	if (ret)
 		goto err;
 
@@ -3000,8 +2982,7 @@ int rdma_accept(struct rdma_cm_id *id, struct rdma_conn_param *conn_param)
 		id_priv->srq = conn_param->srq;
 	}
 
-	switch (rdma_node_get_transport(id->device->node_type)) {
-	case RDMA_TRANSPORT_IB:
+	if (rdma_ib_or_iboe(id->device, id->port_num)) {
 		if (id->qp_type == IB_QPT_UD) {
 			if (conn_param)
 				ret = cma_send_sidr_rep(id_priv, IB_SIDR_SUCCESS,
@@ -3017,14 +2998,10 @@ int rdma_accept(struct rdma_cm_id *id, struct rdma_conn_param *conn_param)
 			else
 				ret = cma_rep_recv(id_priv);
 		}
-		break;
-	case RDMA_TRANSPORT_IWARP:
+	} else if (rdma_protocol_iwarp(id->device, id->port_num))
 		ret = cma_accept_iw(id_priv, conn_param);
-		break;
-	default:
+	else
 		ret = -ENOSYS;
-		break;
-	}
 
 	if (ret)
 		goto reject;
@@ -3068,8 +3045,7 @@ int rdma_reject(struct rdma_cm_id *id, const void *private_data,
 	if (!id_priv->cm_id.ib)
 		return -EINVAL;
 
-	switch (rdma_node_get_transport(id->device->node_type)) {
-	case RDMA_TRANSPORT_IB:
+	if (rdma_ib_or_iboe(id->device, id->port_num)) {
 		if (id->qp_type == IB_QPT_UD)
 			ret = cma_send_sidr_rep(id_priv, IB_SIDR_REJECT, 0,
 						private_data, private_data_len);
@@ -3077,15 +3053,12 @@ int rdma_reject(struct rdma_cm_id *id, const void *private_data,
 			ret = ib_send_cm_rej(id_priv->cm_id.ib,
 					     IB_CM_REJ_CONSUMER_DEFINED, NULL,
 					     0, private_data, private_data_len);
-		break;
-	case RDMA_TRANSPORT_IWARP:
+	} else if (rdma_protocol_iwarp(id->device, id->port_num)) {
 		ret = iw_cm_reject(id_priv->cm_id.iw,
 				   private_data, private_data_len);
-		break;
-	default:
+	} else
 		ret = -ENOSYS;
-		break;
-	}
+
 	return ret;
 }
 EXPORT_SYMBOL(rdma_reject);
@@ -3099,22 +3072,18 @@ int rdma_disconnect(struct rdma_cm_id *id)
 	if (!id_priv->cm_id.ib)
 		return -EINVAL;
 
-	switch (rdma_node_get_transport(id->device->node_type)) {
-	case RDMA_TRANSPORT_IB:
+	if (rdma_ib_or_iboe(id->device, id->port_num)) {
 		ret = cma_modify_qp_err(id_priv);
 		if (ret)
 			goto out;
 		/* Initiate or respond to a disconnect. */
 		if (ib_send_cm_dreq(id_priv->cm_id.ib, NULL, 0))
 			ib_send_cm_drep(id_priv->cm_id.ib, NULL, 0);
-		break;
-	case RDMA_TRANSPORT_IWARP:
+	} else if (rdma_protocol_iwarp(id->device, id->port_num)) {
 		ret = iw_cm_disconnect(id_priv->cm_id.iw, 0);
-		break;
-	default:
+	} else
 		ret = -EINVAL;
-		break;
-	}
+
 out:
 	return ret;
 }
diff --git a/drivers/infiniband/core/ucm.c b/drivers/infiniband/core/ucm.c
index f2f6393..70e0ccb 100644
--- a/drivers/infiniband/core/ucm.c
+++ b/drivers/infiniband/core/ucm.c
@@ -1253,8 +1253,7 @@ static void ib_ucm_add_one(struct ib_device *device)
 	dev_t base;
 	struct ib_ucm_device *ucm_dev;
 
-	if (!device->alloc_ucontext ||
-	    rdma_node_get_transport(device->node_type) != RDMA_TRANSPORT_IB)
+	if (!device->alloc_ucontext || !rdma_ib_or_iboe(device, 1))
 		return;
 
 	ucm_dev = kzalloc(sizeof *ucm_dev, GFP_KERNEL);
-- 
2.1.0

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

^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 10/23] IB/Verbs: Reform cm related part in IB-core cma/ucm
@ 2015-05-05 12:50     ` Michael Wang
  0 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma, linux-kernel
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Use raw management helpers to reform cm related part in IB-core cma/ucm.

Few checks focus on the device cm type rather than the port capability,
directly pass port 1 works currently, but can't support mixing cm type
device in future.

Signed-off-by: Michael Wang <yun.wang@profitbricks.com>
---
 drivers/infiniband/core/cma.c | 81 +++++++++++++------------------------------
 drivers/infiniband/core/ucm.c |  3 +-
 2 files changed, 26 insertions(+), 58 deletions(-)

diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index d570030..8a07e89 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -735,8 +735,7 @@ int rdma_init_qp_attr(struct rdma_cm_id *id, struct ib_qp_attr *qp_attr,
 	int ret = 0;
 
 	id_priv = container_of(id, struct rdma_id_private, id);
-	switch (rdma_node_get_transport(id_priv->id.device->node_type)) {
-	case RDMA_TRANSPORT_IB:
+	if (rdma_ib_or_iboe(id->device, id->port_num)) {
 		if (!id_priv->cm_id.ib || (id_priv->id.qp_type == IB_QPT_UD))
 			ret = cma_ib_init_qp_attr(id_priv, qp_attr, qp_attr_mask);
 		else
@@ -745,19 +744,15 @@ int rdma_init_qp_attr(struct rdma_cm_id *id, struct ib_qp_attr *qp_attr,
 
 		if (qp_attr->qp_state == IB_QPS_RTR)
 			qp_attr->rq_psn = id_priv->seq_num;
-		break;
-	case RDMA_TRANSPORT_IWARP:
+	} else if (rdma_protocol_iwarp(id->device, id->port_num)) {
 		if (!id_priv->cm_id.iw) {
 			qp_attr->qp_access_flags = 0;
 			*qp_attr_mask = IB_QP_STATE | IB_QP_ACCESS_FLAGS;
 		} else
 			ret = iw_cm_init_qp_attr(id_priv->cm_id.iw, qp_attr,
 						 qp_attr_mask);
-		break;
-	default:
+	} else
 		ret = -ENOSYS;
-		break;
-	}
 
 	return ret;
 }
@@ -1037,17 +1032,12 @@ void rdma_destroy_id(struct rdma_cm_id *id)
 	mutex_unlock(&id_priv->handler_mutex);
 
 	if (id_priv->cma_dev) {
-		switch (rdma_node_get_transport(id_priv->id.device->node_type)) {
-		case RDMA_TRANSPORT_IB:
+		if (rdma_ib_or_iboe(id_priv->id.device, 1)) {
 			if (id_priv->cm_id.ib)
 				ib_destroy_cm_id(id_priv->cm_id.ib);
-			break;
-		case RDMA_TRANSPORT_IWARP:
+		} else if (rdma_protocol_iwarp(id_priv->id.device, 1)) {
 			if (id_priv->cm_id.iw)
 				iw_destroy_cm_id(id_priv->cm_id.iw);
-			break;
-		default:
-			break;
 		}
 		cma_leave_mc_groups(id_priv);
 		cma_release_dev(id_priv);
@@ -1626,7 +1616,7 @@ static void cma_listen_on_dev(struct rdma_id_private *id_priv,
 	int ret;
 
 	if (cma_family(id_priv) == AF_IB &&
-	    rdma_node_get_transport(cma_dev->device->node_type) != RDMA_TRANSPORT_IB)
+	    !rdma_ib_or_iboe(cma_dev->device, 1))
 		return;
 
 	id = rdma_create_id(cma_listen_handler, id_priv, id_priv->id.ps,
@@ -2028,7 +2018,7 @@ static int cma_bind_loopback(struct rdma_id_private *id_priv)
 	mutex_lock(&lock);
 	list_for_each_entry(cur_dev, &dev_list, list) {
 		if (cma_family(id_priv) == AF_IB &&
-		    rdma_node_get_transport(cur_dev->device->node_type) != RDMA_TRANSPORT_IB)
+		    !rdma_ib_or_iboe(cur_dev->device, 1))
 			continue;
 
 		if (!cma_dev)
@@ -2060,7 +2050,7 @@ port_found:
 		goto out;
 
 	id_priv->id.route.addr.dev_addr.dev_type =
-		(rdma_port_get_link_layer(cma_dev->device, p) == IB_LINK_LAYER_INFINIBAND) ?
+		(rdma_protocol_ib(cma_dev->device, p)) ?
 		ARPHRD_INFINIBAND : ARPHRD_ETHER;
 
 	rdma_addr_set_sgid(&id_priv->id.route.addr.dev_addr, &gid);
@@ -2537,18 +2527,15 @@ int rdma_listen(struct rdma_cm_id *id, int backlog)
 
 	id_priv->backlog = backlog;
 	if (id->device) {
-		switch (rdma_node_get_transport(id->device->node_type)) {
-		case RDMA_TRANSPORT_IB:
+		if (rdma_ib_or_iboe(id->device, 1)) {
 			ret = cma_ib_listen(id_priv);
 			if (ret)
 				goto err;
-			break;
-		case RDMA_TRANSPORT_IWARP:
+		} else if (rdma_protocol_iwarp(id->device, 1)) {
 			ret = cma_iw_listen(id_priv, backlog);
 			if (ret)
 				goto err;
-			break;
-		default:
+		} else {
 			ret = -ENOSYS;
 			goto err;
 		}
@@ -2884,20 +2871,15 @@ int rdma_connect(struct rdma_cm_id *id, struct rdma_conn_param *conn_param)
 		id_priv->srq = conn_param->srq;
 	}
 
-	switch (rdma_node_get_transport(id->device->node_type)) {
-	case RDMA_TRANSPORT_IB:
+	if (rdma_ib_or_iboe(id->device, id->port_num)) {
 		if (id->qp_type == IB_QPT_UD)
 			ret = cma_resolve_ib_udp(id_priv, conn_param);
 		else
 			ret = cma_connect_ib(id_priv, conn_param);
-		break;
-	case RDMA_TRANSPORT_IWARP:
+	} else if (rdma_protocol_iwarp(id->device, id->port_num))
 		ret = cma_connect_iw(id_priv, conn_param);
-		break;
-	default:
+	else
 		ret = -ENOSYS;
-		break;
-	}
 	if (ret)
 		goto err;
 
@@ -3000,8 +2982,7 @@ int rdma_accept(struct rdma_cm_id *id, struct rdma_conn_param *conn_param)
 		id_priv->srq = conn_param->srq;
 	}
 
-	switch (rdma_node_get_transport(id->device->node_type)) {
-	case RDMA_TRANSPORT_IB:
+	if (rdma_ib_or_iboe(id->device, id->port_num)) {
 		if (id->qp_type == IB_QPT_UD) {
 			if (conn_param)
 				ret = cma_send_sidr_rep(id_priv, IB_SIDR_SUCCESS,
@@ -3017,14 +2998,10 @@ int rdma_accept(struct rdma_cm_id *id, struct rdma_conn_param *conn_param)
 			else
 				ret = cma_rep_recv(id_priv);
 		}
-		break;
-	case RDMA_TRANSPORT_IWARP:
+	} else if (rdma_protocol_iwarp(id->device, id->port_num))
 		ret = cma_accept_iw(id_priv, conn_param);
-		break;
-	default:
+	else
 		ret = -ENOSYS;
-		break;
-	}
 
 	if (ret)
 		goto reject;
@@ -3068,8 +3045,7 @@ int rdma_reject(struct rdma_cm_id *id, const void *private_data,
 	if (!id_priv->cm_id.ib)
 		return -EINVAL;
 
-	switch (rdma_node_get_transport(id->device->node_type)) {
-	case RDMA_TRANSPORT_IB:
+	if (rdma_ib_or_iboe(id->device, id->port_num)) {
 		if (id->qp_type == IB_QPT_UD)
 			ret = cma_send_sidr_rep(id_priv, IB_SIDR_REJECT, 0,
 						private_data, private_data_len);
@@ -3077,15 +3053,12 @@ int rdma_reject(struct rdma_cm_id *id, const void *private_data,
 			ret = ib_send_cm_rej(id_priv->cm_id.ib,
 					     IB_CM_REJ_CONSUMER_DEFINED, NULL,
 					     0, private_data, private_data_len);
-		break;
-	case RDMA_TRANSPORT_IWARP:
+	} else if (rdma_protocol_iwarp(id->device, id->port_num)) {
 		ret = iw_cm_reject(id_priv->cm_id.iw,
 				   private_data, private_data_len);
-		break;
-	default:
+	} else
 		ret = -ENOSYS;
-		break;
-	}
+
 	return ret;
 }
 EXPORT_SYMBOL(rdma_reject);
@@ -3099,22 +3072,18 @@ int rdma_disconnect(struct rdma_cm_id *id)
 	if (!id_priv->cm_id.ib)
 		return -EINVAL;
 
-	switch (rdma_node_get_transport(id->device->node_type)) {
-	case RDMA_TRANSPORT_IB:
+	if (rdma_ib_or_iboe(id->device, id->port_num)) {
 		ret = cma_modify_qp_err(id_priv);
 		if (ret)
 			goto out;
 		/* Initiate or respond to a disconnect. */
 		if (ib_send_cm_dreq(id_priv->cm_id.ib, NULL, 0))
 			ib_send_cm_drep(id_priv->cm_id.ib, NULL, 0);
-		break;
-	case RDMA_TRANSPORT_IWARP:
+	} else if (rdma_protocol_iwarp(id->device, id->port_num)) {
 		ret = iw_cm_disconnect(id_priv->cm_id.iw, 0);
-		break;
-	default:
+	} else
 		ret = -EINVAL;
-		break;
-	}
+
 out:
 	return ret;
 }
diff --git a/drivers/infiniband/core/ucm.c b/drivers/infiniband/core/ucm.c
index f2f6393..70e0ccb 100644
--- a/drivers/infiniband/core/ucm.c
+++ b/drivers/infiniband/core/ucm.c
@@ -1253,8 +1253,7 @@ static void ib_ucm_add_one(struct ib_device *device)
 	dev_t base;
 	struct ib_ucm_device *ucm_dev;
 
-	if (!device->alloc_ucontext ||
-	    rdma_node_get_transport(device->node_type) != RDMA_TRANSPORT_IB)
+	if (!device->alloc_ucontext || !rdma_ib_or_iboe(device, 1))
 		return;
 
 	ucm_dev = kzalloc(sizeof *ucm_dev, GFP_KERNEL);
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 11/23] IB/Verbs: Reform route related part in IB-core cma
  2015-05-05 12:50 ` Michael Wang
@ 2015-05-05 12:50     ` Michael Wang
  -1 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Use raw management helpers to reform route related part in IB-core cma.

Signed-off-by: Michael Wang <yun.wang-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
---
 drivers/infiniband/core/cma.c  | 31 ++++++++-----------------------
 drivers/infiniband/core/ucma.c | 25 ++++++-------------------
 2 files changed, 14 insertions(+), 42 deletions(-)

diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index 8a07e89..36c5f8a 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -923,13 +923,9 @@ static inline int cma_user_data_offset(struct rdma_id_private *id_priv)
 
 static void cma_cancel_route(struct rdma_id_private *id_priv)
 {
-	switch (rdma_port_get_link_layer(id_priv->id.device, id_priv->id.port_num)) {
-	case IB_LINK_LAYER_INFINIBAND:
+	if (rdma_protocol_ib(id_priv->id.device, id_priv->id.port_num)) {
 		if (id_priv->query)
 			ib_sa_cancel_query(id_priv->query_id, id_priv->query);
-		break;
-	default:
-		break;
 	}
 }
 
@@ -1957,26 +1953,15 @@ int rdma_resolve_route(struct rdma_cm_id *id, int timeout_ms)
 		return -EINVAL;
 
 	atomic_inc(&id_priv->refcount);
-	switch (rdma_node_get_transport(id->device->node_type)) {
-	case RDMA_TRANSPORT_IB:
-		switch (rdma_port_get_link_layer(id->device, id->port_num)) {
-		case IB_LINK_LAYER_INFINIBAND:
-			ret = cma_resolve_ib_route(id_priv, timeout_ms);
-			break;
-		case IB_LINK_LAYER_ETHERNET:
-			ret = cma_resolve_iboe_route(id_priv);
-			break;
-		default:
-			ret = -ENOSYS;
-		}
-		break;
-	case RDMA_TRANSPORT_IWARP:
+	if (rdma_protocol_ib(id->device, id->port_num))
+		ret = cma_resolve_ib_route(id_priv, timeout_ms);
+	else if (rdma_protocol_iboe(id->device, id->port_num))
+		ret = cma_resolve_iboe_route(id_priv);
+	else if (rdma_protocol_iwarp(id->device, id->port_num))
 		ret = cma_resolve_iw_route(id_priv, timeout_ms);
-		break;
-	default:
+	else
 		ret = -ENOSYS;
-		break;
-	}
+
 	if (ret)
 		goto err;
 
diff --git a/drivers/infiniband/core/ucma.c b/drivers/infiniband/core/ucma.c
index 45d67e9..dae7620 100644
--- a/drivers/infiniband/core/ucma.c
+++ b/drivers/infiniband/core/ucma.c
@@ -722,26 +722,13 @@ static ssize_t ucma_query_route(struct ucma_file *file,
 
 	resp.node_guid = (__force __u64) ctx->cm_id->device->node_guid;
 	resp.port_num = ctx->cm_id->port_num;
-	switch (rdma_node_get_transport(ctx->cm_id->device->node_type)) {
-	case RDMA_TRANSPORT_IB:
-		switch (rdma_port_get_link_layer(ctx->cm_id->device,
-			ctx->cm_id->port_num)) {
-		case IB_LINK_LAYER_INFINIBAND:
-			ucma_copy_ib_route(&resp, &ctx->cm_id->route);
-			break;
-		case IB_LINK_LAYER_ETHERNET:
-			ucma_copy_iboe_route(&resp, &ctx->cm_id->route);
-			break;
-		default:
-			break;
-		}
-		break;
-	case RDMA_TRANSPORT_IWARP:
+
+	if (rdma_protocol_ib(ctx->cm_id->device, ctx->cm_id->port_num))
+		ucma_copy_ib_route(&resp, &ctx->cm_id->route);
+	else if (rdma_protocol_iboe(ctx->cm_id->device, ctx->cm_id->port_num))
+		ucma_copy_iboe_route(&resp, &ctx->cm_id->route);
+	else if (rdma_protocol_iwarp(ctx->cm_id->device, ctx->cm_id->port_num))
 		ucma_copy_iw_route(&resp, &ctx->cm_id->route);
-		break;
-	default:
-		break;
-	}
 
 out:
 	if (copy_to_user((void __user *)(unsigned long)cmd.response,
-- 
2.1.0

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

^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 11/23] IB/Verbs: Reform route related part in IB-core cma
@ 2015-05-05 12:50     ` Michael Wang
  0 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma, linux-kernel
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Use raw management helpers to reform route related part in IB-core cma.

Signed-off-by: Michael Wang <yun.wang@profitbricks.com>
---
 drivers/infiniband/core/cma.c  | 31 ++++++++-----------------------
 drivers/infiniband/core/ucma.c | 25 ++++++-------------------
 2 files changed, 14 insertions(+), 42 deletions(-)

diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index 8a07e89..36c5f8a 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -923,13 +923,9 @@ static inline int cma_user_data_offset(struct rdma_id_private *id_priv)
 
 static void cma_cancel_route(struct rdma_id_private *id_priv)
 {
-	switch (rdma_port_get_link_layer(id_priv->id.device, id_priv->id.port_num)) {
-	case IB_LINK_LAYER_INFINIBAND:
+	if (rdma_protocol_ib(id_priv->id.device, id_priv->id.port_num)) {
 		if (id_priv->query)
 			ib_sa_cancel_query(id_priv->query_id, id_priv->query);
-		break;
-	default:
-		break;
 	}
 }
 
@@ -1957,26 +1953,15 @@ int rdma_resolve_route(struct rdma_cm_id *id, int timeout_ms)
 		return -EINVAL;
 
 	atomic_inc(&id_priv->refcount);
-	switch (rdma_node_get_transport(id->device->node_type)) {
-	case RDMA_TRANSPORT_IB:
-		switch (rdma_port_get_link_layer(id->device, id->port_num)) {
-		case IB_LINK_LAYER_INFINIBAND:
-			ret = cma_resolve_ib_route(id_priv, timeout_ms);
-			break;
-		case IB_LINK_LAYER_ETHERNET:
-			ret = cma_resolve_iboe_route(id_priv);
-			break;
-		default:
-			ret = -ENOSYS;
-		}
-		break;
-	case RDMA_TRANSPORT_IWARP:
+	if (rdma_protocol_ib(id->device, id->port_num))
+		ret = cma_resolve_ib_route(id_priv, timeout_ms);
+	else if (rdma_protocol_iboe(id->device, id->port_num))
+		ret = cma_resolve_iboe_route(id_priv);
+	else if (rdma_protocol_iwarp(id->device, id->port_num))
 		ret = cma_resolve_iw_route(id_priv, timeout_ms);
-		break;
-	default:
+	else
 		ret = -ENOSYS;
-		break;
-	}
+
 	if (ret)
 		goto err;
 
diff --git a/drivers/infiniband/core/ucma.c b/drivers/infiniband/core/ucma.c
index 45d67e9..dae7620 100644
--- a/drivers/infiniband/core/ucma.c
+++ b/drivers/infiniband/core/ucma.c
@@ -722,26 +722,13 @@ static ssize_t ucma_query_route(struct ucma_file *file,
 
 	resp.node_guid = (__force __u64) ctx->cm_id->device->node_guid;
 	resp.port_num = ctx->cm_id->port_num;
-	switch (rdma_node_get_transport(ctx->cm_id->device->node_type)) {
-	case RDMA_TRANSPORT_IB:
-		switch (rdma_port_get_link_layer(ctx->cm_id->device,
-			ctx->cm_id->port_num)) {
-		case IB_LINK_LAYER_INFINIBAND:
-			ucma_copy_ib_route(&resp, &ctx->cm_id->route);
-			break;
-		case IB_LINK_LAYER_ETHERNET:
-			ucma_copy_iboe_route(&resp, &ctx->cm_id->route);
-			break;
-		default:
-			break;
-		}
-		break;
-	case RDMA_TRANSPORT_IWARP:
+
+	if (rdma_protocol_ib(ctx->cm_id->device, ctx->cm_id->port_num))
+		ucma_copy_ib_route(&resp, &ctx->cm_id->route);
+	else if (rdma_protocol_iboe(ctx->cm_id->device, ctx->cm_id->port_num))
+		ucma_copy_iboe_route(&resp, &ctx->cm_id->route);
+	else if (rdma_protocol_iwarp(ctx->cm_id->device, ctx->cm_id->port_num))
 		ucma_copy_iw_route(&resp, &ctx->cm_id->route);
-		break;
-	default:
-		break;
-	}
 
 out:
 	if (copy_to_user((void __user *)(unsigned long)cmd.response,
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 12/23] IB/Verbs: Reform mcast related part in IB-core cma
  2015-05-05 12:50 ` Michael Wang
                   ` (2 preceding siblings ...)
  (?)
@ 2015-05-05 12:50 ` Michael Wang
  -1 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma, linux-kernel
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Use raw management helpers to reform mcast related part in IB-core cma.

Signed-off-by: Michael Wang <yun.wang@profitbricks.com>
---
 drivers/infiniband/core/cma.c | 56 ++++++++++++++-----------------------------
 1 file changed, 18 insertions(+), 38 deletions(-)

diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index 36c5f8a..34ec13f 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -997,17 +997,12 @@ static void cma_leave_mc_groups(struct rdma_id_private *id_priv)
 		mc = container_of(id_priv->mc_list.next,
 				  struct cma_multicast, list);
 		list_del(&mc->list);
-		switch (rdma_port_get_link_layer(id_priv->cma_dev->device, id_priv->id.port_num)) {
-		case IB_LINK_LAYER_INFINIBAND:
+		if (rdma_protocol_ib(id_priv->cma_dev->device,
+				      id_priv->id.port_num)) {
 			ib_sa_free_multicast(mc->multicast.ib);
 			kfree(mc);
-			break;
-		case IB_LINK_LAYER_ETHERNET:
+		} else
 			kref_put(&mc->mcref, release_mc);
-			break;
-		default:
-			break;
-		}
 	}
 }
 
@@ -3314,24 +3309,13 @@ int rdma_join_multicast(struct rdma_cm_id *id, struct sockaddr *addr,
 	list_add(&mc->list, &id_priv->mc_list);
 	spin_unlock(&id_priv->lock);
 
-	switch (rdma_node_get_transport(id->device->node_type)) {
-	case RDMA_TRANSPORT_IB:
-		switch (rdma_port_get_link_layer(id->device, id->port_num)) {
-		case IB_LINK_LAYER_INFINIBAND:
-			ret = cma_join_ib_multicast(id_priv, mc);
-			break;
-		case IB_LINK_LAYER_ETHERNET:
-			kref_init(&mc->mcref);
-			ret = cma_iboe_join_multicast(id_priv, mc);
-			break;
-		default:
-			ret = -EINVAL;
-		}
-		break;
-	default:
+	if (rdma_protocol_iboe(id->device, id->port_num)) {
+		kref_init(&mc->mcref);
+		ret = cma_iboe_join_multicast(id_priv, mc);
+	} else if (rdma_protocol_ib(id->device, id->port_num))
+		ret = cma_join_ib_multicast(id_priv, mc);
+	else
 		ret = -ENOSYS;
-		break;
-	}
 
 	if (ret) {
 		spin_lock_irq(&id_priv->lock);
@@ -3359,19 +3343,15 @@ void rdma_leave_multicast(struct rdma_cm_id *id, struct sockaddr *addr)
 				ib_detach_mcast(id->qp,
 						&mc->multicast.ib->rec.mgid,
 						be16_to_cpu(mc->multicast.ib->rec.mlid));
-			if (rdma_node_get_transport(id_priv->cma_dev->device->node_type) == RDMA_TRANSPORT_IB) {
-				switch (rdma_port_get_link_layer(id->device, id->port_num)) {
-				case IB_LINK_LAYER_INFINIBAND:
-					ib_sa_free_multicast(mc->multicast.ib);
-					kfree(mc);
-					break;
-				case IB_LINK_LAYER_ETHERNET:
-					kref_put(&mc->mcref, release_mc);
-					break;
-				default:
-					break;
-				}
-			}
+
+			BUG_ON(id_priv->cma_dev->device != id->device);
+
+			if (rdma_protocol_ib(id->device, id->port_num)) {
+				ib_sa_free_multicast(mc->multicast.ib);
+				kfree(mc);
+			} else if (rdma_protocol_iboe(id->device, id->port_num))
+				kref_put(&mc->mcref, release_mc);
+
 			return;
 		}
 	}
-- 
2.1.0

^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 13/23] IB/Verbs: Reform cma_acquire_dev()
  2015-05-05 12:50 ` Michael Wang
@ 2015-05-05 12:50     ` Michael Wang
  -1 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Reform cma_acquire_dev() with management helpers, introduce
cma_validate_port() to make the code more clean.

Signed-off-by: Michael Wang <yun.wang-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
---
 drivers/infiniband/core/cma.c | 68 +++++++++++++++++++++++++------------------
 1 file changed, 40 insertions(+), 28 deletions(-)

diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index 34ec13f..3fb3458 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -349,18 +349,35 @@ static int cma_translate_addr(struct sockaddr *addr, struct rdma_dev_addr *dev_a
 	return ret;
 }
 
+static inline int cma_validate_port(struct ib_device *device, u8 port,
+				      union ib_gid *gid, int dev_type)
+{
+	u8 found_port;
+	int ret = -ENODEV;
+
+	if ((dev_type == ARPHRD_INFINIBAND) && !rdma_protocol_ib(device, port))
+		return ret;
+
+	if ((dev_type != ARPHRD_INFINIBAND) && rdma_protocol_ib(device, port))
+		return ret;
+
+	ret = ib_find_cached_gid(device, gid, &found_port, NULL);
+	if (port != found_port)
+		return -ENODEV;
+
+	return ret;
+}
+
 static int cma_acquire_dev(struct rdma_id_private *id_priv,
 			   struct rdma_id_private *listen_id_priv)
 {
 	struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr;
 	struct cma_device *cma_dev;
-	union ib_gid gid, iboe_gid;
+	union ib_gid gid, iboe_gid, *gidp;
 	int ret = -ENODEV;
-	u8 port, found_port;
-	enum rdma_link_layer dev_ll = dev_addr->dev_type == ARPHRD_INFINIBAND ?
-		IB_LINK_LAYER_INFINIBAND : IB_LINK_LAYER_ETHERNET;
+	u8 port;
 
-	if (dev_ll != IB_LINK_LAYER_INFINIBAND &&
+	if (dev_addr->dev_type != ARPHRD_INFINIBAND &&
 	    id_priv->id.ps == RDMA_PS_IPOIB)
 		return -EINVAL;
 
@@ -370,41 +387,36 @@ static int cma_acquire_dev(struct rdma_id_private *id_priv,
 
 	memcpy(&gid, dev_addr->src_dev_addr +
 	       rdma_addr_gid_offset(dev_addr), sizeof gid);
-	if (listen_id_priv &&
-	    rdma_port_get_link_layer(listen_id_priv->id.device,
-				     listen_id_priv->id.port_num) == dev_ll) {
+
+	if (listen_id_priv) {
 		cma_dev = listen_id_priv->cma_dev;
 		port = listen_id_priv->id.port_num;
-		if (rdma_node_get_transport(cma_dev->device->node_type) == RDMA_TRANSPORT_IB &&
-		    rdma_port_get_link_layer(cma_dev->device, port) == IB_LINK_LAYER_ETHERNET)
-			ret = ib_find_cached_gid(cma_dev->device, &iboe_gid,
-						 &found_port, NULL);
-		else
-			ret = ib_find_cached_gid(cma_dev->device, &gid,
-						 &found_port, NULL);
+		gidp = rdma_protocol_iboe(cma_dev->device, port) ?
+		       &iboe_gid : &gid;
 
-		if (!ret && (port  == found_port)) {
-			id_priv->id.port_num = found_port;
+		ret = cma_validate_port(cma_dev->device, port, gidp,
+					dev_addr->dev_type);
+		if (!ret) {
+			id_priv->id.port_num = port;
 			goto out;
 		}
 	}
+
 	list_for_each_entry(cma_dev, &dev_list, list) {
 		for (port = 1; port <= cma_dev->device->phys_port_cnt; ++port) {
 			if (listen_id_priv &&
 			    listen_id_priv->cma_dev == cma_dev &&
 			    listen_id_priv->id.port_num == port)
 				continue;
-			if (rdma_port_get_link_layer(cma_dev->device, port) == dev_ll) {
-				if (rdma_node_get_transport(cma_dev->device->node_type) == RDMA_TRANSPORT_IB &&
-				    rdma_port_get_link_layer(cma_dev->device, port) == IB_LINK_LAYER_ETHERNET)
-					ret = ib_find_cached_gid(cma_dev->device, &iboe_gid, &found_port, NULL);
-				else
-					ret = ib_find_cached_gid(cma_dev->device, &gid, &found_port, NULL);
-
-				if (!ret && (port == found_port)) {
-					id_priv->id.port_num = found_port;
-					goto out;
-				}
+
+			gidp = rdma_protocol_iboe(cma_dev->device, port) ?
+			       &iboe_gid : &gid;
+
+			ret = cma_validate_port(cma_dev->device, port, gidp,
+						dev_addr->dev_type);
+			if (!ret) {
+				id_priv->id.port_num = port;
+				goto out;
 			}
 		}
 	}
-- 
2.1.0

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

^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 13/23] IB/Verbs: Reform cma_acquire_dev()
@ 2015-05-05 12:50     ` Michael Wang
  0 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma, linux-kernel
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Reform cma_acquire_dev() with management helpers, introduce
cma_validate_port() to make the code more clean.

Signed-off-by: Michael Wang <yun.wang@profitbricks.com>
---
 drivers/infiniband/core/cma.c | 68 +++++++++++++++++++++++++------------------
 1 file changed, 40 insertions(+), 28 deletions(-)

diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index 34ec13f..3fb3458 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -349,18 +349,35 @@ static int cma_translate_addr(struct sockaddr *addr, struct rdma_dev_addr *dev_a
 	return ret;
 }
 
+static inline int cma_validate_port(struct ib_device *device, u8 port,
+				      union ib_gid *gid, int dev_type)
+{
+	u8 found_port;
+	int ret = -ENODEV;
+
+	if ((dev_type == ARPHRD_INFINIBAND) && !rdma_protocol_ib(device, port))
+		return ret;
+
+	if ((dev_type != ARPHRD_INFINIBAND) && rdma_protocol_ib(device, port))
+		return ret;
+
+	ret = ib_find_cached_gid(device, gid, &found_port, NULL);
+	if (port != found_port)
+		return -ENODEV;
+
+	return ret;
+}
+
 static int cma_acquire_dev(struct rdma_id_private *id_priv,
 			   struct rdma_id_private *listen_id_priv)
 {
 	struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr;
 	struct cma_device *cma_dev;
-	union ib_gid gid, iboe_gid;
+	union ib_gid gid, iboe_gid, *gidp;
 	int ret = -ENODEV;
-	u8 port, found_port;
-	enum rdma_link_layer dev_ll = dev_addr->dev_type == ARPHRD_INFINIBAND ?
-		IB_LINK_LAYER_INFINIBAND : IB_LINK_LAYER_ETHERNET;
+	u8 port;
 
-	if (dev_ll != IB_LINK_LAYER_INFINIBAND &&
+	if (dev_addr->dev_type != ARPHRD_INFINIBAND &&
 	    id_priv->id.ps == RDMA_PS_IPOIB)
 		return -EINVAL;
 
@@ -370,41 +387,36 @@ static int cma_acquire_dev(struct rdma_id_private *id_priv,
 
 	memcpy(&gid, dev_addr->src_dev_addr +
 	       rdma_addr_gid_offset(dev_addr), sizeof gid);
-	if (listen_id_priv &&
-	    rdma_port_get_link_layer(listen_id_priv->id.device,
-				     listen_id_priv->id.port_num) == dev_ll) {
+
+	if (listen_id_priv) {
 		cma_dev = listen_id_priv->cma_dev;
 		port = listen_id_priv->id.port_num;
-		if (rdma_node_get_transport(cma_dev->device->node_type) == RDMA_TRANSPORT_IB &&
-		    rdma_port_get_link_layer(cma_dev->device, port) == IB_LINK_LAYER_ETHERNET)
-			ret = ib_find_cached_gid(cma_dev->device, &iboe_gid,
-						 &found_port, NULL);
-		else
-			ret = ib_find_cached_gid(cma_dev->device, &gid,
-						 &found_port, NULL);
+		gidp = rdma_protocol_iboe(cma_dev->device, port) ?
+		       &iboe_gid : &gid;
 
-		if (!ret && (port  == found_port)) {
-			id_priv->id.port_num = found_port;
+		ret = cma_validate_port(cma_dev->device, port, gidp,
+					dev_addr->dev_type);
+		if (!ret) {
+			id_priv->id.port_num = port;
 			goto out;
 		}
 	}
+
 	list_for_each_entry(cma_dev, &dev_list, list) {
 		for (port = 1; port <= cma_dev->device->phys_port_cnt; ++port) {
 			if (listen_id_priv &&
 			    listen_id_priv->cma_dev == cma_dev &&
 			    listen_id_priv->id.port_num == port)
 				continue;
-			if (rdma_port_get_link_layer(cma_dev->device, port) == dev_ll) {
-				if (rdma_node_get_transport(cma_dev->device->node_type) == RDMA_TRANSPORT_IB &&
-				    rdma_port_get_link_layer(cma_dev->device, port) == IB_LINK_LAYER_ETHERNET)
-					ret = ib_find_cached_gid(cma_dev->device, &iboe_gid, &found_port, NULL);
-				else
-					ret = ib_find_cached_gid(cma_dev->device, &gid, &found_port, NULL);
-
-				if (!ret && (port == found_port)) {
-					id_priv->id.port_num = found_port;
-					goto out;
-				}
+
+			gidp = rdma_protocol_iboe(cma_dev->device, port) ?
+			       &iboe_gid : &gid;
+
+			ret = cma_validate_port(cma_dev->device, port, gidp,
+						dev_addr->dev_type);
+			if (!ret) {
+				id_priv->id.port_num = port;
+				goto out;
 			}
 		}
 	}
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 14/23] IB/Verbs: Reform rest part in IB-core cma
  2015-05-05 12:50 ` Michael Wang
@ 2015-05-05 12:50     ` Michael Wang
  -1 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Use raw management helpers to reform rest part in IB-core cma.

Signed-off-by: Michael Wang <yun.wang-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
---
 drivers/infiniband/core/cma.c | 20 +++++++++-----------
 1 file changed, 9 insertions(+), 11 deletions(-)

diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index 3fb3458..d43f492f 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -447,10 +447,10 @@ static int cma_resolve_ib_dev(struct rdma_id_private *id_priv)
 	pkey = ntohs(addr->sib_pkey);
 
 	list_for_each_entry(cur_dev, &dev_list, list) {
-		if (rdma_node_get_transport(cur_dev->device->node_type) != RDMA_TRANSPORT_IB)
-			continue;
-
 		for (p = 1; p <= cur_dev->device->phys_port_cnt; ++p) {
+			if (!rdma_ib_or_iboe(cur_dev->device, p))
+				continue;
+
 			if (ib_find_cached_pkey(cur_dev->device, p, pkey, &index))
 				continue;
 
@@ -645,10 +645,9 @@ static int cma_modify_qp_rtr(struct rdma_id_private *id_priv,
 	if (ret)
 		goto out;
 
-	if (rdma_node_get_transport(id_priv->cma_dev->device->node_type)
-	    == RDMA_TRANSPORT_IB &&
-	    rdma_port_get_link_layer(id_priv->id.device, id_priv->id.port_num)
-	    == IB_LINK_LAYER_ETHERNET) {
+	BUG_ON(id_priv->cma_dev->device != id_priv->id.device);
+
+	if (rdma_protocol_iboe(id_priv->id.device, id_priv->id.port_num)) {
 		ret = rdma_addr_find_smac_by_sgid(&sgid, qp_attr.smac, NULL);
 
 		if (ret)
@@ -712,11 +711,10 @@ static int cma_ib_init_qp_attr(struct rdma_id_private *id_priv,
 	int ret;
 	u16 pkey;
 
-	if (rdma_port_get_link_layer(id_priv->id.device, id_priv->id.port_num) ==
-	    IB_LINK_LAYER_INFINIBAND)
-		pkey = ib_addr_get_pkey(dev_addr);
-	else
+	if (rdma_protocol_iboe(id_priv->id.device, id_priv->id.port_num))
 		pkey = 0xffff;
+	else
+		pkey = ib_addr_get_pkey(dev_addr);
 
 	ret = ib_find_cached_pkey(id_priv->id.device, id_priv->id.port_num,
 				  pkey, &qp_attr->pkey_index);
-- 
2.1.0

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

^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 14/23] IB/Verbs: Reform rest part in IB-core cma
@ 2015-05-05 12:50     ` Michael Wang
  0 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma, linux-kernel
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Use raw management helpers to reform rest part in IB-core cma.

Signed-off-by: Michael Wang <yun.wang@profitbricks.com>
---
 drivers/infiniband/core/cma.c | 20 +++++++++-----------
 1 file changed, 9 insertions(+), 11 deletions(-)

diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index 3fb3458..d43f492f 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -447,10 +447,10 @@ static int cma_resolve_ib_dev(struct rdma_id_private *id_priv)
 	pkey = ntohs(addr->sib_pkey);
 
 	list_for_each_entry(cur_dev, &dev_list, list) {
-		if (rdma_node_get_transport(cur_dev->device->node_type) != RDMA_TRANSPORT_IB)
-			continue;
-
 		for (p = 1; p <= cur_dev->device->phys_port_cnt; ++p) {
+			if (!rdma_ib_or_iboe(cur_dev->device, p))
+				continue;
+
 			if (ib_find_cached_pkey(cur_dev->device, p, pkey, &index))
 				continue;
 
@@ -645,10 +645,9 @@ static int cma_modify_qp_rtr(struct rdma_id_private *id_priv,
 	if (ret)
 		goto out;
 
-	if (rdma_node_get_transport(id_priv->cma_dev->device->node_type)
-	    == RDMA_TRANSPORT_IB &&
-	    rdma_port_get_link_layer(id_priv->id.device, id_priv->id.port_num)
-	    == IB_LINK_LAYER_ETHERNET) {
+	BUG_ON(id_priv->cma_dev->device != id_priv->id.device);
+
+	if (rdma_protocol_iboe(id_priv->id.device, id_priv->id.port_num)) {
 		ret = rdma_addr_find_smac_by_sgid(&sgid, qp_attr.smac, NULL);
 
 		if (ret)
@@ -712,11 +711,10 @@ static int cma_ib_init_qp_attr(struct rdma_id_private *id_priv,
 	int ret;
 	u16 pkey;
 
-	if (rdma_port_get_link_layer(id_priv->id.device, id_priv->id.port_num) ==
-	    IB_LINK_LAYER_INFINIBAND)
-		pkey = ib_addr_get_pkey(dev_addr);
-	else
+	if (rdma_protocol_iboe(id_priv->id.device, id_priv->id.port_num))
 		pkey = 0xffff;
+	else
+		pkey = ib_addr_get_pkey(dev_addr);
 
 	ret = ib_find_cached_pkey(id_priv->id.device, id_priv->id.port_num,
 				  pkey, &qp_attr->pkey_index);
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 15/23] IB/Verbs: Use management helper rdma_cap_ib_mad()
  2015-05-05 12:50 ` Michael Wang
                   ` (3 preceding siblings ...)
  (?)
@ 2015-05-05 12:50 ` Michael Wang
  -1 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma, linux-kernel
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Introduce helper rdma_cap_ib_mad() to help us check if the port of an
IB device support Infiniband Management Datagrams.

Signed-off-by: Michael Wang <yun.wang@profitbricks.com>
---
 drivers/infiniband/core/mad.c      |  6 +++---
 drivers/infiniband/core/user_mad.c |  6 +++---
 include/rdma/ib_verbs.h            | 15 +++++++++++++++
 3 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/drivers/infiniband/core/mad.c b/drivers/infiniband/core/mad.c
index 507eb67..80777cd 100644
--- a/drivers/infiniband/core/mad.c
+++ b/drivers/infiniband/core/mad.c
@@ -3066,7 +3066,7 @@ static void ib_mad_init_device(struct ib_device *device)
 	}
 
 	for (i = start; i <= end; i++) {
-		if (!rdma_ib_or_iboe(device, i))
+		if (!rdma_cap_ib_mad(device, i))
 			continue;
 
 		if (ib_mad_port_open(device, i)) {
@@ -3087,7 +3087,7 @@ error_agent:
 
 error:
 	while (--i >= start) {
-		if (!rdma_ib_or_iboe(device, i))
+		if (!rdma_cap_ib_mad(device, i))
 			continue;
 
 		if (ib_agent_port_close(device, i))
@@ -3111,7 +3111,7 @@ static void ib_mad_remove_device(struct ib_device *device)
 	}
 
 	for (i = start; i <= end; i++) {
-		if (!rdma_ib_or_iboe(device, i))
+		if (!rdma_cap_ib_mad(device, i))
 			continue;
 
 		if (ib_agent_port_close(device, i))
diff --git a/drivers/infiniband/core/user_mad.c b/drivers/infiniband/core/user_mad.c
index aa8b334..d451717 100644
--- a/drivers/infiniband/core/user_mad.c
+++ b/drivers/infiniband/core/user_mad.c
@@ -1294,7 +1294,7 @@ static void ib_umad_add_one(struct ib_device *device)
 	umad_dev->end_port   = e;
 
 	for (i = s; i <= e; ++i) {
-		if (!rdma_ib_or_iboe(device, i))
+		if (!rdma_cap_ib_mad(device, i))
 			continue;
 
 		umad_dev->port[i - s].umad_dev = umad_dev;
@@ -1315,7 +1315,7 @@ static void ib_umad_add_one(struct ib_device *device)
 
 err:
 	while (--i >= s) {
-		if (!rdma_ib_or_iboe(device, i))
+		if (!rdma_cap_ib_mad(device, i))
 			continue;
 
 		ib_umad_kill_port(&umad_dev->port[i - s]);
@@ -1333,7 +1333,7 @@ static void ib_umad_remove_one(struct ib_device *device)
 		return;
 
 	for (i = 0; i <= umad_dev->end_port - umad_dev->start_port; ++i) {
-		if (rdma_ib_or_iboe(device, i))
+		if (rdma_cap_ib_mad(device, i))
 			ib_umad_kill_port(&umad_dev->port[i]);
 	}
 
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index e6dd984..23ba66e 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -1774,6 +1774,21 @@ static inline bool rdma_ib_or_iboe(struct ib_device *device, u8 port_num)
 	return (pt == RDMA_PROTOCOL_IB || pt == RDMA_PROTOCOL_IBOE);
 }
 
+/**
+ * rdma_cap_ib_mad - Check if the port of device has the capability Infiniband
+ * Management Datagrams.
+ *
+ * @device: Device to be checked
+ * @port_num: Port number of the device
+ *
+ * Return false when port of the device don't support Infiniband
+ * Management Datagrams.
+ */
+static inline bool rdma_cap_ib_mad(struct ib_device *device, u8 port_num)
+{
+	return rdma_ib_or_iboe(device, port_num);
+}
+
 int ib_query_gid(struct ib_device *device,
 		 u8 port_num, int index, union ib_gid *gid);
 
-- 
2.1.0

^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 16/23] IB/Verbs: Use management helper rdma_cap_ib_smi()
  2015-05-05 12:50 ` Michael Wang
@ 2015-05-05 12:50     ` Michael Wang
  -1 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Introduce helper rdma_cap_ib_smi() to help us check if the port of an
IB device support Infiniband Subnet Management Interface.

Signed-off-by: Michael Wang <yun.wang-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
---
 drivers/infiniband/core/agent.c |  2 +-
 drivers/infiniband/core/mad.c   |  2 +-
 include/rdma/ib_verbs.h         | 15 +++++++++++++++
 3 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/drivers/infiniband/core/agent.c b/drivers/infiniband/core/agent.c
index 89d4fbc..a6fc4d6 100644
--- a/drivers/infiniband/core/agent.c
+++ b/drivers/infiniband/core/agent.c
@@ -156,7 +156,7 @@ int ib_agent_port_open(struct ib_device *device, int port_num)
 		goto error1;
 	}
 
-	if (rdma_protocol_ib(device, port_num)) {
+	if (rdma_cap_ib_smi(device, port_num)) {
 		/* Obtain send only MAD agent for SMI QP */
 		port_priv->agent[0] = ib_register_mad_agent(device, port_num,
 							    IB_QPT_SMI, NULL, 0,
diff --git a/drivers/infiniband/core/mad.c b/drivers/infiniband/core/mad.c
index 80777cd..e9699c9 100644
--- a/drivers/infiniband/core/mad.c
+++ b/drivers/infiniband/core/mad.c
@@ -2938,7 +2938,7 @@ static int ib_mad_port_open(struct ib_device *device,
 	init_mad_qp(port_priv, &port_priv->qp_info[1]);
 
 	cq_size = mad_sendq_size + mad_recvq_size;
-	has_smi = rdma_protocol_ib(device, port_num);
+	has_smi = rdma_cap_ib_smi(device, port_num);
 	if (has_smi)
 		cq_size *= 2;
 
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index 23ba66e..e983e33 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -1789,6 +1789,21 @@ static inline bool rdma_cap_ib_mad(struct ib_device *device, u8 port_num)
 	return rdma_ib_or_iboe(device, port_num);
 }
 
+/**
+ * rdma_cap_ib_smi - Check if the port of device has the capability Infiniband
+ * Subnet Management Interface.
+ *
+ * @device: Device to be checked
+ * @port_num: Port number of the device
+ *
+ * Return false when port of the device don't support Infiniband
+ * Subnet Management Interface.
+ */
+static inline bool rdma_cap_ib_smi(struct ib_device *device, u8 port_num)
+{
+	return rdma_protocol_ib(device, port_num);
+}
+
 int ib_query_gid(struct ib_device *device,
 		 u8 port_num, int index, union ib_gid *gid);
 
-- 
2.1.0

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

^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 16/23] IB/Verbs: Use management helper rdma_cap_ib_smi()
@ 2015-05-05 12:50     ` Michael Wang
  0 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma, linux-kernel
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Introduce helper rdma_cap_ib_smi() to help us check if the port of an
IB device support Infiniband Subnet Management Interface.

Signed-off-by: Michael Wang <yun.wang@profitbricks.com>
---
 drivers/infiniband/core/agent.c |  2 +-
 drivers/infiniband/core/mad.c   |  2 +-
 include/rdma/ib_verbs.h         | 15 +++++++++++++++
 3 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/drivers/infiniband/core/agent.c b/drivers/infiniband/core/agent.c
index 89d4fbc..a6fc4d6 100644
--- a/drivers/infiniband/core/agent.c
+++ b/drivers/infiniband/core/agent.c
@@ -156,7 +156,7 @@ int ib_agent_port_open(struct ib_device *device, int port_num)
 		goto error1;
 	}
 
-	if (rdma_protocol_ib(device, port_num)) {
+	if (rdma_cap_ib_smi(device, port_num)) {
 		/* Obtain send only MAD agent for SMI QP */
 		port_priv->agent[0] = ib_register_mad_agent(device, port_num,
 							    IB_QPT_SMI, NULL, 0,
diff --git a/drivers/infiniband/core/mad.c b/drivers/infiniband/core/mad.c
index 80777cd..e9699c9 100644
--- a/drivers/infiniband/core/mad.c
+++ b/drivers/infiniband/core/mad.c
@@ -2938,7 +2938,7 @@ static int ib_mad_port_open(struct ib_device *device,
 	init_mad_qp(port_priv, &port_priv->qp_info[1]);
 
 	cq_size = mad_sendq_size + mad_recvq_size;
-	has_smi = rdma_protocol_ib(device, port_num);
+	has_smi = rdma_cap_ib_smi(device, port_num);
 	if (has_smi)
 		cq_size *= 2;
 
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index 23ba66e..e983e33 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -1789,6 +1789,21 @@ static inline bool rdma_cap_ib_mad(struct ib_device *device, u8 port_num)
 	return rdma_ib_or_iboe(device, port_num);
 }
 
+/**
+ * rdma_cap_ib_smi - Check if the port of device has the capability Infiniband
+ * Subnet Management Interface.
+ *
+ * @device: Device to be checked
+ * @port_num: Port number of the device
+ *
+ * Return false when port of the device don't support Infiniband
+ * Subnet Management Interface.
+ */
+static inline bool rdma_cap_ib_smi(struct ib_device *device, u8 port_num)
+{
+	return rdma_protocol_ib(device, port_num);
+}
+
 int ib_query_gid(struct ib_device *device,
 		 u8 port_num, int index, union ib_gid *gid);
 
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 17/23] IB/Verbs: Use management helper rdma_cap_ib_cm()
  2015-05-05 12:50 ` Michael Wang
@ 2015-05-05 12:50     ` Michael Wang
  -1 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Introduce helper rdma_cap_ib_cm() to help us check if the port of an
IB device support Infiniband Communication Manager.

Signed-off-by: Michael Wang <yun.wang-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
---
 drivers/infiniband/core/cm.c  |  6 +++---
 drivers/infiniband/core/cma.c | 19 +++++++++----------
 drivers/infiniband/core/ucm.c |  2 +-
 include/rdma/ib_verbs.h       | 15 +++++++++++++++
 4 files changed, 28 insertions(+), 14 deletions(-)

diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c
index add5e484..7073f98 100644
--- a/drivers/infiniband/core/cm.c
+++ b/drivers/infiniband/core/cm.c
@@ -3781,7 +3781,7 @@ static void cm_add_one(struct ib_device *ib_device)
 
 	set_bit(IB_MGMT_METHOD_SEND, reg_req.method_mask);
 	for (i = 1; i <= ib_device->phys_port_cnt; i++) {
-		if (!rdma_ib_or_iboe(ib_device, i))
+		if (!rdma_cap_ib_cm(ib_device, i))
 			continue;
 
 		port = kzalloc(sizeof *port, GFP_KERNEL);
@@ -3832,7 +3832,7 @@ error1:
 	port_modify.set_port_cap_mask = 0;
 	port_modify.clr_port_cap_mask = IB_PORT_CM_SUP;
 	while (--i) {
-		if (!rdma_ib_or_iboe(ib_device, i))
+		if (!rdma_cap_ib_cm(ib_device, i))
 			continue;
 
 		port = cm_dev->port[i-1];
@@ -3864,7 +3864,7 @@ static void cm_remove_one(struct ib_device *ib_device)
 	write_unlock_irqrestore(&cm.device_lock, flags);
 
 	for (i = 1; i <= ib_device->phys_port_cnt; i++) {
-		if (!rdma_ib_or_iboe(ib_device, i))
+		if (!rdma_cap_ib_cm(ib_device, i))
 			continue;
 
 		port = cm_dev->port[i-1];
diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index d43f492f..71a3668 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -745,7 +745,7 @@ int rdma_init_qp_attr(struct rdma_cm_id *id, struct ib_qp_attr *qp_attr,
 	int ret = 0;
 
 	id_priv = container_of(id, struct rdma_id_private, id);
-	if (rdma_ib_or_iboe(id->device, id->port_num)) {
+	if (rdma_cap_ib_cm(id->device, id->port_num)) {
 		if (!id_priv->cm_id.ib || (id_priv->id.qp_type == IB_QPT_UD))
 			ret = cma_ib_init_qp_attr(id_priv, qp_attr, qp_attr_mask);
 		else
@@ -1033,7 +1033,7 @@ void rdma_destroy_id(struct rdma_cm_id *id)
 	mutex_unlock(&id_priv->handler_mutex);
 
 	if (id_priv->cma_dev) {
-		if (rdma_ib_or_iboe(id_priv->id.device, 1)) {
+		if (rdma_cap_ib_cm(id_priv->id.device, 1)) {
 			if (id_priv->cm_id.ib)
 				ib_destroy_cm_id(id_priv->cm_id.ib);
 		} else if (rdma_protocol_iwarp(id_priv->id.device, 1)) {
@@ -1616,8 +1616,7 @@ static void cma_listen_on_dev(struct rdma_id_private *id_priv,
 	struct rdma_cm_id *id;
 	int ret;
 
-	if (cma_family(id_priv) == AF_IB &&
-	    !rdma_ib_or_iboe(cma_dev->device, 1))
+	if (cma_family(id_priv) == AF_IB && !rdma_cap_ib_cm(cma_dev->device, 1))
 		return;
 
 	id = rdma_create_id(cma_listen_handler, id_priv, id_priv->id.ps,
@@ -2008,7 +2007,7 @@ static int cma_bind_loopback(struct rdma_id_private *id_priv)
 	mutex_lock(&lock);
 	list_for_each_entry(cur_dev, &dev_list, list) {
 		if (cma_family(id_priv) == AF_IB &&
-		    !rdma_ib_or_iboe(cur_dev->device, 1))
+		    !rdma_cap_ib_cm(cur_dev->device, 1))
 			continue;
 
 		if (!cma_dev)
@@ -2517,7 +2516,7 @@ int rdma_listen(struct rdma_cm_id *id, int backlog)
 
 	id_priv->backlog = backlog;
 	if (id->device) {
-		if (rdma_ib_or_iboe(id->device, 1)) {
+		if (rdma_cap_ib_cm(id->device, 1)) {
 			ret = cma_ib_listen(id_priv);
 			if (ret)
 				goto err;
@@ -2861,7 +2860,7 @@ int rdma_connect(struct rdma_cm_id *id, struct rdma_conn_param *conn_param)
 		id_priv->srq = conn_param->srq;
 	}
 
-	if (rdma_ib_or_iboe(id->device, id->port_num)) {
+	if (rdma_cap_ib_cm(id->device, id->port_num)) {
 		if (id->qp_type == IB_QPT_UD)
 			ret = cma_resolve_ib_udp(id_priv, conn_param);
 		else
@@ -2972,7 +2971,7 @@ int rdma_accept(struct rdma_cm_id *id, struct rdma_conn_param *conn_param)
 		id_priv->srq = conn_param->srq;
 	}
 
-	if (rdma_ib_or_iboe(id->device, id->port_num)) {
+	if (rdma_cap_ib_cm(id->device, id->port_num)) {
 		if (id->qp_type == IB_QPT_UD) {
 			if (conn_param)
 				ret = cma_send_sidr_rep(id_priv, IB_SIDR_SUCCESS,
@@ -3035,7 +3034,7 @@ int rdma_reject(struct rdma_cm_id *id, const void *private_data,
 	if (!id_priv->cm_id.ib)
 		return -EINVAL;
 
-	if (rdma_ib_or_iboe(id->device, id->port_num)) {
+	if (rdma_cap_ib_cm(id->device, id->port_num)) {
 		if (id->qp_type == IB_QPT_UD)
 			ret = cma_send_sidr_rep(id_priv, IB_SIDR_REJECT, 0,
 						private_data, private_data_len);
@@ -3062,7 +3061,7 @@ int rdma_disconnect(struct rdma_cm_id *id)
 	if (!id_priv->cm_id.ib)
 		return -EINVAL;
 
-	if (rdma_ib_or_iboe(id->device, id->port_num)) {
+	if (rdma_cap_ib_cm(id->device, id->port_num)) {
 		ret = cma_modify_qp_err(id_priv);
 		if (ret)
 			goto out;
diff --git a/drivers/infiniband/core/ucm.c b/drivers/infiniband/core/ucm.c
index 70e0ccb..62c24b1 100644
--- a/drivers/infiniband/core/ucm.c
+++ b/drivers/infiniband/core/ucm.c
@@ -1253,7 +1253,7 @@ static void ib_ucm_add_one(struct ib_device *device)
 	dev_t base;
 	struct ib_ucm_device *ucm_dev;
 
-	if (!device->alloc_ucontext || !rdma_ib_or_iboe(device, 1))
+	if (!device->alloc_ucontext || !rdma_cap_ib_cm(device, 1))
 		return;
 
 	ucm_dev = kzalloc(sizeof *ucm_dev, GFP_KERNEL);
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index e983e33..e349596 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -1804,6 +1804,21 @@ static inline bool rdma_cap_ib_smi(struct ib_device *device, u8 port_num)
 	return rdma_protocol_ib(device, port_num);
 }
 
+/**
+ * rdma_cap_ib_cm - Check if the port of device has the capability Infiniband
+ * Communication Manager.
+ *
+ * @device: Device to be checked
+ * @port_num: Port number of the device
+ *
+ * Return false when port of the device don't support Infiniband
+ * Communication Manager.
+ */
+static inline bool rdma_cap_ib_cm(struct ib_device *device, u8 port_num)
+{
+	return rdma_ib_or_iboe(device, port_num);
+}
+
 int ib_query_gid(struct ib_device *device,
 		 u8 port_num, int index, union ib_gid *gid);
 
-- 
2.1.0

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

^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 17/23] IB/Verbs: Use management helper rdma_cap_ib_cm()
@ 2015-05-05 12:50     ` Michael Wang
  0 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma, linux-kernel
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Introduce helper rdma_cap_ib_cm() to help us check if the port of an
IB device support Infiniband Communication Manager.

Signed-off-by: Michael Wang <yun.wang@profitbricks.com>
---
 drivers/infiniband/core/cm.c  |  6 +++---
 drivers/infiniband/core/cma.c | 19 +++++++++----------
 drivers/infiniband/core/ucm.c |  2 +-
 include/rdma/ib_verbs.h       | 15 +++++++++++++++
 4 files changed, 28 insertions(+), 14 deletions(-)

diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c
index add5e484..7073f98 100644
--- a/drivers/infiniband/core/cm.c
+++ b/drivers/infiniband/core/cm.c
@@ -3781,7 +3781,7 @@ static void cm_add_one(struct ib_device *ib_device)
 
 	set_bit(IB_MGMT_METHOD_SEND, reg_req.method_mask);
 	for (i = 1; i <= ib_device->phys_port_cnt; i++) {
-		if (!rdma_ib_or_iboe(ib_device, i))
+		if (!rdma_cap_ib_cm(ib_device, i))
 			continue;
 
 		port = kzalloc(sizeof *port, GFP_KERNEL);
@@ -3832,7 +3832,7 @@ error1:
 	port_modify.set_port_cap_mask = 0;
 	port_modify.clr_port_cap_mask = IB_PORT_CM_SUP;
 	while (--i) {
-		if (!rdma_ib_or_iboe(ib_device, i))
+		if (!rdma_cap_ib_cm(ib_device, i))
 			continue;
 
 		port = cm_dev->port[i-1];
@@ -3864,7 +3864,7 @@ static void cm_remove_one(struct ib_device *ib_device)
 	write_unlock_irqrestore(&cm.device_lock, flags);
 
 	for (i = 1; i <= ib_device->phys_port_cnt; i++) {
-		if (!rdma_ib_or_iboe(ib_device, i))
+		if (!rdma_cap_ib_cm(ib_device, i))
 			continue;
 
 		port = cm_dev->port[i-1];
diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index d43f492f..71a3668 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -745,7 +745,7 @@ int rdma_init_qp_attr(struct rdma_cm_id *id, struct ib_qp_attr *qp_attr,
 	int ret = 0;
 
 	id_priv = container_of(id, struct rdma_id_private, id);
-	if (rdma_ib_or_iboe(id->device, id->port_num)) {
+	if (rdma_cap_ib_cm(id->device, id->port_num)) {
 		if (!id_priv->cm_id.ib || (id_priv->id.qp_type == IB_QPT_UD))
 			ret = cma_ib_init_qp_attr(id_priv, qp_attr, qp_attr_mask);
 		else
@@ -1033,7 +1033,7 @@ void rdma_destroy_id(struct rdma_cm_id *id)
 	mutex_unlock(&id_priv->handler_mutex);
 
 	if (id_priv->cma_dev) {
-		if (rdma_ib_or_iboe(id_priv->id.device, 1)) {
+		if (rdma_cap_ib_cm(id_priv->id.device, 1)) {
 			if (id_priv->cm_id.ib)
 				ib_destroy_cm_id(id_priv->cm_id.ib);
 		} else if (rdma_protocol_iwarp(id_priv->id.device, 1)) {
@@ -1616,8 +1616,7 @@ static void cma_listen_on_dev(struct rdma_id_private *id_priv,
 	struct rdma_cm_id *id;
 	int ret;
 
-	if (cma_family(id_priv) == AF_IB &&
-	    !rdma_ib_or_iboe(cma_dev->device, 1))
+	if (cma_family(id_priv) == AF_IB && !rdma_cap_ib_cm(cma_dev->device, 1))
 		return;
 
 	id = rdma_create_id(cma_listen_handler, id_priv, id_priv->id.ps,
@@ -2008,7 +2007,7 @@ static int cma_bind_loopback(struct rdma_id_private *id_priv)
 	mutex_lock(&lock);
 	list_for_each_entry(cur_dev, &dev_list, list) {
 		if (cma_family(id_priv) == AF_IB &&
-		    !rdma_ib_or_iboe(cur_dev->device, 1))
+		    !rdma_cap_ib_cm(cur_dev->device, 1))
 			continue;
 
 		if (!cma_dev)
@@ -2517,7 +2516,7 @@ int rdma_listen(struct rdma_cm_id *id, int backlog)
 
 	id_priv->backlog = backlog;
 	if (id->device) {
-		if (rdma_ib_or_iboe(id->device, 1)) {
+		if (rdma_cap_ib_cm(id->device, 1)) {
 			ret = cma_ib_listen(id_priv);
 			if (ret)
 				goto err;
@@ -2861,7 +2860,7 @@ int rdma_connect(struct rdma_cm_id *id, struct rdma_conn_param *conn_param)
 		id_priv->srq = conn_param->srq;
 	}
 
-	if (rdma_ib_or_iboe(id->device, id->port_num)) {
+	if (rdma_cap_ib_cm(id->device, id->port_num)) {
 		if (id->qp_type == IB_QPT_UD)
 			ret = cma_resolve_ib_udp(id_priv, conn_param);
 		else
@@ -2972,7 +2971,7 @@ int rdma_accept(struct rdma_cm_id *id, struct rdma_conn_param *conn_param)
 		id_priv->srq = conn_param->srq;
 	}
 
-	if (rdma_ib_or_iboe(id->device, id->port_num)) {
+	if (rdma_cap_ib_cm(id->device, id->port_num)) {
 		if (id->qp_type == IB_QPT_UD) {
 			if (conn_param)
 				ret = cma_send_sidr_rep(id_priv, IB_SIDR_SUCCESS,
@@ -3035,7 +3034,7 @@ int rdma_reject(struct rdma_cm_id *id, const void *private_data,
 	if (!id_priv->cm_id.ib)
 		return -EINVAL;
 
-	if (rdma_ib_or_iboe(id->device, id->port_num)) {
+	if (rdma_cap_ib_cm(id->device, id->port_num)) {
 		if (id->qp_type == IB_QPT_UD)
 			ret = cma_send_sidr_rep(id_priv, IB_SIDR_REJECT, 0,
 						private_data, private_data_len);
@@ -3062,7 +3061,7 @@ int rdma_disconnect(struct rdma_cm_id *id)
 	if (!id_priv->cm_id.ib)
 		return -EINVAL;
 
-	if (rdma_ib_or_iboe(id->device, id->port_num)) {
+	if (rdma_cap_ib_cm(id->device, id->port_num)) {
 		ret = cma_modify_qp_err(id_priv);
 		if (ret)
 			goto out;
diff --git a/drivers/infiniband/core/ucm.c b/drivers/infiniband/core/ucm.c
index 70e0ccb..62c24b1 100644
--- a/drivers/infiniband/core/ucm.c
+++ b/drivers/infiniband/core/ucm.c
@@ -1253,7 +1253,7 @@ static void ib_ucm_add_one(struct ib_device *device)
 	dev_t base;
 	struct ib_ucm_device *ucm_dev;
 
-	if (!device->alloc_ucontext || !rdma_ib_or_iboe(device, 1))
+	if (!device->alloc_ucontext || !rdma_cap_ib_cm(device, 1))
 		return;
 
 	ucm_dev = kzalloc(sizeof *ucm_dev, GFP_KERNEL);
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index e983e33..e349596 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -1804,6 +1804,21 @@ static inline bool rdma_cap_ib_smi(struct ib_device *device, u8 port_num)
 	return rdma_protocol_ib(device, port_num);
 }
 
+/**
+ * rdma_cap_ib_cm - Check if the port of device has the capability Infiniband
+ * Communication Manager.
+ *
+ * @device: Device to be checked
+ * @port_num: Port number of the device
+ *
+ * Return false when port of the device don't support Infiniband
+ * Communication Manager.
+ */
+static inline bool rdma_cap_ib_cm(struct ib_device *device, u8 port_num)
+{
+	return rdma_ib_or_iboe(device, port_num);
+}
+
 int ib_query_gid(struct ib_device *device,
 		 u8 port_num, int index, union ib_gid *gid);
 
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 18/23] IB/Verbs: Use management helper rdma_cap_iw_cm()
  2015-05-05 12:50 ` Michael Wang
@ 2015-05-05 12:50     ` Michael Wang
  -1 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Introduce helper rdma_cap_iw_cm() to help us check if the port of an
IB device support IWARP Communication Manager.

Signed-off-by: Michael Wang <yun.wang-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
---
 drivers/infiniband/core/cma.c | 14 +++++++-------
 include/rdma/ib_verbs.h       | 15 +++++++++++++++
 2 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index 71a3668..0787035 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -754,7 +754,7 @@ int rdma_init_qp_attr(struct rdma_cm_id *id, struct ib_qp_attr *qp_attr,
 
 		if (qp_attr->qp_state == IB_QPS_RTR)
 			qp_attr->rq_psn = id_priv->seq_num;
-	} else if (rdma_protocol_iwarp(id->device, id->port_num)) {
+	} else if (rdma_cap_iw_cm(id->device, id->port_num)) {
 		if (!id_priv->cm_id.iw) {
 			qp_attr->qp_access_flags = 0;
 			*qp_attr_mask = IB_QP_STATE | IB_QP_ACCESS_FLAGS;
@@ -1036,7 +1036,7 @@ void rdma_destroy_id(struct rdma_cm_id *id)
 		if (rdma_cap_ib_cm(id_priv->id.device, 1)) {
 			if (id_priv->cm_id.ib)
 				ib_destroy_cm_id(id_priv->cm_id.ib);
-		} else if (rdma_protocol_iwarp(id_priv->id.device, 1)) {
+		} else if (rdma_cap_iw_cm(id_priv->id.device, 1)) {
 			if (id_priv->cm_id.iw)
 				iw_destroy_cm_id(id_priv->cm_id.iw);
 		}
@@ -2520,7 +2520,7 @@ int rdma_listen(struct rdma_cm_id *id, int backlog)
 			ret = cma_ib_listen(id_priv);
 			if (ret)
 				goto err;
-		} else if (rdma_protocol_iwarp(id->device, 1)) {
+		} else if (rdma_cap_iw_cm(id->device, 1)) {
 			ret = cma_iw_listen(id_priv, backlog);
 			if (ret)
 				goto err;
@@ -2865,7 +2865,7 @@ int rdma_connect(struct rdma_cm_id *id, struct rdma_conn_param *conn_param)
 			ret = cma_resolve_ib_udp(id_priv, conn_param);
 		else
 			ret = cma_connect_ib(id_priv, conn_param);
-	} else if (rdma_protocol_iwarp(id->device, id->port_num))
+	} else if (rdma_cap_iw_cm(id->device, id->port_num))
 		ret = cma_connect_iw(id_priv, conn_param);
 	else
 		ret = -ENOSYS;
@@ -2987,7 +2987,7 @@ int rdma_accept(struct rdma_cm_id *id, struct rdma_conn_param *conn_param)
 			else
 				ret = cma_rep_recv(id_priv);
 		}
-	} else if (rdma_protocol_iwarp(id->device, id->port_num))
+	} else if (rdma_cap_iw_cm(id->device, id->port_num))
 		ret = cma_accept_iw(id_priv, conn_param);
 	else
 		ret = -ENOSYS;
@@ -3042,7 +3042,7 @@ int rdma_reject(struct rdma_cm_id *id, const void *private_data,
 			ret = ib_send_cm_rej(id_priv->cm_id.ib,
 					     IB_CM_REJ_CONSUMER_DEFINED, NULL,
 					     0, private_data, private_data_len);
-	} else if (rdma_protocol_iwarp(id->device, id->port_num)) {
+	} else if (rdma_cap_iw_cm(id->device, id->port_num)) {
 		ret = iw_cm_reject(id_priv->cm_id.iw,
 				   private_data, private_data_len);
 	} else
@@ -3068,7 +3068,7 @@ int rdma_disconnect(struct rdma_cm_id *id)
 		/* Initiate or respond to a disconnect. */
 		if (ib_send_cm_dreq(id_priv->cm_id.ib, NULL, 0))
 			ib_send_cm_drep(id_priv->cm_id.ib, NULL, 0);
-	} else if (rdma_protocol_iwarp(id->device, id->port_num)) {
+	} else if (rdma_cap_iw_cm(id->device, id->port_num)) {
 		ret = iw_cm_disconnect(id_priv->cm_id.iw, 0);
 	} else
 		ret = -EINVAL;
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index e349596..cc92a64 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -1819,6 +1819,21 @@ static inline bool rdma_cap_ib_cm(struct ib_device *device, u8 port_num)
 	return rdma_ib_or_iboe(device, port_num);
 }
 
+/**
+ * rdma_cap_iw_cm - Check if the port of device has the capability IWARP
+ * Communication Manager.
+ *
+ * @device: Device to be checked
+ * @port_num: Port number of the device
+ *
+ * Return false when port of the device don't support IWARP
+ * Communication Manager.
+ */
+static inline bool rdma_cap_iw_cm(struct ib_device *device, u8 port_num)
+{
+	return rdma_protocol_iwarp(device, port_num);
+}
+
 int ib_query_gid(struct ib_device *device,
 		 u8 port_num, int index, union ib_gid *gid);
 
-- 
2.1.0

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

^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 18/23] IB/Verbs: Use management helper rdma_cap_iw_cm()
@ 2015-05-05 12:50     ` Michael Wang
  0 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma, linux-kernel
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Introduce helper rdma_cap_iw_cm() to help us check if the port of an
IB device support IWARP Communication Manager.

Signed-off-by: Michael Wang <yun.wang@profitbricks.com>
---
 drivers/infiniband/core/cma.c | 14 +++++++-------
 include/rdma/ib_verbs.h       | 15 +++++++++++++++
 2 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index 71a3668..0787035 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -754,7 +754,7 @@ int rdma_init_qp_attr(struct rdma_cm_id *id, struct ib_qp_attr *qp_attr,
 
 		if (qp_attr->qp_state == IB_QPS_RTR)
 			qp_attr->rq_psn = id_priv->seq_num;
-	} else if (rdma_protocol_iwarp(id->device, id->port_num)) {
+	} else if (rdma_cap_iw_cm(id->device, id->port_num)) {
 		if (!id_priv->cm_id.iw) {
 			qp_attr->qp_access_flags = 0;
 			*qp_attr_mask = IB_QP_STATE | IB_QP_ACCESS_FLAGS;
@@ -1036,7 +1036,7 @@ void rdma_destroy_id(struct rdma_cm_id *id)
 		if (rdma_cap_ib_cm(id_priv->id.device, 1)) {
 			if (id_priv->cm_id.ib)
 				ib_destroy_cm_id(id_priv->cm_id.ib);
-		} else if (rdma_protocol_iwarp(id_priv->id.device, 1)) {
+		} else if (rdma_cap_iw_cm(id_priv->id.device, 1)) {
 			if (id_priv->cm_id.iw)
 				iw_destroy_cm_id(id_priv->cm_id.iw);
 		}
@@ -2520,7 +2520,7 @@ int rdma_listen(struct rdma_cm_id *id, int backlog)
 			ret = cma_ib_listen(id_priv);
 			if (ret)
 				goto err;
-		} else if (rdma_protocol_iwarp(id->device, 1)) {
+		} else if (rdma_cap_iw_cm(id->device, 1)) {
 			ret = cma_iw_listen(id_priv, backlog);
 			if (ret)
 				goto err;
@@ -2865,7 +2865,7 @@ int rdma_connect(struct rdma_cm_id *id, struct rdma_conn_param *conn_param)
 			ret = cma_resolve_ib_udp(id_priv, conn_param);
 		else
 			ret = cma_connect_ib(id_priv, conn_param);
-	} else if (rdma_protocol_iwarp(id->device, id->port_num))
+	} else if (rdma_cap_iw_cm(id->device, id->port_num))
 		ret = cma_connect_iw(id_priv, conn_param);
 	else
 		ret = -ENOSYS;
@@ -2987,7 +2987,7 @@ int rdma_accept(struct rdma_cm_id *id, struct rdma_conn_param *conn_param)
 			else
 				ret = cma_rep_recv(id_priv);
 		}
-	} else if (rdma_protocol_iwarp(id->device, id->port_num))
+	} else if (rdma_cap_iw_cm(id->device, id->port_num))
 		ret = cma_accept_iw(id_priv, conn_param);
 	else
 		ret = -ENOSYS;
@@ -3042,7 +3042,7 @@ int rdma_reject(struct rdma_cm_id *id, const void *private_data,
 			ret = ib_send_cm_rej(id_priv->cm_id.ib,
 					     IB_CM_REJ_CONSUMER_DEFINED, NULL,
 					     0, private_data, private_data_len);
-	} else if (rdma_protocol_iwarp(id->device, id->port_num)) {
+	} else if (rdma_cap_iw_cm(id->device, id->port_num)) {
 		ret = iw_cm_reject(id_priv->cm_id.iw,
 				   private_data, private_data_len);
 	} else
@@ -3068,7 +3068,7 @@ int rdma_disconnect(struct rdma_cm_id *id)
 		/* Initiate or respond to a disconnect. */
 		if (ib_send_cm_dreq(id_priv->cm_id.ib, NULL, 0))
 			ib_send_cm_drep(id_priv->cm_id.ib, NULL, 0);
-	} else if (rdma_protocol_iwarp(id->device, id->port_num)) {
+	} else if (rdma_cap_iw_cm(id->device, id->port_num)) {
 		ret = iw_cm_disconnect(id_priv->cm_id.iw, 0);
 	} else
 		ret = -EINVAL;
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index e349596..cc92a64 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -1819,6 +1819,21 @@ static inline bool rdma_cap_ib_cm(struct ib_device *device, u8 port_num)
 	return rdma_ib_or_iboe(device, port_num);
 }
 
+/**
+ * rdma_cap_iw_cm - Check if the port of device has the capability IWARP
+ * Communication Manager.
+ *
+ * @device: Device to be checked
+ * @port_num: Port number of the device
+ *
+ * Return false when port of the device don't support IWARP
+ * Communication Manager.
+ */
+static inline bool rdma_cap_iw_cm(struct ib_device *device, u8 port_num)
+{
+	return rdma_protocol_iwarp(device, port_num);
+}
+
 int ib_query_gid(struct ib_device *device,
 		 u8 port_num, int index, union ib_gid *gid);
 
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 19/23] IB/Verbs: Use management helper rdma_cap_ib_sa()
  2015-05-05 12:50 ` Michael Wang
@ 2015-05-05 12:50     ` Michael Wang
  -1 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Introduce helper rdma_cap_ib_sa() to help us check if the port of an
IB device support Infiniband Subnet Administration.

Signed-off-by: Michael Wang <yun.wang-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
---
 drivers/infiniband/core/cma.c      |  4 ++--
 drivers/infiniband/core/sa_query.c | 10 +++++-----
 drivers/infiniband/core/ucma.c     |  2 +-
 include/rdma/ib_verbs.h            | 15 +++++++++++++++
 4 files changed, 23 insertions(+), 8 deletions(-)

diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index 0787035..8def2f5 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -933,7 +933,7 @@ static inline int cma_user_data_offset(struct rdma_id_private *id_priv)
 
 static void cma_cancel_route(struct rdma_id_private *id_priv)
 {
-	if (rdma_protocol_ib(id_priv->id.device, id_priv->id.port_num)) {
+	if (rdma_cap_ib_sa(id_priv->id.device, id_priv->id.port_num)) {
 		if (id_priv->query)
 			ib_sa_cancel_query(id_priv->query_id, id_priv->query);
 	}
@@ -1957,7 +1957,7 @@ int rdma_resolve_route(struct rdma_cm_id *id, int timeout_ms)
 		return -EINVAL;
 
 	atomic_inc(&id_priv->refcount);
-	if (rdma_protocol_ib(id->device, id->port_num))
+	if (rdma_cap_ib_sa(id->device, id->port_num))
 		ret = cma_resolve_ib_route(id_priv, timeout_ms);
 	else if (rdma_protocol_iboe(id->device, id->port_num))
 		ret = cma_resolve_iboe_route(id_priv);
diff --git a/drivers/infiniband/core/sa_query.c b/drivers/infiniband/core/sa_query.c
index b115c28..30aa5e5 100644
--- a/drivers/infiniband/core/sa_query.c
+++ b/drivers/infiniband/core/sa_query.c
@@ -450,7 +450,7 @@ static void ib_sa_event(struct ib_event_handler *handler, struct ib_event *event
 		struct ib_sa_port *port =
 			&sa_dev->port[event->element.port_num - sa_dev->start_port];
 
-		if (WARN_ON(!rdma_protocol_ib(handler->device, port->port_num)))
+		if (WARN_ON(!rdma_cap_ib_sa(handler->device, port->port_num)))
 			return;
 
 		spin_lock_irqsave(&port->ah_lock, flags);
@@ -1173,7 +1173,7 @@ static void ib_sa_add_one(struct ib_device *device)
 
 	for (i = 0; i <= e - s; ++i) {
 		spin_lock_init(&sa_dev->port[i].ah_lock);
-		if (!rdma_protocol_ib(device, i + 1))
+		if (!rdma_cap_ib_sa(device, i + 1))
 			continue;
 
 		sa_dev->port[i].sm_ah    = NULL;
@@ -1208,7 +1208,7 @@ static void ib_sa_add_one(struct ib_device *device)
 		goto err;
 
 	for (i = 0; i <= e - s; ++i) {
-		if (rdma_protocol_ib(device, i + 1))
+		if (rdma_cap_ib_sa(device, i + 1))
 			update_sm_ah(&sa_dev->port[i].update_task);
 	}
 
@@ -1216,7 +1216,7 @@ static void ib_sa_add_one(struct ib_device *device)
 
 err:
 	while (--i >= 0) {
-		if (rdma_protocol_ib(device, i + 1))
+		if (rdma_cap_ib_sa(device, i + 1))
 			ib_unregister_mad_agent(sa_dev->port[i].agent);
 	}
 free:
@@ -1237,7 +1237,7 @@ static void ib_sa_remove_one(struct ib_device *device)
 	flush_workqueue(ib_wq);
 
 	for (i = 0; i <= sa_dev->end_port - sa_dev->start_port; ++i) {
-		if (rdma_protocol_ib(device, i + 1)) {
+		if (rdma_cap_ib_sa(device, i + 1)) {
 			ib_unregister_mad_agent(sa_dev->port[i].agent);
 			if (sa_dev->port[i].sm_ah)
 				kref_put(&sa_dev->port[i].sm_ah->ref, free_sm_ah);
diff --git a/drivers/infiniband/core/ucma.c b/drivers/infiniband/core/ucma.c
index dae7620..d42b816 100644
--- a/drivers/infiniband/core/ucma.c
+++ b/drivers/infiniband/core/ucma.c
@@ -723,7 +723,7 @@ static ssize_t ucma_query_route(struct ucma_file *file,
 	resp.node_guid = (__force __u64) ctx->cm_id->device->node_guid;
 	resp.port_num = ctx->cm_id->port_num;
 
-	if (rdma_protocol_ib(ctx->cm_id->device, ctx->cm_id->port_num))
+	if (rdma_cap_ib_sa(ctx->cm_id->device, ctx->cm_id->port_num))
 		ucma_copy_ib_route(&resp, &ctx->cm_id->route);
 	else if (rdma_protocol_iboe(ctx->cm_id->device, ctx->cm_id->port_num))
 		ucma_copy_iboe_route(&resp, &ctx->cm_id->route);
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index cc92a64..c3a561e8 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -1834,6 +1834,21 @@ static inline bool rdma_cap_iw_cm(struct ib_device *device, u8 port_num)
 	return rdma_protocol_iwarp(device, port_num);
 }
 
+/**
+ * rdma_cap_ib_sa - Check if the port of device has the capability Infiniband
+ * Subnet Administration.
+ *
+ * @device: Device to be checked
+ * @port_num: Port number of the device
+ *
+ * Return false when port of the device don't support Infiniband
+ * Subnet Administration.
+ */
+static inline bool rdma_cap_ib_sa(struct ib_device *device, u8 port_num)
+{
+	return rdma_protocol_ib(device, port_num);
+}
+
 int ib_query_gid(struct ib_device *device,
 		 u8 port_num, int index, union ib_gid *gid);
 
-- 
2.1.0

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

^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 19/23] IB/Verbs: Use management helper rdma_cap_ib_sa()
@ 2015-05-05 12:50     ` Michael Wang
  0 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma, linux-kernel
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Introduce helper rdma_cap_ib_sa() to help us check if the port of an
IB device support Infiniband Subnet Administration.

Signed-off-by: Michael Wang <yun.wang@profitbricks.com>
---
 drivers/infiniband/core/cma.c      |  4 ++--
 drivers/infiniband/core/sa_query.c | 10 +++++-----
 drivers/infiniband/core/ucma.c     |  2 +-
 include/rdma/ib_verbs.h            | 15 +++++++++++++++
 4 files changed, 23 insertions(+), 8 deletions(-)

diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index 0787035..8def2f5 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -933,7 +933,7 @@ static inline int cma_user_data_offset(struct rdma_id_private *id_priv)
 
 static void cma_cancel_route(struct rdma_id_private *id_priv)
 {
-	if (rdma_protocol_ib(id_priv->id.device, id_priv->id.port_num)) {
+	if (rdma_cap_ib_sa(id_priv->id.device, id_priv->id.port_num)) {
 		if (id_priv->query)
 			ib_sa_cancel_query(id_priv->query_id, id_priv->query);
 	}
@@ -1957,7 +1957,7 @@ int rdma_resolve_route(struct rdma_cm_id *id, int timeout_ms)
 		return -EINVAL;
 
 	atomic_inc(&id_priv->refcount);
-	if (rdma_protocol_ib(id->device, id->port_num))
+	if (rdma_cap_ib_sa(id->device, id->port_num))
 		ret = cma_resolve_ib_route(id_priv, timeout_ms);
 	else if (rdma_protocol_iboe(id->device, id->port_num))
 		ret = cma_resolve_iboe_route(id_priv);
diff --git a/drivers/infiniband/core/sa_query.c b/drivers/infiniband/core/sa_query.c
index b115c28..30aa5e5 100644
--- a/drivers/infiniband/core/sa_query.c
+++ b/drivers/infiniband/core/sa_query.c
@@ -450,7 +450,7 @@ static void ib_sa_event(struct ib_event_handler *handler, struct ib_event *event
 		struct ib_sa_port *port =
 			&sa_dev->port[event->element.port_num - sa_dev->start_port];
 
-		if (WARN_ON(!rdma_protocol_ib(handler->device, port->port_num)))
+		if (WARN_ON(!rdma_cap_ib_sa(handler->device, port->port_num)))
 			return;
 
 		spin_lock_irqsave(&port->ah_lock, flags);
@@ -1173,7 +1173,7 @@ static void ib_sa_add_one(struct ib_device *device)
 
 	for (i = 0; i <= e - s; ++i) {
 		spin_lock_init(&sa_dev->port[i].ah_lock);
-		if (!rdma_protocol_ib(device, i + 1))
+		if (!rdma_cap_ib_sa(device, i + 1))
 			continue;
 
 		sa_dev->port[i].sm_ah    = NULL;
@@ -1208,7 +1208,7 @@ static void ib_sa_add_one(struct ib_device *device)
 		goto err;
 
 	for (i = 0; i <= e - s; ++i) {
-		if (rdma_protocol_ib(device, i + 1))
+		if (rdma_cap_ib_sa(device, i + 1))
 			update_sm_ah(&sa_dev->port[i].update_task);
 	}
 
@@ -1216,7 +1216,7 @@ static void ib_sa_add_one(struct ib_device *device)
 
 err:
 	while (--i >= 0) {
-		if (rdma_protocol_ib(device, i + 1))
+		if (rdma_cap_ib_sa(device, i + 1))
 			ib_unregister_mad_agent(sa_dev->port[i].agent);
 	}
 free:
@@ -1237,7 +1237,7 @@ static void ib_sa_remove_one(struct ib_device *device)
 	flush_workqueue(ib_wq);
 
 	for (i = 0; i <= sa_dev->end_port - sa_dev->start_port; ++i) {
-		if (rdma_protocol_ib(device, i + 1)) {
+		if (rdma_cap_ib_sa(device, i + 1)) {
 			ib_unregister_mad_agent(sa_dev->port[i].agent);
 			if (sa_dev->port[i].sm_ah)
 				kref_put(&sa_dev->port[i].sm_ah->ref, free_sm_ah);
diff --git a/drivers/infiniband/core/ucma.c b/drivers/infiniband/core/ucma.c
index dae7620..d42b816 100644
--- a/drivers/infiniband/core/ucma.c
+++ b/drivers/infiniband/core/ucma.c
@@ -723,7 +723,7 @@ static ssize_t ucma_query_route(struct ucma_file *file,
 	resp.node_guid = (__force __u64) ctx->cm_id->device->node_guid;
 	resp.port_num = ctx->cm_id->port_num;
 
-	if (rdma_protocol_ib(ctx->cm_id->device, ctx->cm_id->port_num))
+	if (rdma_cap_ib_sa(ctx->cm_id->device, ctx->cm_id->port_num))
 		ucma_copy_ib_route(&resp, &ctx->cm_id->route);
 	else if (rdma_protocol_iboe(ctx->cm_id->device, ctx->cm_id->port_num))
 		ucma_copy_iboe_route(&resp, &ctx->cm_id->route);
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index cc92a64..c3a561e8 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -1834,6 +1834,21 @@ static inline bool rdma_cap_iw_cm(struct ib_device *device, u8 port_num)
 	return rdma_protocol_iwarp(device, port_num);
 }
 
+/**
+ * rdma_cap_ib_sa - Check if the port of device has the capability Infiniband
+ * Subnet Administration.
+ *
+ * @device: Device to be checked
+ * @port_num: Port number of the device
+ *
+ * Return false when port of the device don't support Infiniband
+ * Subnet Administration.
+ */
+static inline bool rdma_cap_ib_sa(struct ib_device *device, u8 port_num)
+{
+	return rdma_protocol_ib(device, port_num);
+}
+
 int ib_query_gid(struct ib_device *device,
 		 u8 port_num, int index, union ib_gid *gid);
 
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 20/23] IB/Verbs: Use management helper rdma_cap_ib_mcast()
  2015-05-05 12:50 ` Michael Wang
                   ` (4 preceding siblings ...)
  (?)
@ 2015-05-05 12:50 ` Michael Wang
  -1 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma, linux-kernel
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Introduce helper rdma_cap_ib_mcast() to help us check if the port of an
IB device support Infiniband Multicast.

Signed-off-by: Michael Wang <yun.wang@profitbricks.com>
---
 drivers/infiniband/core/cma.c       |  6 +++---
 drivers/infiniband/core/multicast.c |  6 +++---
 include/rdma/ib_verbs.h             | 15 +++++++++++++++
 3 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index 8def2f5..101e9cc 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -1007,7 +1007,7 @@ static void cma_leave_mc_groups(struct rdma_id_private *id_priv)
 		mc = container_of(id_priv->mc_list.next,
 				  struct cma_multicast, list);
 		list_del(&mc->list);
-		if (rdma_protocol_ib(id_priv->cma_dev->device,
+		if (rdma_cap_ib_mcast(id_priv->cma_dev->device,
 				      id_priv->id.port_num)) {
 			ib_sa_free_multicast(mc->multicast.ib);
 			kfree(mc);
@@ -3321,7 +3321,7 @@ int rdma_join_multicast(struct rdma_cm_id *id, struct sockaddr *addr,
 	if (rdma_protocol_iboe(id->device, id->port_num)) {
 		kref_init(&mc->mcref);
 		ret = cma_iboe_join_multicast(id_priv, mc);
-	} else if (rdma_protocol_ib(id->device, id->port_num))
+	} else if (rdma_cap_ib_mcast(id->device, id->port_num))
 		ret = cma_join_ib_multicast(id_priv, mc);
 	else
 		ret = -ENOSYS;
@@ -3355,7 +3355,7 @@ void rdma_leave_multicast(struct rdma_cm_id *id, struct sockaddr *addr)
 
 			BUG_ON(id_priv->cma_dev->device != id->device);
 
-			if (rdma_protocol_ib(id->device, id->port_num)) {
+			if (rdma_cap_ib_mcast(id->device, id->port_num)) {
 				ib_sa_free_multicast(mc->multicast.ib);
 				kfree(mc);
 			} else if (rdma_protocol_iboe(id->device, id->port_num))
diff --git a/drivers/infiniband/core/multicast.c b/drivers/infiniband/core/multicast.c
index b57ed03..605f20a 100644
--- a/drivers/infiniband/core/multicast.c
+++ b/drivers/infiniband/core/multicast.c
@@ -780,7 +780,7 @@ static void mcast_event_handler(struct ib_event_handler *handler,
 	int index;
 
 	dev = container_of(handler, struct mcast_device, event_handler);
-	if (WARN_ON(!rdma_protocol_ib(dev->device, event->element.port_num)))
+	if (WARN_ON(!rdma_cap_ib_mcast(dev->device, event->element.port_num)))
 		return;
 
 	index = event->element.port_num - dev->start_port;
@@ -820,7 +820,7 @@ static void mcast_add_one(struct ib_device *device)
 	}
 
 	for (i = 0; i <= dev->end_port - dev->start_port; i++) {
-		if (!rdma_protocol_ib(device, dev->start_port + i))
+		if (!rdma_cap_ib_mcast(device, dev->start_port + i))
 			continue;
 		port = &dev->port[i];
 		port->dev = dev;
@@ -858,7 +858,7 @@ static void mcast_remove_one(struct ib_device *device)
 	flush_workqueue(mcast_wq);
 
 	for (i = 0; i <= dev->end_port - dev->start_port; i++) {
-		if (rdma_protocol_ib(device, dev->start_port + i)) {
+		if (rdma_cap_ib_mcast(device, dev->start_port + i)) {
 			port = &dev->port[i];
 			deref_port(port);
 			wait_for_completion(&port->comp);
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index c3a561e8..6bbbc86 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -1849,6 +1849,21 @@ static inline bool rdma_cap_ib_sa(struct ib_device *device, u8 port_num)
 	return rdma_protocol_ib(device, port_num);
 }
 
+/**
+ * rdma_cap_ib_mcast - Check if the port of device has the capability Infiniband
+ * Multicast.
+ *
+ * @device: Device to be checked
+ * @port_num: Port number of the device
+ *
+ * Return false when port of the device don't support Infiniband
+ * Multicast.
+ */
+static inline bool rdma_cap_ib_mcast(struct ib_device *device, u8 port_num)
+{
+	return rdma_cap_ib_sa(device, port_num);
+}
+
 int ib_query_gid(struct ib_device *device,
 		 u8 port_num, int index, union ib_gid *gid);
 
-- 
2.1.0

^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 21/23] IB/Verbs: Use management helper rdma_cap_read_multi_sge()
  2015-05-05 12:50 ` Michael Wang
@ 2015-05-05 12:50     ` Michael Wang
  -1 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Introduce helper rdma_cap_read_multi_sge() to help us check if the port of an
IB device support RDMA Read Multiple Scatter-Gather Entries.

Signed-off-by: Michael Wang <yun.wang-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
---
 include/rdma/ib_verbs.h                 | 16 ++++++++++++++++
 net/sunrpc/xprtrdma/svc_rdma_recvfrom.c |  4 ++--
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index 6bbbc86..2cf23b1 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -1864,6 +1864,22 @@ static inline bool rdma_cap_ib_mcast(struct ib_device *device, u8 port_num)
 	return rdma_cap_ib_sa(device, port_num);
 }
 
+/**
+ * rdma_cap_read_multi_sge - Check if the port of device has the capability
+ * RDMA Read Multiple Scatter-Gather Entries.
+ *
+ * @device: Device to be checked
+ * @port_num: Port number of the device
+ *
+ * Return false when port of the device don't support
+ * RDMA Read Multiple Scatter-Gather Entries.
+ */
+static inline bool rdma_cap_read_multi_sge(struct ib_device *device,
+					   u8 port_num)
+{
+	return !rdma_protocol_iwarp(device, port_num);
+}
+
 int ib_query_gid(struct ib_device *device,
 		 u8 port_num, int index, union ib_gid *gid);
 
diff --git a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
index 2cc625d..86b4416 100644
--- a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
+++ b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
@@ -117,8 +117,8 @@ static void rdma_build_arg_xdr(struct svc_rqst *rqstp,
 
 static int rdma_read_max_sge(struct svcxprt_rdma *xprt, int sge_count)
 {
-	if (rdma_protocol_iwarp(xprt->sc_cm_id->device,
-				xprt->sc_cm_id->port_num))
+	if (!rdma_cap_read_multi_sge(xprt->sc_cm_id->device,
+				     xprt->sc_cm_id->port_num))
 		return 1;
 	else
 		return min_t(int, sge_count, xprt->sc_max_sge);
-- 
2.1.0

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

^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 21/23] IB/Verbs: Use management helper rdma_cap_read_multi_sge()
@ 2015-05-05 12:50     ` Michael Wang
  0 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma, linux-kernel
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Introduce helper rdma_cap_read_multi_sge() to help us check if the port of an
IB device support RDMA Read Multiple Scatter-Gather Entries.

Signed-off-by: Michael Wang <yun.wang@profitbricks.com>
---
 include/rdma/ib_verbs.h                 | 16 ++++++++++++++++
 net/sunrpc/xprtrdma/svc_rdma_recvfrom.c |  4 ++--
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index 6bbbc86..2cf23b1 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -1864,6 +1864,22 @@ static inline bool rdma_cap_ib_mcast(struct ib_device *device, u8 port_num)
 	return rdma_cap_ib_sa(device, port_num);
 }
 
+/**
+ * rdma_cap_read_multi_sge - Check if the port of device has the capability
+ * RDMA Read Multiple Scatter-Gather Entries.
+ *
+ * @device: Device to be checked
+ * @port_num: Port number of the device
+ *
+ * Return false when port of the device don't support
+ * RDMA Read Multiple Scatter-Gather Entries.
+ */
+static inline bool rdma_cap_read_multi_sge(struct ib_device *device,
+					   u8 port_num)
+{
+	return !rdma_protocol_iwarp(device, port_num);
+}
+
 int ib_query_gid(struct ib_device *device,
 		 u8 port_num, int index, union ib_gid *gid);
 
diff --git a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
index 2cc625d..86b4416 100644
--- a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
+++ b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
@@ -117,8 +117,8 @@ static void rdma_build_arg_xdr(struct svc_rqst *rqstp,
 
 static int rdma_read_max_sge(struct svcxprt_rdma *xprt, int sge_count)
 {
-	if (rdma_protocol_iwarp(xprt->sc_cm_id->device,
-				xprt->sc_cm_id->port_num))
+	if (!rdma_cap_read_multi_sge(xprt->sc_cm_id->device,
+				     xprt->sc_cm_id->port_num))
 		return 1;
 	else
 		return min_t(int, sge_count, xprt->sc_max_sge);
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 22/23] IB/Verbs: Use management helper rdma_cap_af_ib()
  2015-05-05 12:50 ` Michael Wang
@ 2015-05-05 12:50     ` Michael Wang
  -1 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Introduce helper rdma_cap_af_ib() to help us check if the port of an
IB device support Native Infiniband Address.

Signed-off-by: Michael Wang <yun.wang-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
---
 drivers/infiniband/core/cma.c |  2 +-
 include/rdma/ib_verbs.h       | 15 +++++++++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index 101e9cc..a6cbf42 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -448,7 +448,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 (!rdma_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 ac1e7f1..41f8445 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -1865,6 +1865,21 @@ static inline bool rdma_cap_ib_mcast(struct ib_device *device, u8 port_num)
 }
 
 /**
+ * rdma_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 false when port of the device don't support
+ * Native Infiniband Address.
+ */
+static inline bool rdma_cap_af_ib(struct ib_device *device, u8 port_num)
+{
+	return rdma_ib_or_iboe(device, port_num);
+}
+
+/**
  * rdma_cap_read_multi_sge - Check if the port of device has the capability
  * RDMA Read Multiple Scatter-Gather Entries.
  *
-- 
2.1.0

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

^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 22/23] IB/Verbs: Use management helper rdma_cap_af_ib()
@ 2015-05-05 12:50     ` Michael Wang
  0 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma, linux-kernel
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Introduce helper rdma_cap_af_ib() to help us check if the port of an
IB device support Native Infiniband Address.

Signed-off-by: Michael Wang <yun.wang@profitbricks.com>
---
 drivers/infiniband/core/cma.c |  2 +-
 include/rdma/ib_verbs.h       | 15 +++++++++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index 101e9cc..a6cbf42 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -448,7 +448,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 (!rdma_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 ac1e7f1..41f8445 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -1865,6 +1865,21 @@ static inline bool rdma_cap_ib_mcast(struct ib_device *device, u8 port_num)
 }
 
 /**
+ * rdma_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 false when port of the device don't support
+ * Native Infiniband Address.
+ */
+static inline bool rdma_cap_af_ib(struct ib_device *device, u8 port_num)
+{
+	return rdma_ib_or_iboe(device, port_num);
+}
+
+/**
  * rdma_cap_read_multi_sge - Check if the port of device has the capability
  * RDMA Read Multiple Scatter-Gather Entries.
  *
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 23/23] IB/Verbs: Use management helper rdma_cap_eth_ah()
  2015-05-05 12:50 ` Michael Wang
@ 2015-05-05 12:50     ` Michael Wang
  -1 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Introduce helper rdma_cap_eth_ah() to help us check if the port of an
IB device support Ethernet Address Handler.

Signed-off-by: Michael Wang <yun.wang-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
---
 drivers/infiniband/core/cma.c      |  2 +-
 drivers/infiniband/core/sa_query.c |  2 +-
 drivers/infiniband/core/verbs.c    |  4 ++--
 include/rdma/ib_verbs.h            | 15 +++++++++++++++
 4 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index a6cbf42..0a3e859 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -711,7 +711,7 @@ static int cma_ib_init_qp_attr(struct rdma_id_private *id_priv,
 	int ret;
 	u16 pkey;
 
-	if (rdma_protocol_iboe(id_priv->id.device, id_priv->id.port_num))
+	if (rdma_cap_eth_ah(id_priv->id.device, id_priv->id.port_num))
 		pkey = 0xffff;
 	else
 		pkey = ib_addr_get_pkey(dev_addr);
diff --git a/drivers/infiniband/core/sa_query.c b/drivers/infiniband/core/sa_query.c
index 30aa5e5..7f7c8c9 100644
--- a/drivers/infiniband/core/sa_query.c
+++ b/drivers/infiniband/core/sa_query.c
@@ -540,7 +540,7 @@ int ib_init_ah_from_path(struct ib_device *device, u8 port_num,
 	ah_attr->port_num = port_num;
 	ah_attr->static_rate = rec->rate;
 
-	force_grh = rdma_protocol_iboe(device, port_num);
+	force_grh = rdma_cap_eth_ah(device, port_num);
 
 	if (rec->hop_limit > 1 || force_grh) {
 		ah_attr->ah_flags = IB_AH_GRH;
diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c
index 7dd2f51..d110a5e 100644
--- a/drivers/infiniband/core/verbs.c
+++ b/drivers/infiniband/core/verbs.c
@@ -200,7 +200,7 @@ int ib_init_ah_from_wc(struct ib_device *device, u8 port_num, struct ib_wc *wc,
 	int ret;
 
 	memset(ah_attr, 0, sizeof *ah_attr);
-	if (rdma_protocol_iboe(device, port_num)) {
+	if (rdma_cap_eth_ah(device, port_num)) {
 		if (!(wc->wc_flags & IB_WC_GRH))
 			return -EPROTOTYPE;
 
@@ -869,7 +869,7 @@ int ib_resolve_eth_l2_attrs(struct ib_qp *qp,
 	union ib_gid  sgid;
 
 	if ((*qp_attr_mask & IB_QP_AV)  &&
-	    (rdma_protocol_iboe(qp->device, qp_attr->ah_attr.port_num))) {
+	    (rdma_cap_eth_ah(qp->device, qp_attr->ah_attr.port_num))) {
 		ret = ib_query_gid(qp->device, qp_attr->ah_attr.port_num,
 				   qp_attr->ah_attr.grh.sgid_index, &sgid);
 		if (ret)
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index 41f8445..721c378 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -1880,6 +1880,21 @@ static inline bool rdma_cap_af_ib(struct ib_device *device, u8 port_num)
 }
 
 /**
+ * rdma_cap_eth_ah - Check if the port of device has the capability
+ * Ethernet Address Handler.
+ *
+ * @device: Device to be checked
+ * @port_num: Port number of the device
+ *
+ * Return false when port of the device don't support
+ * Ethernet Address Handler.
+ */
+static inline bool rdma_cap_eth_ah(struct ib_device *device, u8 port_num)
+{
+	return rdma_protocol_iboe(device, port_num);
+}
+
+/**
  * rdma_cap_read_multi_sge - Check if the port of device has the capability
  * RDMA Read Multiple Scatter-Gather Entries.
  *
-- 
2.1.0

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

^ permalink raw reply related	[flat|nested] 64+ messages in thread

* [PATCH v8 23/23] IB/Verbs: Use management helper rdma_cap_eth_ah()
@ 2015-05-05 12:50     ` Michael Wang
  0 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-05 12:50 UTC (permalink / raw)
  To: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma, linux-kernel
  Cc: Michael Wang, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Introduce helper rdma_cap_eth_ah() to help us check if the port of an
IB device support Ethernet Address Handler.

Signed-off-by: Michael Wang <yun.wang@profitbricks.com>
---
 drivers/infiniband/core/cma.c      |  2 +-
 drivers/infiniband/core/sa_query.c |  2 +-
 drivers/infiniband/core/verbs.c    |  4 ++--
 include/rdma/ib_verbs.h            | 15 +++++++++++++++
 4 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index a6cbf42..0a3e859 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -711,7 +711,7 @@ static int cma_ib_init_qp_attr(struct rdma_id_private *id_priv,
 	int ret;
 	u16 pkey;
 
-	if (rdma_protocol_iboe(id_priv->id.device, id_priv->id.port_num))
+	if (rdma_cap_eth_ah(id_priv->id.device, id_priv->id.port_num))
 		pkey = 0xffff;
 	else
 		pkey = ib_addr_get_pkey(dev_addr);
diff --git a/drivers/infiniband/core/sa_query.c b/drivers/infiniband/core/sa_query.c
index 30aa5e5..7f7c8c9 100644
--- a/drivers/infiniband/core/sa_query.c
+++ b/drivers/infiniband/core/sa_query.c
@@ -540,7 +540,7 @@ int ib_init_ah_from_path(struct ib_device *device, u8 port_num,
 	ah_attr->port_num = port_num;
 	ah_attr->static_rate = rec->rate;
 
-	force_grh = rdma_protocol_iboe(device, port_num);
+	force_grh = rdma_cap_eth_ah(device, port_num);
 
 	if (rec->hop_limit > 1 || force_grh) {
 		ah_attr->ah_flags = IB_AH_GRH;
diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c
index 7dd2f51..d110a5e 100644
--- a/drivers/infiniband/core/verbs.c
+++ b/drivers/infiniband/core/verbs.c
@@ -200,7 +200,7 @@ int ib_init_ah_from_wc(struct ib_device *device, u8 port_num, struct ib_wc *wc,
 	int ret;
 
 	memset(ah_attr, 0, sizeof *ah_attr);
-	if (rdma_protocol_iboe(device, port_num)) {
+	if (rdma_cap_eth_ah(device, port_num)) {
 		if (!(wc->wc_flags & IB_WC_GRH))
 			return -EPROTOTYPE;
 
@@ -869,7 +869,7 @@ int ib_resolve_eth_l2_attrs(struct ib_qp *qp,
 	union ib_gid  sgid;
 
 	if ((*qp_attr_mask & IB_QP_AV)  &&
-	    (rdma_protocol_iboe(qp->device, qp_attr->ah_attr.port_num))) {
+	    (rdma_cap_eth_ah(qp->device, qp_attr->ah_attr.port_num))) {
 		ret = ib_query_gid(qp->device, qp_attr->ah_attr.port_num,
 				   qp_attr->ah_attr.grh.sgid_index, &sgid);
 		if (ret)
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index 41f8445..721c378 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -1880,6 +1880,21 @@ static inline bool rdma_cap_af_ib(struct ib_device *device, u8 port_num)
 }
 
 /**
+ * rdma_cap_eth_ah - Check if the port of device has the capability
+ * Ethernet Address Handler.
+ *
+ * @device: Device to be checked
+ * @port_num: Port number of the device
+ *
+ * Return false when port of the device don't support
+ * Ethernet Address Handler.
+ */
+static inline bool rdma_cap_eth_ah(struct ib_device *device, u8 port_num)
+{
+	return rdma_protocol_iboe(device, port_num);
+}
+
+/**
  * rdma_cap_read_multi_sge - Check if the port of device has the capability
  * RDMA Read Multiple Scatter-Gather Entries.
  *
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 64+ messages in thread

* Re: [PATCH v8 00/23] IB/Verbs: IB Management Helpers
  2015-05-05 12:50 ` Michael Wang
@ 2015-05-05 14:16     ` Or Gerlitz
  -1 siblings, 0 replies; 64+ messages in thread
From: Or Gerlitz @ 2015-05-05 14:16 UTC (permalink / raw)
  To: Michael Wang, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: Tom Tucker, Steve Wise, Hoang-Nam Nguyen, Christoph Raisch,
	Mike Marciniszyn, Eli Cohen, Faisal Latif, Jack Morgenstein,
	Haggai Eran, Ira Weiny, Tom Talpey, Jason Gunthorpe,
	Devesh Sharma, Liran Liss, Dave Goodell

On 5/5/2015 3:50 PM, Michael Wang wrote:
> Since v7:
>    * Thanks to Doug, Ira, Devesh for the testing:-)
>    * Thanks for the comments from or, Doug, Ira, Jason:-)
>      Please remind me if anything missed:-P
>    * Use rdma_cap_XX() instead of cap_XX() for readability
>    * Remove CC list in git log for maintainability
>    * Use bool as return value
>    * Updated github repository to v8

Didn't you see that patches 15~23 will be squashed into one?


Also, when you post version N you need not only to list the changes 
since version N-1 but rather also to keep the full changes since Vx for 
x=1...N-2, reviewers needs not chase your previous cover letters and see 
if/whatwent wrong, specifically with a sensitive series like this one.

So if/when there's V9, use that practice, and for the time being, reply 
on the V8 cover letter with the full listing of changes

Or.


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

^ permalink raw reply	[flat|nested] 64+ messages in thread

* Re: [PATCH v8 00/23] IB/Verbs: IB Management Helpers
@ 2015-05-05 14:16     ` Or Gerlitz
  0 siblings, 0 replies; 64+ messages in thread
From: Or Gerlitz @ 2015-05-05 14:16 UTC (permalink / raw)
  To: Michael Wang, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma, linux-kernel
  Cc: Tom Tucker, Steve Wise, Hoang-Nam Nguyen, Christoph Raisch,
	Mike Marciniszyn, Eli Cohen, Faisal Latif, Jack Morgenstein,
	Haggai Eran, Ira Weiny, Tom Talpey, Jason Gunthorpe,
	Devesh Sharma, Liran Liss, Dave Goodell

On 5/5/2015 3:50 PM, Michael Wang wrote:
> Since v7:
>    * Thanks to Doug, Ira, Devesh for the testing:-)
>    * Thanks for the comments from or, Doug, Ira, Jason:-)
>      Please remind me if anything missed:-P
>    * Use rdma_cap_XX() instead of cap_XX() for readability
>    * Remove CC list in git log for maintainability
>    * Use bool as return value
>    * Updated github repository to v8

Didn't you see that patches 15~23 will be squashed into one?


Also, when you post version N you need not only to list the changes 
since version N-1 but rather also to keep the full changes since Vx for 
x=1...N-2, reviewers needs not chase your previous cover letters and see 
if/whatwent wrong, specifically with a sensitive series like this one.

So if/when there's V9, use that practice, and for the time being, reply 
on the V8 cover letter with the full listing of changes

Or.



^ permalink raw reply	[flat|nested] 64+ messages in thread

* Re: [PATCH v8 00/23] IB/Verbs: IB Management Helpers
  2015-05-05 14:16     ` Or Gerlitz
  (?)
@ 2015-05-05 14:40     ` Michael Wang
  2015-05-08 16:28       ` Devesh Sharma
  -1 siblings, 1 reply; 64+ messages in thread
From: Michael Wang @ 2015-05-05 14:40 UTC (permalink / raw)
  To: Or Gerlitz, Sean Hefty, Hal Rosenstock, Doug Ledford, linux-rdma,
	linux-kernel
  Cc: Tom Tucker, Steve Wise, Hoang-Nam Nguyen, Christoph Raisch,
	Mike Marciniszyn, Eli Cohen, Faisal Latif, Jack Morgenstein,
	Haggai Eran, Ira Weiny, Tom Talpey, Jason Gunthorpe,
	Devesh Sharma, Liran Liss, Dave Goodell



On 05/05/2015 04:16 PM, Or Gerlitz wrote:
> On 5/5/2015 3:50 PM, Michael Wang wrote:
>> Since v7:
>>    * Thanks to Doug, Ira, Devesh for the testing:-)
>>    * Thanks for the comments from or, Doug, Ira, Jason:-)
>>      Please remind me if anything missed:-P
>>    * Use rdma_cap_XX() instead of cap_XX() for readability
>>    * Remove CC list in git log for maintainability
>>    * Use bool as return value
>>    * Updated github repository to v8
> 
> Didn't you see that patches 15~23 will be squashed into one?

I missed the conversation on that, you mentioned to remove the
CC list but don't want to merge the patches, correct?

> 
> 
> Also, when you post version N you need not only to list the changes since version N-1 but rather also to keep the full changes since Vx for x=1...N-2, reviewers needs not chase your previous cover letters and see if/whatwent wrong, specifically with a sensitive series like this one.

That maybe too long and with some outdated info, I can reserve
the log since this version if it was preferred by folks.

> 
> So if/when there's V9, use that practice, and for the time being, reply on the V8 cover letter with the full listing of changes

I'm using git send-mail which reply on the cover of each version,
not sure how to reply on a prev cover? and that won't start a new
thread for the new version, isn't it?

Regards,
Michael Wang

> 
> Or.
> 
> 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* Re: [PATCH v8 00/23] IB/Verbs: IB Management Helpers
  2015-05-05 14:40     ` Michael Wang
@ 2015-05-08 16:28       ` Devesh Sharma
  0 siblings, 0 replies; 64+ messages in thread
From: Devesh Sharma @ 2015-05-08 16:28 UTC (permalink / raw)
  To: Michael Wang
  Cc: Or Gerlitz, Sean Hefty, Hal Rosenstock, Doug Ledford, linux-rdma,
	linux-kernel, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Haggai Eran, Ira Weiny, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

Reviewed-by: Devesh Sharma <devesh.sharma@avagotech.com>

On Tue, May 5, 2015 at 8:10 PM, Michael Wang <yun.wang@profitbricks.com> wrote:
>
>
> On 05/05/2015 04:16 PM, Or Gerlitz wrote:
>> On 5/5/2015 3:50 PM, Michael Wang wrote:
>>> Since v7:
>>>    * Thanks to Doug, Ira, Devesh for the testing:-)
>>>    * Thanks for the comments from or, Doug, Ira, Jason:-)
>>>      Please remind me if anything missed:-P
>>>    * Use rdma_cap_XX() instead of cap_XX() for readability
>>>    * Remove CC list in git log for maintainability
>>>    * Use bool as return value
>>>    * Updated github repository to v8
>>
>> Didn't you see that patches 15~23 will be squashed into one?
>
> I missed the conversation on that, you mentioned to remove the
> CC list but don't want to merge the patches, correct?
>
>>
>>
>> Also, when you post version N you need not only to list the changes since version N-1 but rather also to keep the full changes since Vx for x=1...N-2, reviewers needs not chase your previous cover letters and see if/whatwent wrong, specifically with a sensitive series like this one.
>
> That maybe too long and with some outdated info, I can reserve
> the log since this version if it was preferred by folks.
>
>>
>> So if/when there's V9, use that practice, and for the time being, reply on the V8 cover letter with the full listing of changes
>
> I'm using git send-mail which reply on the cover of each version,
> not sure how to reply on a prev cover? and that won't start a new
> thread for the new version, isn't it?
>
> Regards,
> Michael Wang
>
>>
>> Or.
>>
>>
> --
> 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



-- 
-Regards
Devesh

^ permalink raw reply	[flat|nested] 64+ messages in thread

* Re: [PATCH v8 00/23] IB/Verbs: IB Management Helpers
  2015-05-05 12:50 ` Michael Wang
@ 2015-05-11 23:49     ` ira.weiny
  -1 siblings, 0 replies; 64+ messages in thread
From: ira.weiny @ 2015-05-11 23:49 UTC (permalink / raw)
  To: Michael Wang
  Cc: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Tom Tucker, Steve Wise,
	Hoang-Nam Nguyen, Christoph Raisch, Mike Marciniszyn, Eli Cohen,
	Faisal Latif, Jack Morgenstein, Or Gerlitz, Haggai Eran,
	Tom Talpey, Jason Gunthorpe, Devesh Sharma, Liran Liss,
	Dave Goodell

I have run with this series and the only issue I have found is not with this
patch set directly.

This patch:

>   IB/Verbs: Use management helper rdma_cap_ib_mad()

causes an error when you actually use the port passed from the ib_umad module.
I have a patch to fix that which I found while trying to build on this series
for the use of a bit mask.

Doug, I don't know what you would like to do for this fix.  I am submitting it
shortly with a new version of the core capability bit patches.  If you want to
just add it after this series or force Michael to respin with the fix?  Frankly
I vote for the former because as it stands this series does not break directly.
It was only after I changed the implementation of rdma_cap_ib_mad that it
broke.


For the rest of the series.

Reviewed-by: Ira Weiny <ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Tested-by: Ira Weiny <ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
	-- Limited to mlx4, qib, and OPA (with additional patches.)


On Tue, May 05, 2015 at 02:50:17PM +0200, Michael Wang wrote:
> Since v7:
>   * Thanks to Doug, Ira, Devesh for the testing :-)
>   * Thanks for the comments from or, Doug, Ira, Jason :-)
>     Please remind me if anything missed :-P
>   * Use rdma_cap_XX() instead of cap_XX() for readability
>   * Remove CC list in git log for maintainability
>   * Use bool as return value
>   * Updated github repository to v8
> 
> There are plenty of lengthy code to check the transport type of IB device,
> or the link layer type of it's port, but actually we are just speculating
> whether a particular management/feature is supported by the device/port.
> 
> Thus instead of inferring, we should have our own mechanism for IB management
> capability/protocol/feature checking, several proposals below.
> 
> This patch set will introduce query_protocol() to check management requirement
> instead of inferring from transport and link layer respectively, along with
> the new enum on protocol type.
> 
> Mapping List:
> 		node-type	link-layer	transport	protocol
> nes		RNIC		ETH		IWARP		IWARP
> amso1100	RNIC		ETH		IWARP		IWARP
> cxgb3   	RNIC		ETH		IWARP		IWARP
> cxgb4   	RNIC		ETH		IWARP		IWARP
> usnic   	USNIC_UDP	ETH		USNIC_UDP	USNIC_UDP
> ocrdma  	IB_CA		ETH		IB		IBOE
> mlx4    	IB_CA		IB/ETH		IB		IB/IBOE
> mlx5    	IB_CA		IB		IB		IB
> ehca    	IB_CA		IB		IB		IB
> ipath   	IB_CA		IB		IB		IB
> mthca   	IB_CA		IB		IB		IB
> qib     	IB_CA		IB		IB		IB
> 
> For example:
> 	if (transport == IB) && (link-layer == ETH)
> will now become:
> 	if (query_protocol() == IBOE)
> 
> Thus we will be able to get rid of the respective transport and link-layer
> checking, and it will help us to add new protocol/Technology (like OPA) more
> easier, also with the introduced management helpers, IB management logical
> will be more clear and easier for extending.
> 
> Highlights:
>     The long CC list in each patches was complained consider about the
>     maintainability, it was suggested folks to provide their reviewed-by or
>     Acked-by instead, so for those who used to be on the CC list, please
>     provide your signature voluntarily :-)
> 
>     The 'mgmt-helpers' branch of 'git-9UaJU3cA/F/QT0dZR+AlfA@public.gmane.org:ywang-pb/infiniband-wy.git'
>     contain this series based on the latest 'infiniband/for-next'
> 
>     Patch 1#~14# included all the logical reform, 15#~23# introduced the
>     management helpers.
> 
>     Doug suggested the bitmask mechanism:
> 	https://www.mail-archive.com/linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg23765.html
>     which could be the plan for future reforming, we prefer that to be another
>     series which focus on semantic and performance.
> 
>     This patch-set is somewhat 'bloated' now and it may be a good timing for
>     staging, I'd like to suggest we focus on improving existed helpers and push
>     all the further reforms into next series ;-)
> 
> Proposals:
>     Sean:
> 	https://www.mail-archive.com/linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg23339.html
>     Doug:
> 	https://www.mail-archive.com/linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg23418.html
> 	https://www.mail-archive.com/linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg23765.html
>     Jason:
> 	https://www.mail-archive.com/linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg23425.html
> 
> Michael Wang (23):
>   IB/Verbs: Implement new callback query_protocol()
>   IB/Verbs: Implement raw management helpers
>   IB/Verbs: Reform IB-core mad/agent/user_mad
>   IB/Verbs: Reform IB-core cm
>   IB/Verbs: Reform IB-core sa_query
>   IB/Verbs: Reform IB-core multicast
>   IB/Verbs: Reform IB-ulp ipoib
>   IB/Verbs: Reform IB-ulp xprtrdma
>   IB/Verbs: Reform IB-core verbs
>   IB/Verbs: Reform cm related part in IB-core cma/ucm
>   IB/Verbs: Reform route related part in IB-core cma
>   IB/Verbs: Reform mcast related part in IB-core cma
>   IB/Verbs: Reform cma_acquire_dev()
>   IB/Verbs: Reform rest part in IB-core cma
>   IB/Verbs: Use management helper rdma_cap_ib_mad()
>   IB/Verbs: Use management helper rdma_cap_ib_smi()
>   IB/Verbs: Use management helper rdma_cap_ib_cm()
>   IB/Verbs: Use management helper rdma_cap_iw_cm()
>   IB/Verbs: Use management helper rdma_cap_ib_sa()
>   IB/Verbs: Use management helper rdma_cap_ib_mcast()
>   IB/Verbs: Use management helper rdma_cap_read_multi_sge()
>   IB/Verbs: Use management helper rdma_cap_af_ib()
>   IB/Verbs: Use management helper rdma_cap_eth_ah()
> 
>  drivers/infiniband/core/agent.c              |   2 +-
>  drivers/infiniband/core/cm.c                 |  20 ++-
>  drivers/infiniband/core/cma.c                | 257 +++++++++++----------------
>  drivers/infiniband/core/device.c             |   1 +
>  drivers/infiniband/core/mad.c                |  43 +++--
>  drivers/infiniband/core/multicast.c          |  12 +-
>  drivers/infiniband/core/sa_query.c           |  30 ++--
>  drivers/infiniband/core/ucm.c                |   3 +-
>  drivers/infiniband/core/ucma.c               |  25 +--
>  drivers/infiniband/core/user_mad.c           |  26 ++-
>  drivers/infiniband/core/verbs.c              |   6 +-
>  drivers/infiniband/hw/amso1100/c2_provider.c |   7 +
>  drivers/infiniband/hw/cxgb3/iwch_provider.c  |   7 +
>  drivers/infiniband/hw/cxgb4/provider.c       |   7 +
>  drivers/infiniband/hw/ehca/ehca_hca.c        |   6 +
>  drivers/infiniband/hw/ehca/ehca_iverbs.h     |   3 +
>  drivers/infiniband/hw/ehca/ehca_main.c       |   1 +
>  drivers/infiniband/hw/ipath/ipath_verbs.c    |   7 +
>  drivers/infiniband/hw/mlx4/main.c            |  10 ++
>  drivers/infiniband/hw/mlx5/main.c            |   7 +
>  drivers/infiniband/hw/mthca/mthca_provider.c |   7 +
>  drivers/infiniband/hw/nes/nes_verbs.c        |   6 +
>  drivers/infiniband/hw/ocrdma/ocrdma_main.c   |   1 +
>  drivers/infiniband/hw/ocrdma/ocrdma_verbs.c  |   6 +
>  drivers/infiniband/hw/ocrdma/ocrdma_verbs.h  |   3 +
>  drivers/infiniband/hw/qib/qib_verbs.c        |   7 +
>  drivers/infiniband/hw/usnic/usnic_ib_main.c  |   1 +
>  drivers/infiniband/hw/usnic/usnic_ib_verbs.c |   6 +
>  drivers/infiniband/hw/usnic/usnic_ib_verbs.h |   2 +
>  drivers/infiniband/ulp/ipoib/ipoib_main.c    |  15 +-
>  include/rdma/ib_verbs.h                      | 167 +++++++++++++++++
>  net/sunrpc/xprtrdma/svc_rdma_recvfrom.c      |   4 +-
>  net/sunrpc/xprtrdma/svc_rdma_transport.c     |  45 ++---
>  33 files changed, 477 insertions(+), 273 deletions(-)
> 
> -- 
> 2.1.0
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 64+ messages in thread

* Re: [PATCH v8 00/23] IB/Verbs: IB Management Helpers
@ 2015-05-11 23:49     ` ira.weiny
  0 siblings, 0 replies; 64+ messages in thread
From: ira.weiny @ 2015-05-11 23:49 UTC (permalink / raw)
  To: Michael Wang
  Cc: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma, linux-kernel, Tom Tucker, Steve Wise,
	Hoang-Nam Nguyen, Christoph Raisch, Mike Marciniszyn, Eli Cohen,
	Faisal Latif, Jack Morgenstein, Or Gerlitz, Haggai Eran,
	Tom Talpey, Jason Gunthorpe, Devesh Sharma, Liran Liss,
	Dave Goodell

I have run with this series and the only issue I have found is not with this
patch set directly.

This patch:

>   IB/Verbs: Use management helper rdma_cap_ib_mad()

causes an error when you actually use the port passed from the ib_umad module.
I have a patch to fix that which I found while trying to build on this series
for the use of a bit mask.

Doug, I don't know what you would like to do for this fix.  I am submitting it
shortly with a new version of the core capability bit patches.  If you want to
just add it after this series or force Michael to respin with the fix?  Frankly
I vote for the former because as it stands this series does not break directly.
It was only after I changed the implementation of rdma_cap_ib_mad that it
broke.


For the rest of the series.

Reviewed-by: Ira Weiny <ira.weiny@intel.com>
Tested-by: Ira Weiny <ira.weiny@intel.com>
	-- Limited to mlx4, qib, and OPA (with additional patches.)


On Tue, May 05, 2015 at 02:50:17PM +0200, Michael Wang wrote:
> Since v7:
>   * Thanks to Doug, Ira, Devesh for the testing :-)
>   * Thanks for the comments from or, Doug, Ira, Jason :-)
>     Please remind me if anything missed :-P
>   * Use rdma_cap_XX() instead of cap_XX() for readability
>   * Remove CC list in git log for maintainability
>   * Use bool as return value
>   * Updated github repository to v8
> 
> There are plenty of lengthy code to check the transport type of IB device,
> or the link layer type of it's port, but actually we are just speculating
> whether a particular management/feature is supported by the device/port.
> 
> Thus instead of inferring, we should have our own mechanism for IB management
> capability/protocol/feature checking, several proposals below.
> 
> This patch set will introduce query_protocol() to check management requirement
> instead of inferring from transport and link layer respectively, along with
> the new enum on protocol type.
> 
> Mapping List:
> 		node-type	link-layer	transport	protocol
> nes		RNIC		ETH		IWARP		IWARP
> amso1100	RNIC		ETH		IWARP		IWARP
> cxgb3   	RNIC		ETH		IWARP		IWARP
> cxgb4   	RNIC		ETH		IWARP		IWARP
> usnic   	USNIC_UDP	ETH		USNIC_UDP	USNIC_UDP
> ocrdma  	IB_CA		ETH		IB		IBOE
> mlx4    	IB_CA		IB/ETH		IB		IB/IBOE
> mlx5    	IB_CA		IB		IB		IB
> ehca    	IB_CA		IB		IB		IB
> ipath   	IB_CA		IB		IB		IB
> mthca   	IB_CA		IB		IB		IB
> qib     	IB_CA		IB		IB		IB
> 
> For example:
> 	if (transport == IB) && (link-layer == ETH)
> will now become:
> 	if (query_protocol() == IBOE)
> 
> Thus we will be able to get rid of the respective transport and link-layer
> checking, and it will help us to add new protocol/Technology (like OPA) more
> easier, also with the introduced management helpers, IB management logical
> will be more clear and easier for extending.
> 
> Highlights:
>     The long CC list in each patches was complained consider about the
>     maintainability, it was suggested folks to provide their reviewed-by or
>     Acked-by instead, so for those who used to be on the CC list, please
>     provide your signature voluntarily :-)
> 
>     The 'mgmt-helpers' branch of 'git@github.com:ywang-pb/infiniband-wy.git'
>     contain this series based on the latest 'infiniband/for-next'
> 
>     Patch 1#~14# included all the logical reform, 15#~23# introduced the
>     management helpers.
> 
>     Doug suggested the bitmask mechanism:
> 	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23765.html
>     which could be the plan for future reforming, we prefer that to be another
>     series which focus on semantic and performance.
> 
>     This patch-set is somewhat 'bloated' now and it may be a good timing for
>     staging, I'd like to suggest we focus on improving existed helpers and push
>     all the further reforms into next series ;-)
> 
> Proposals:
>     Sean:
> 	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23339.html
>     Doug:
> 	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23418.html
> 	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23765.html
>     Jason:
> 	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23425.html
> 
> Michael Wang (23):
>   IB/Verbs: Implement new callback query_protocol()
>   IB/Verbs: Implement raw management helpers
>   IB/Verbs: Reform IB-core mad/agent/user_mad
>   IB/Verbs: Reform IB-core cm
>   IB/Verbs: Reform IB-core sa_query
>   IB/Verbs: Reform IB-core multicast
>   IB/Verbs: Reform IB-ulp ipoib
>   IB/Verbs: Reform IB-ulp xprtrdma
>   IB/Verbs: Reform IB-core verbs
>   IB/Verbs: Reform cm related part in IB-core cma/ucm
>   IB/Verbs: Reform route related part in IB-core cma
>   IB/Verbs: Reform mcast related part in IB-core cma
>   IB/Verbs: Reform cma_acquire_dev()
>   IB/Verbs: Reform rest part in IB-core cma
>   IB/Verbs: Use management helper rdma_cap_ib_mad()
>   IB/Verbs: Use management helper rdma_cap_ib_smi()
>   IB/Verbs: Use management helper rdma_cap_ib_cm()
>   IB/Verbs: Use management helper rdma_cap_iw_cm()
>   IB/Verbs: Use management helper rdma_cap_ib_sa()
>   IB/Verbs: Use management helper rdma_cap_ib_mcast()
>   IB/Verbs: Use management helper rdma_cap_read_multi_sge()
>   IB/Verbs: Use management helper rdma_cap_af_ib()
>   IB/Verbs: Use management helper rdma_cap_eth_ah()
> 
>  drivers/infiniband/core/agent.c              |   2 +-
>  drivers/infiniband/core/cm.c                 |  20 ++-
>  drivers/infiniband/core/cma.c                | 257 +++++++++++----------------
>  drivers/infiniband/core/device.c             |   1 +
>  drivers/infiniband/core/mad.c                |  43 +++--
>  drivers/infiniband/core/multicast.c          |  12 +-
>  drivers/infiniband/core/sa_query.c           |  30 ++--
>  drivers/infiniband/core/ucm.c                |   3 +-
>  drivers/infiniband/core/ucma.c               |  25 +--
>  drivers/infiniband/core/user_mad.c           |  26 ++-
>  drivers/infiniband/core/verbs.c              |   6 +-
>  drivers/infiniband/hw/amso1100/c2_provider.c |   7 +
>  drivers/infiniband/hw/cxgb3/iwch_provider.c  |   7 +
>  drivers/infiniband/hw/cxgb4/provider.c       |   7 +
>  drivers/infiniband/hw/ehca/ehca_hca.c        |   6 +
>  drivers/infiniband/hw/ehca/ehca_iverbs.h     |   3 +
>  drivers/infiniband/hw/ehca/ehca_main.c       |   1 +
>  drivers/infiniband/hw/ipath/ipath_verbs.c    |   7 +
>  drivers/infiniband/hw/mlx4/main.c            |  10 ++
>  drivers/infiniband/hw/mlx5/main.c            |   7 +
>  drivers/infiniband/hw/mthca/mthca_provider.c |   7 +
>  drivers/infiniband/hw/nes/nes_verbs.c        |   6 +
>  drivers/infiniband/hw/ocrdma/ocrdma_main.c   |   1 +
>  drivers/infiniband/hw/ocrdma/ocrdma_verbs.c  |   6 +
>  drivers/infiniband/hw/ocrdma/ocrdma_verbs.h  |   3 +
>  drivers/infiniband/hw/qib/qib_verbs.c        |   7 +
>  drivers/infiniband/hw/usnic/usnic_ib_main.c  |   1 +
>  drivers/infiniband/hw/usnic/usnic_ib_verbs.c |   6 +
>  drivers/infiniband/hw/usnic/usnic_ib_verbs.h |   2 +
>  drivers/infiniband/ulp/ipoib/ipoib_main.c    |  15 +-
>  include/rdma/ib_verbs.h                      | 167 +++++++++++++++++
>  net/sunrpc/xprtrdma/svc_rdma_recvfrom.c      |   4 +-
>  net/sunrpc/xprtrdma/svc_rdma_transport.c     |  45 ++---
>  33 files changed, 477 insertions(+), 273 deletions(-)
> 
> -- 
> 2.1.0
> 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* Re: [PATCH v8 00/23] IB/Verbs: IB Management Helpers
  2015-05-11 23:49     ` ira.weiny
@ 2015-05-12  0:27         ` Doug Ledford
  -1 siblings, 0 replies; 64+ messages in thread
From: Doug Ledford @ 2015-05-12  0:27 UTC (permalink / raw)
  To: ira.weiny
  Cc: Michael Wang, Roland Dreier, Sean Hefty, Hal Rosenstock,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Tom Tucker, Steve Wise,
	Hoang-Nam Nguyen, Christoph Raisch, Mike Marciniszyn, Eli Cohen,
	Faisal Latif, Jack Morgenstein, Or Gerlitz, Haggai Eran,
	Tom Talpey, Jason Gunthorpe, Devesh Sharma, Liran Liss,
	Dave Goodell

[-- Attachment #1: Type: text/plain, Size: 8676 bytes --]

On Mon, 2015-05-11 at 19:49 -0400, ira.weiny wrote:
> I have run with this series and the only issue I have found is not with this
> patch set directly.
> 
> This patch:
> 
> >   IB/Verbs: Use management helper rdma_cap_ib_mad()
> 
> causes an error when you actually use the port passed from the ib_umad module.
> I have a patch to fix that which I found while trying to build on this series
> for the use of a bit mask.
> 
> Doug, I don't know what you would like to do for this fix.  I am submitting it
> shortly with a new version of the core capability bit patches.  If you want to
> just add it after this series or force Michael to respin with the fix?

As I recall, there was a comment from Or requesting to squash some of
the individual patches down, but I no longer have that email in my Inbox
to double check.  And it seemed like there was one other review comment
not yet addressed.  Do I have that right Michael?  And if so, are you
working on a v9?

>   Frankly
> I vote for the former because as it stands this series does not break directly.
> It was only after I changed the implementation of rdma_cap_ib_mad that it
> broke.
> 
> 
> For the rest of the series.
> 
> Reviewed-by: Ira Weiny <ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
> Tested-by: Ira Weiny <ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
> 	-- Limited to mlx4, qib, and OPA (with additional patches.)
> 
> 
> On Tue, May 05, 2015 at 02:50:17PM +0200, Michael Wang wrote:
> > Since v7:
> >   * Thanks to Doug, Ira, Devesh for the testing :-)
> >   * Thanks for the comments from or, Doug, Ira, Jason :-)
> >     Please remind me if anything missed :-P
> >   * Use rdma_cap_XX() instead of cap_XX() for readability
> >   * Remove CC list in git log for maintainability
> >   * Use bool as return value
> >   * Updated github repository to v8
> > 
> > There are plenty of lengthy code to check the transport type of IB device,
> > or the link layer type of it's port, but actually we are just speculating
> > whether a particular management/feature is supported by the device/port.
> > 
> > Thus instead of inferring, we should have our own mechanism for IB management
> > capability/protocol/feature checking, several proposals below.
> > 
> > This patch set will introduce query_protocol() to check management requirement
> > instead of inferring from transport and link layer respectively, along with
> > the new enum on protocol type.
> > 
> > Mapping List:
> > 		node-type	link-layer	transport	protocol
> > nes		RNIC		ETH		IWARP		IWARP
> > amso1100	RNIC		ETH		IWARP		IWARP
> > cxgb3   	RNIC		ETH		IWARP		IWARP
> > cxgb4   	RNIC		ETH		IWARP		IWARP
> > usnic   	USNIC_UDP	ETH		USNIC_UDP	USNIC_UDP
> > ocrdma  	IB_CA		ETH		IB		IBOE
> > mlx4    	IB_CA		IB/ETH		IB		IB/IBOE
> > mlx5    	IB_CA		IB		IB		IB
> > ehca    	IB_CA		IB		IB		IB
> > ipath   	IB_CA		IB		IB		IB
> > mthca   	IB_CA		IB		IB		IB
> > qib     	IB_CA		IB		IB		IB
> > 
> > For example:
> > 	if (transport == IB) && (link-layer == ETH)
> > will now become:
> > 	if (query_protocol() == IBOE)
> > 
> > Thus we will be able to get rid of the respective transport and link-layer
> > checking, and it will help us to add new protocol/Technology (like OPA) more
> > easier, also with the introduced management helpers, IB management logical
> > will be more clear and easier for extending.
> > 
> > Highlights:
> >     The long CC list in each patches was complained consider about the
> >     maintainability, it was suggested folks to provide their reviewed-by or
> >     Acked-by instead, so for those who used to be on the CC list, please
> >     provide your signature voluntarily :-)
> > 
> >     The 'mgmt-helpers' branch of 'git-9UaJU3cA/F/QT0dZR+AlfA@public.gmane.org:ywang-pb/infiniband-wy.git'
> >     contain this series based on the latest 'infiniband/for-next'
> > 
> >     Patch 1#~14# included all the logical reform, 15#~23# introduced the
> >     management helpers.
> > 
> >     Doug suggested the bitmask mechanism:
> > 	https://www.mail-archive.com/linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg23765.html
> >     which could be the plan for future reforming, we prefer that to be another
> >     series which focus on semantic and performance.
> > 
> >     This patch-set is somewhat 'bloated' now and it may be a good timing for
> >     staging, I'd like to suggest we focus on improving existed helpers and push
> >     all the further reforms into next series ;-)
> > 
> > Proposals:
> >     Sean:
> > 	https://www.mail-archive.com/linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg23339.html
> >     Doug:
> > 	https://www.mail-archive.com/linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg23418.html
> > 	https://www.mail-archive.com/linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg23765.html
> >     Jason:
> > 	https://www.mail-archive.com/linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg23425.html
> > 
> > Michael Wang (23):
> >   IB/Verbs: Implement new callback query_protocol()
> >   IB/Verbs: Implement raw management helpers
> >   IB/Verbs: Reform IB-core mad/agent/user_mad
> >   IB/Verbs: Reform IB-core cm
> >   IB/Verbs: Reform IB-core sa_query
> >   IB/Verbs: Reform IB-core multicast
> >   IB/Verbs: Reform IB-ulp ipoib
> >   IB/Verbs: Reform IB-ulp xprtrdma
> >   IB/Verbs: Reform IB-core verbs
> >   IB/Verbs: Reform cm related part in IB-core cma/ucm
> >   IB/Verbs: Reform route related part in IB-core cma
> >   IB/Verbs: Reform mcast related part in IB-core cma
> >   IB/Verbs: Reform cma_acquire_dev()
> >   IB/Verbs: Reform rest part in IB-core cma
> >   IB/Verbs: Use management helper rdma_cap_ib_mad()
> >   IB/Verbs: Use management helper rdma_cap_ib_smi()
> >   IB/Verbs: Use management helper rdma_cap_ib_cm()
> >   IB/Verbs: Use management helper rdma_cap_iw_cm()
> >   IB/Verbs: Use management helper rdma_cap_ib_sa()
> >   IB/Verbs: Use management helper rdma_cap_ib_mcast()
> >   IB/Verbs: Use management helper rdma_cap_read_multi_sge()
> >   IB/Verbs: Use management helper rdma_cap_af_ib()
> >   IB/Verbs: Use management helper rdma_cap_eth_ah()
> > 
> >  drivers/infiniband/core/agent.c              |   2 +-
> >  drivers/infiniband/core/cm.c                 |  20 ++-
> >  drivers/infiniband/core/cma.c                | 257 +++++++++++----------------
> >  drivers/infiniband/core/device.c             |   1 +
> >  drivers/infiniband/core/mad.c                |  43 +++--
> >  drivers/infiniband/core/multicast.c          |  12 +-
> >  drivers/infiniband/core/sa_query.c           |  30 ++--
> >  drivers/infiniband/core/ucm.c                |   3 +-
> >  drivers/infiniband/core/ucma.c               |  25 +--
> >  drivers/infiniband/core/user_mad.c           |  26 ++-
> >  drivers/infiniband/core/verbs.c              |   6 +-
> >  drivers/infiniband/hw/amso1100/c2_provider.c |   7 +
> >  drivers/infiniband/hw/cxgb3/iwch_provider.c  |   7 +
> >  drivers/infiniband/hw/cxgb4/provider.c       |   7 +
> >  drivers/infiniband/hw/ehca/ehca_hca.c        |   6 +
> >  drivers/infiniband/hw/ehca/ehca_iverbs.h     |   3 +
> >  drivers/infiniband/hw/ehca/ehca_main.c       |   1 +
> >  drivers/infiniband/hw/ipath/ipath_verbs.c    |   7 +
> >  drivers/infiniband/hw/mlx4/main.c            |  10 ++
> >  drivers/infiniband/hw/mlx5/main.c            |   7 +
> >  drivers/infiniband/hw/mthca/mthca_provider.c |   7 +
> >  drivers/infiniband/hw/nes/nes_verbs.c        |   6 +
> >  drivers/infiniband/hw/ocrdma/ocrdma_main.c   |   1 +
> >  drivers/infiniband/hw/ocrdma/ocrdma_verbs.c  |   6 +
> >  drivers/infiniband/hw/ocrdma/ocrdma_verbs.h  |   3 +
> >  drivers/infiniband/hw/qib/qib_verbs.c        |   7 +
> >  drivers/infiniband/hw/usnic/usnic_ib_main.c  |   1 +
> >  drivers/infiniband/hw/usnic/usnic_ib_verbs.c |   6 +
> >  drivers/infiniband/hw/usnic/usnic_ib_verbs.h |   2 +
> >  drivers/infiniband/ulp/ipoib/ipoib_main.c    |  15 +-
> >  include/rdma/ib_verbs.h                      | 167 +++++++++++++++++
> >  net/sunrpc/xprtrdma/svc_rdma_recvfrom.c      |   4 +-
> >  net/sunrpc/xprtrdma/svc_rdma_transport.c     |  45 ++---
> >  33 files changed, 477 insertions(+), 273 deletions(-)
> > 
> > -- 
> > 2.1.0
> > 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
> the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


-- 
Doug Ledford <dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
              GPG KeyID: 0E572FDD


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 64+ messages in thread

* Re: [PATCH v8 00/23] IB/Verbs: IB Management Helpers
@ 2015-05-12  0:27         ` Doug Ledford
  0 siblings, 0 replies; 64+ messages in thread
From: Doug Ledford @ 2015-05-12  0:27 UTC (permalink / raw)
  To: ira.weiny
  Cc: Michael Wang, Roland Dreier, Sean Hefty, Hal Rosenstock,
	linux-rdma, linux-kernel, Tom Tucker, Steve Wise,
	Hoang-Nam Nguyen, Christoph Raisch, Mike Marciniszyn, Eli Cohen,
	Faisal Latif, Jack Morgenstein, Or Gerlitz, Haggai Eran,
	Tom Talpey, Jason Gunthorpe, Devesh Sharma, Liran Liss,
	Dave Goodell

[-- Attachment #1: Type: text/plain, Size: 8414 bytes --]

On Mon, 2015-05-11 at 19:49 -0400, ira.weiny wrote:
> I have run with this series and the only issue I have found is not with this
> patch set directly.
> 
> This patch:
> 
> >   IB/Verbs: Use management helper rdma_cap_ib_mad()
> 
> causes an error when you actually use the port passed from the ib_umad module.
> I have a patch to fix that which I found while trying to build on this series
> for the use of a bit mask.
> 
> Doug, I don't know what you would like to do for this fix.  I am submitting it
> shortly with a new version of the core capability bit patches.  If you want to
> just add it after this series or force Michael to respin with the fix?

As I recall, there was a comment from Or requesting to squash some of
the individual patches down, but I no longer have that email in my Inbox
to double check.  And it seemed like there was one other review comment
not yet addressed.  Do I have that right Michael?  And if so, are you
working on a v9?

>   Frankly
> I vote for the former because as it stands this series does not break directly.
> It was only after I changed the implementation of rdma_cap_ib_mad that it
> broke.
> 
> 
> For the rest of the series.
> 
> Reviewed-by: Ira Weiny <ira.weiny@intel.com>
> Tested-by: Ira Weiny <ira.weiny@intel.com>
> 	-- Limited to mlx4, qib, and OPA (with additional patches.)
> 
> 
> On Tue, May 05, 2015 at 02:50:17PM +0200, Michael Wang wrote:
> > Since v7:
> >   * Thanks to Doug, Ira, Devesh for the testing :-)
> >   * Thanks for the comments from or, Doug, Ira, Jason :-)
> >     Please remind me if anything missed :-P
> >   * Use rdma_cap_XX() instead of cap_XX() for readability
> >   * Remove CC list in git log for maintainability
> >   * Use bool as return value
> >   * Updated github repository to v8
> > 
> > There are plenty of lengthy code to check the transport type of IB device,
> > or the link layer type of it's port, but actually we are just speculating
> > whether a particular management/feature is supported by the device/port.
> > 
> > Thus instead of inferring, we should have our own mechanism for IB management
> > capability/protocol/feature checking, several proposals below.
> > 
> > This patch set will introduce query_protocol() to check management requirement
> > instead of inferring from transport and link layer respectively, along with
> > the new enum on protocol type.
> > 
> > Mapping List:
> > 		node-type	link-layer	transport	protocol
> > nes		RNIC		ETH		IWARP		IWARP
> > amso1100	RNIC		ETH		IWARP		IWARP
> > cxgb3   	RNIC		ETH		IWARP		IWARP
> > cxgb4   	RNIC		ETH		IWARP		IWARP
> > usnic   	USNIC_UDP	ETH		USNIC_UDP	USNIC_UDP
> > ocrdma  	IB_CA		ETH		IB		IBOE
> > mlx4    	IB_CA		IB/ETH		IB		IB/IBOE
> > mlx5    	IB_CA		IB		IB		IB
> > ehca    	IB_CA		IB		IB		IB
> > ipath   	IB_CA		IB		IB		IB
> > mthca   	IB_CA		IB		IB		IB
> > qib     	IB_CA		IB		IB		IB
> > 
> > For example:
> > 	if (transport == IB) && (link-layer == ETH)
> > will now become:
> > 	if (query_protocol() == IBOE)
> > 
> > Thus we will be able to get rid of the respective transport and link-layer
> > checking, and it will help us to add new protocol/Technology (like OPA) more
> > easier, also with the introduced management helpers, IB management logical
> > will be more clear and easier for extending.
> > 
> > Highlights:
> >     The long CC list in each patches was complained consider about the
> >     maintainability, it was suggested folks to provide their reviewed-by or
> >     Acked-by instead, so for those who used to be on the CC list, please
> >     provide your signature voluntarily :-)
> > 
> >     The 'mgmt-helpers' branch of 'git@github.com:ywang-pb/infiniband-wy.git'
> >     contain this series based on the latest 'infiniband/for-next'
> > 
> >     Patch 1#~14# included all the logical reform, 15#~23# introduced the
> >     management helpers.
> > 
> >     Doug suggested the bitmask mechanism:
> > 	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23765.html
> >     which could be the plan for future reforming, we prefer that to be another
> >     series which focus on semantic and performance.
> > 
> >     This patch-set is somewhat 'bloated' now and it may be a good timing for
> >     staging, I'd like to suggest we focus on improving existed helpers and push
> >     all the further reforms into next series ;-)
> > 
> > Proposals:
> >     Sean:
> > 	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23339.html
> >     Doug:
> > 	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23418.html
> > 	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23765.html
> >     Jason:
> > 	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23425.html
> > 
> > Michael Wang (23):
> >   IB/Verbs: Implement new callback query_protocol()
> >   IB/Verbs: Implement raw management helpers
> >   IB/Verbs: Reform IB-core mad/agent/user_mad
> >   IB/Verbs: Reform IB-core cm
> >   IB/Verbs: Reform IB-core sa_query
> >   IB/Verbs: Reform IB-core multicast
> >   IB/Verbs: Reform IB-ulp ipoib
> >   IB/Verbs: Reform IB-ulp xprtrdma
> >   IB/Verbs: Reform IB-core verbs
> >   IB/Verbs: Reform cm related part in IB-core cma/ucm
> >   IB/Verbs: Reform route related part in IB-core cma
> >   IB/Verbs: Reform mcast related part in IB-core cma
> >   IB/Verbs: Reform cma_acquire_dev()
> >   IB/Verbs: Reform rest part in IB-core cma
> >   IB/Verbs: Use management helper rdma_cap_ib_mad()
> >   IB/Verbs: Use management helper rdma_cap_ib_smi()
> >   IB/Verbs: Use management helper rdma_cap_ib_cm()
> >   IB/Verbs: Use management helper rdma_cap_iw_cm()
> >   IB/Verbs: Use management helper rdma_cap_ib_sa()
> >   IB/Verbs: Use management helper rdma_cap_ib_mcast()
> >   IB/Verbs: Use management helper rdma_cap_read_multi_sge()
> >   IB/Verbs: Use management helper rdma_cap_af_ib()
> >   IB/Verbs: Use management helper rdma_cap_eth_ah()
> > 
> >  drivers/infiniband/core/agent.c              |   2 +-
> >  drivers/infiniband/core/cm.c                 |  20 ++-
> >  drivers/infiniband/core/cma.c                | 257 +++++++++++----------------
> >  drivers/infiniband/core/device.c             |   1 +
> >  drivers/infiniband/core/mad.c                |  43 +++--
> >  drivers/infiniband/core/multicast.c          |  12 +-
> >  drivers/infiniband/core/sa_query.c           |  30 ++--
> >  drivers/infiniband/core/ucm.c                |   3 +-
> >  drivers/infiniband/core/ucma.c               |  25 +--
> >  drivers/infiniband/core/user_mad.c           |  26 ++-
> >  drivers/infiniband/core/verbs.c              |   6 +-
> >  drivers/infiniband/hw/amso1100/c2_provider.c |   7 +
> >  drivers/infiniband/hw/cxgb3/iwch_provider.c  |   7 +
> >  drivers/infiniband/hw/cxgb4/provider.c       |   7 +
> >  drivers/infiniband/hw/ehca/ehca_hca.c        |   6 +
> >  drivers/infiniband/hw/ehca/ehca_iverbs.h     |   3 +
> >  drivers/infiniband/hw/ehca/ehca_main.c       |   1 +
> >  drivers/infiniband/hw/ipath/ipath_verbs.c    |   7 +
> >  drivers/infiniband/hw/mlx4/main.c            |  10 ++
> >  drivers/infiniband/hw/mlx5/main.c            |   7 +
> >  drivers/infiniband/hw/mthca/mthca_provider.c |   7 +
> >  drivers/infiniband/hw/nes/nes_verbs.c        |   6 +
> >  drivers/infiniband/hw/ocrdma/ocrdma_main.c   |   1 +
> >  drivers/infiniband/hw/ocrdma/ocrdma_verbs.c  |   6 +
> >  drivers/infiniband/hw/ocrdma/ocrdma_verbs.h  |   3 +
> >  drivers/infiniband/hw/qib/qib_verbs.c        |   7 +
> >  drivers/infiniband/hw/usnic/usnic_ib_main.c  |   1 +
> >  drivers/infiniband/hw/usnic/usnic_ib_verbs.c |   6 +
> >  drivers/infiniband/hw/usnic/usnic_ib_verbs.h |   2 +
> >  drivers/infiniband/ulp/ipoib/ipoib_main.c    |  15 +-
> >  include/rdma/ib_verbs.h                      | 167 +++++++++++++++++
> >  net/sunrpc/xprtrdma/svc_rdma_recvfrom.c      |   4 +-
> >  net/sunrpc/xprtrdma/svc_rdma_transport.c     |  45 ++---
> >  33 files changed, 477 insertions(+), 273 deletions(-)
> > 
> > -- 
> > 2.1.0
> > 
> --
> 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


-- 
Doug Ledford <dledford@redhat.com>
              GPG KeyID: 0E572FDD


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 64+ messages in thread

* Re: [PATCH v8 00/23] IB/Verbs: IB Management Helpers
  2015-05-12  0:27         ` Doug Ledford
@ 2015-05-12  7:57             ` Michael Wang
  -1 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-12  7:57 UTC (permalink / raw)
  To: Doug Ledford, ira.weiny
  Cc: Roland Dreier, Sean Hefty, Hal Rosenstock,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Tom Tucker, Steve Wise,
	Hoang-Nam Nguyen, Christoph Raisch, Mike Marciniszyn, Eli Cohen,
	Faisal Latif, Jack Morgenstein, Or Gerlitz, Haggai Eran,
	Tom Talpey, Jason Gunthorpe, Devesh Sharma, Liran Liss,
	Dave Goodell



On 05/12/2015 02:27 AM, Doug Ledford wrote:
> On Mon, 2015-05-11 at 19:49 -0400, ira.weiny wrote:
>> I have run with this series and the only issue I have found is not with this
>> patch set directly.
>>
>> This patch:
>>
>>>   IB/Verbs: Use management helper rdma_cap_ib_mad()
>>
>> causes an error when you actually use the port passed from the ib_umad module.
>> I have a patch to fix that which I found while trying to build on this series
>> for the use of a bit mask.
>>
>> Doug, I don't know what you would like to do for this fix.  I am submitting it
>> shortly with a new version of the core capability bit patches.  If you want to
>> just add it after this series or force Michael to respin with the fix?
> 
> As I recall, there was a comment from Or requesting to squash some of
> the individual patches down, but I no longer have that email in my Inbox
> to double check.  And it seemed like there was one other review comment
> not yet addressed.  Do I have that right Michael?  And if so, are you
> working on a v9?

AFAIK Or was asking to merge the #15~23, and want to reserve the changelog
meanwhile reply the cover of prev version (I'm still confused on that...),
I've replied but get no respond yet.

I can make a v9 to merge the #15~#23 if that could benefit the maintainability,
please let me know your opinion :-)

About the Bug, if it was not introduced in this series, maybe including the
fix in next series would be better?

Regards,
Michael Wang

> 
>>   Frankly
>> I vote for the former because as it stands this series does not break directly.
>> It was only after I changed the implementation of rdma_cap_ib_mad that it
>> broke.
>>
>>
>> For the rest of the series.
>>
>> Reviewed-by: Ira Weiny <ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
>> Tested-by: Ira Weiny <ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
>> 	-- Limited to mlx4, qib, and OPA (with additional patches.)
>>
>>
>> On Tue, May 05, 2015 at 02:50:17PM +0200, Michael Wang wrote:
>>> Since v7:
>>>   * Thanks to Doug, Ira, Devesh for the testing :-)
>>>   * Thanks for the comments from or, Doug, Ira, Jason :-)
>>>     Please remind me if anything missed :-P
>>>   * Use rdma_cap_XX() instead of cap_XX() for readability
>>>   * Remove CC list in git log for maintainability
>>>   * Use bool as return value
>>>   * Updated github repository to v8
>>>
>>> There are plenty of lengthy code to check the transport type of IB device,
>>> or the link layer type of it's port, but actually we are just speculating
>>> whether a particular management/feature is supported by the device/port.
>>>
>>> Thus instead of inferring, we should have our own mechanism for IB management
>>> capability/protocol/feature checking, several proposals below.
>>>
>>> This patch set will introduce query_protocol() to check management requirement
>>> instead of inferring from transport and link layer respectively, along with
>>> the new enum on protocol type.
>>>
>>> Mapping List:
>>> 		node-type	link-layer	transport	protocol
>>> nes		RNIC		ETH		IWARP		IWARP
>>> amso1100	RNIC		ETH		IWARP		IWARP
>>> cxgb3   	RNIC		ETH		IWARP		IWARP
>>> cxgb4   	RNIC		ETH		IWARP		IWARP
>>> usnic   	USNIC_UDP	ETH		USNIC_UDP	USNIC_UDP
>>> ocrdma  	IB_CA		ETH		IB		IBOE
>>> mlx4    	IB_CA		IB/ETH		IB		IB/IBOE
>>> mlx5    	IB_CA		IB		IB		IB
>>> ehca    	IB_CA		IB		IB		IB
>>> ipath   	IB_CA		IB		IB		IB
>>> mthca   	IB_CA		IB		IB		IB
>>> qib     	IB_CA		IB		IB		IB
>>>
>>> For example:
>>> 	if (transport == IB) && (link-layer == ETH)
>>> will now become:
>>> 	if (query_protocol() == IBOE)
>>>
>>> Thus we will be able to get rid of the respective transport and link-layer
>>> checking, and it will help us to add new protocol/Technology (like OPA) more
>>> easier, also with the introduced management helpers, IB management logical
>>> will be more clear and easier for extending.
>>>
>>> Highlights:
>>>     The long CC list in each patches was complained consider about the
>>>     maintainability, it was suggested folks to provide their reviewed-by or
>>>     Acked-by instead, so for those who used to be on the CC list, please
>>>     provide your signature voluntarily :-)
>>>
>>>     The 'mgmt-helpers' branch of 'git-9UaJU3cA/F/QT0dZR+AlfA@public.gmane.org:ywang-pb/infiniband-wy.git'
>>>     contain this series based on the latest 'infiniband/for-next'
>>>
>>>     Patch 1#~14# included all the logical reform, 15#~23# introduced the
>>>     management helpers.
>>>
>>>     Doug suggested the bitmask mechanism:
>>> 	https://www.mail-archive.com/linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg23765.html
>>>     which could be the plan for future reforming, we prefer that to be another
>>>     series which focus on semantic and performance.
>>>
>>>     This patch-set is somewhat 'bloated' now and it may be a good timing for
>>>     staging, I'd like to suggest we focus on improving existed helpers and push
>>>     all the further reforms into next series ;-)
>>>
>>> Proposals:
>>>     Sean:
>>> 	https://www.mail-archive.com/linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg23339.html
>>>     Doug:
>>> 	https://www.mail-archive.com/linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg23418.html
>>> 	https://www.mail-archive.com/linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg23765.html
>>>     Jason:
>>> 	https://www.mail-archive.com/linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg23425.html
>>>
>>> Michael Wang (23):
>>>   IB/Verbs: Implement new callback query_protocol()
>>>   IB/Verbs: Implement raw management helpers
>>>   IB/Verbs: Reform IB-core mad/agent/user_mad
>>>   IB/Verbs: Reform IB-core cm
>>>   IB/Verbs: Reform IB-core sa_query
>>>   IB/Verbs: Reform IB-core multicast
>>>   IB/Verbs: Reform IB-ulp ipoib
>>>   IB/Verbs: Reform IB-ulp xprtrdma
>>>   IB/Verbs: Reform IB-core verbs
>>>   IB/Verbs: Reform cm related part in IB-core cma/ucm
>>>   IB/Verbs: Reform route related part in IB-core cma
>>>   IB/Verbs: Reform mcast related part in IB-core cma
>>>   IB/Verbs: Reform cma_acquire_dev()
>>>   IB/Verbs: Reform rest part in IB-core cma
>>>   IB/Verbs: Use management helper rdma_cap_ib_mad()
>>>   IB/Verbs: Use management helper rdma_cap_ib_smi()
>>>   IB/Verbs: Use management helper rdma_cap_ib_cm()
>>>   IB/Verbs: Use management helper rdma_cap_iw_cm()
>>>   IB/Verbs: Use management helper rdma_cap_ib_sa()
>>>   IB/Verbs: Use management helper rdma_cap_ib_mcast()
>>>   IB/Verbs: Use management helper rdma_cap_read_multi_sge()
>>>   IB/Verbs: Use management helper rdma_cap_af_ib()
>>>   IB/Verbs: Use management helper rdma_cap_eth_ah()
>>>
>>>  drivers/infiniband/core/agent.c              |   2 +-
>>>  drivers/infiniband/core/cm.c                 |  20 ++-
>>>  drivers/infiniband/core/cma.c                | 257 +++++++++++----------------
>>>  drivers/infiniband/core/device.c             |   1 +
>>>  drivers/infiniband/core/mad.c                |  43 +++--
>>>  drivers/infiniband/core/multicast.c          |  12 +-
>>>  drivers/infiniband/core/sa_query.c           |  30 ++--
>>>  drivers/infiniband/core/ucm.c                |   3 +-
>>>  drivers/infiniband/core/ucma.c               |  25 +--
>>>  drivers/infiniband/core/user_mad.c           |  26 ++-
>>>  drivers/infiniband/core/verbs.c              |   6 +-
>>>  drivers/infiniband/hw/amso1100/c2_provider.c |   7 +
>>>  drivers/infiniband/hw/cxgb3/iwch_provider.c  |   7 +
>>>  drivers/infiniband/hw/cxgb4/provider.c       |   7 +
>>>  drivers/infiniband/hw/ehca/ehca_hca.c        |   6 +
>>>  drivers/infiniband/hw/ehca/ehca_iverbs.h     |   3 +
>>>  drivers/infiniband/hw/ehca/ehca_main.c       |   1 +
>>>  drivers/infiniband/hw/ipath/ipath_verbs.c    |   7 +
>>>  drivers/infiniband/hw/mlx4/main.c            |  10 ++
>>>  drivers/infiniband/hw/mlx5/main.c            |   7 +
>>>  drivers/infiniband/hw/mthca/mthca_provider.c |   7 +
>>>  drivers/infiniband/hw/nes/nes_verbs.c        |   6 +
>>>  drivers/infiniband/hw/ocrdma/ocrdma_main.c   |   1 +
>>>  drivers/infiniband/hw/ocrdma/ocrdma_verbs.c  |   6 +
>>>  drivers/infiniband/hw/ocrdma/ocrdma_verbs.h  |   3 +
>>>  drivers/infiniband/hw/qib/qib_verbs.c        |   7 +
>>>  drivers/infiniband/hw/usnic/usnic_ib_main.c  |   1 +
>>>  drivers/infiniband/hw/usnic/usnic_ib_verbs.c |   6 +
>>>  drivers/infiniband/hw/usnic/usnic_ib_verbs.h |   2 +
>>>  drivers/infiniband/ulp/ipoib/ipoib_main.c    |  15 +-
>>>  include/rdma/ib_verbs.h                      | 167 +++++++++++++++++
>>>  net/sunrpc/xprtrdma/svc_rdma_recvfrom.c      |   4 +-
>>>  net/sunrpc/xprtrdma/svc_rdma_transport.c     |  45 ++---
>>>  33 files changed, 477 insertions(+), 273 deletions(-)
>>>
>>> -- 
>>> 2.1.0
>>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
>> the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 64+ messages in thread

* Re: [PATCH v8 00/23] IB/Verbs: IB Management Helpers
@ 2015-05-12  7:57             ` Michael Wang
  0 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-12  7:57 UTC (permalink / raw)
  To: Doug Ledford, ira.weiny
  Cc: Roland Dreier, Sean Hefty, Hal Rosenstock, linux-rdma,
	linux-kernel, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell



On 05/12/2015 02:27 AM, Doug Ledford wrote:
> On Mon, 2015-05-11 at 19:49 -0400, ira.weiny wrote:
>> I have run with this series and the only issue I have found is not with this
>> patch set directly.
>>
>> This patch:
>>
>>>   IB/Verbs: Use management helper rdma_cap_ib_mad()
>>
>> causes an error when you actually use the port passed from the ib_umad module.
>> I have a patch to fix that which I found while trying to build on this series
>> for the use of a bit mask.
>>
>> Doug, I don't know what you would like to do for this fix.  I am submitting it
>> shortly with a new version of the core capability bit patches.  If you want to
>> just add it after this series or force Michael to respin with the fix?
> 
> As I recall, there was a comment from Or requesting to squash some of
> the individual patches down, but I no longer have that email in my Inbox
> to double check.  And it seemed like there was one other review comment
> not yet addressed.  Do I have that right Michael?  And if so, are you
> working on a v9?

AFAIK Or was asking to merge the #15~23, and want to reserve the changelog
meanwhile reply the cover of prev version (I'm still confused on that...),
I've replied but get no respond yet.

I can make a v9 to merge the #15~#23 if that could benefit the maintainability,
please let me know your opinion :-)

About the Bug, if it was not introduced in this series, maybe including the
fix in next series would be better?

Regards,
Michael Wang

> 
>>   Frankly
>> I vote for the former because as it stands this series does not break directly.
>> It was only after I changed the implementation of rdma_cap_ib_mad that it
>> broke.
>>
>>
>> For the rest of the series.
>>
>> Reviewed-by: Ira Weiny <ira.weiny@intel.com>
>> Tested-by: Ira Weiny <ira.weiny@intel.com>
>> 	-- Limited to mlx4, qib, and OPA (with additional patches.)
>>
>>
>> On Tue, May 05, 2015 at 02:50:17PM +0200, Michael Wang wrote:
>>> Since v7:
>>>   * Thanks to Doug, Ira, Devesh for the testing :-)
>>>   * Thanks for the comments from or, Doug, Ira, Jason :-)
>>>     Please remind me if anything missed :-P
>>>   * Use rdma_cap_XX() instead of cap_XX() for readability
>>>   * Remove CC list in git log for maintainability
>>>   * Use bool as return value
>>>   * Updated github repository to v8
>>>
>>> There are plenty of lengthy code to check the transport type of IB device,
>>> or the link layer type of it's port, but actually we are just speculating
>>> whether a particular management/feature is supported by the device/port.
>>>
>>> Thus instead of inferring, we should have our own mechanism for IB management
>>> capability/protocol/feature checking, several proposals below.
>>>
>>> This patch set will introduce query_protocol() to check management requirement
>>> instead of inferring from transport and link layer respectively, along with
>>> the new enum on protocol type.
>>>
>>> Mapping List:
>>> 		node-type	link-layer	transport	protocol
>>> nes		RNIC		ETH		IWARP		IWARP
>>> amso1100	RNIC		ETH		IWARP		IWARP
>>> cxgb3   	RNIC		ETH		IWARP		IWARP
>>> cxgb4   	RNIC		ETH		IWARP		IWARP
>>> usnic   	USNIC_UDP	ETH		USNIC_UDP	USNIC_UDP
>>> ocrdma  	IB_CA		ETH		IB		IBOE
>>> mlx4    	IB_CA		IB/ETH		IB		IB/IBOE
>>> mlx5    	IB_CA		IB		IB		IB
>>> ehca    	IB_CA		IB		IB		IB
>>> ipath   	IB_CA		IB		IB		IB
>>> mthca   	IB_CA		IB		IB		IB
>>> qib     	IB_CA		IB		IB		IB
>>>
>>> For example:
>>> 	if (transport == IB) && (link-layer == ETH)
>>> will now become:
>>> 	if (query_protocol() == IBOE)
>>>
>>> Thus we will be able to get rid of the respective transport and link-layer
>>> checking, and it will help us to add new protocol/Technology (like OPA) more
>>> easier, also with the introduced management helpers, IB management logical
>>> will be more clear and easier for extending.
>>>
>>> Highlights:
>>>     The long CC list in each patches was complained consider about the
>>>     maintainability, it was suggested folks to provide their reviewed-by or
>>>     Acked-by instead, so for those who used to be on the CC list, please
>>>     provide your signature voluntarily :-)
>>>
>>>     The 'mgmt-helpers' branch of 'git@github.com:ywang-pb/infiniband-wy.git'
>>>     contain this series based on the latest 'infiniband/for-next'
>>>
>>>     Patch 1#~14# included all the logical reform, 15#~23# introduced the
>>>     management helpers.
>>>
>>>     Doug suggested the bitmask mechanism:
>>> 	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23765.html
>>>     which could be the plan for future reforming, we prefer that to be another
>>>     series which focus on semantic and performance.
>>>
>>>     This patch-set is somewhat 'bloated' now and it may be a good timing for
>>>     staging, I'd like to suggest we focus on improving existed helpers and push
>>>     all the further reforms into next series ;-)
>>>
>>> Proposals:
>>>     Sean:
>>> 	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23339.html
>>>     Doug:
>>> 	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23418.html
>>> 	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23765.html
>>>     Jason:
>>> 	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23425.html
>>>
>>> Michael Wang (23):
>>>   IB/Verbs: Implement new callback query_protocol()
>>>   IB/Verbs: Implement raw management helpers
>>>   IB/Verbs: Reform IB-core mad/agent/user_mad
>>>   IB/Verbs: Reform IB-core cm
>>>   IB/Verbs: Reform IB-core sa_query
>>>   IB/Verbs: Reform IB-core multicast
>>>   IB/Verbs: Reform IB-ulp ipoib
>>>   IB/Verbs: Reform IB-ulp xprtrdma
>>>   IB/Verbs: Reform IB-core verbs
>>>   IB/Verbs: Reform cm related part in IB-core cma/ucm
>>>   IB/Verbs: Reform route related part in IB-core cma
>>>   IB/Verbs: Reform mcast related part in IB-core cma
>>>   IB/Verbs: Reform cma_acquire_dev()
>>>   IB/Verbs: Reform rest part in IB-core cma
>>>   IB/Verbs: Use management helper rdma_cap_ib_mad()
>>>   IB/Verbs: Use management helper rdma_cap_ib_smi()
>>>   IB/Verbs: Use management helper rdma_cap_ib_cm()
>>>   IB/Verbs: Use management helper rdma_cap_iw_cm()
>>>   IB/Verbs: Use management helper rdma_cap_ib_sa()
>>>   IB/Verbs: Use management helper rdma_cap_ib_mcast()
>>>   IB/Verbs: Use management helper rdma_cap_read_multi_sge()
>>>   IB/Verbs: Use management helper rdma_cap_af_ib()
>>>   IB/Verbs: Use management helper rdma_cap_eth_ah()
>>>
>>>  drivers/infiniband/core/agent.c              |   2 +-
>>>  drivers/infiniband/core/cm.c                 |  20 ++-
>>>  drivers/infiniband/core/cma.c                | 257 +++++++++++----------------
>>>  drivers/infiniband/core/device.c             |   1 +
>>>  drivers/infiniband/core/mad.c                |  43 +++--
>>>  drivers/infiniband/core/multicast.c          |  12 +-
>>>  drivers/infiniband/core/sa_query.c           |  30 ++--
>>>  drivers/infiniband/core/ucm.c                |   3 +-
>>>  drivers/infiniband/core/ucma.c               |  25 +--
>>>  drivers/infiniband/core/user_mad.c           |  26 ++-
>>>  drivers/infiniband/core/verbs.c              |   6 +-
>>>  drivers/infiniband/hw/amso1100/c2_provider.c |   7 +
>>>  drivers/infiniband/hw/cxgb3/iwch_provider.c  |   7 +
>>>  drivers/infiniband/hw/cxgb4/provider.c       |   7 +
>>>  drivers/infiniband/hw/ehca/ehca_hca.c        |   6 +
>>>  drivers/infiniband/hw/ehca/ehca_iverbs.h     |   3 +
>>>  drivers/infiniband/hw/ehca/ehca_main.c       |   1 +
>>>  drivers/infiniband/hw/ipath/ipath_verbs.c    |   7 +
>>>  drivers/infiniband/hw/mlx4/main.c            |  10 ++
>>>  drivers/infiniband/hw/mlx5/main.c            |   7 +
>>>  drivers/infiniband/hw/mthca/mthca_provider.c |   7 +
>>>  drivers/infiniband/hw/nes/nes_verbs.c        |   6 +
>>>  drivers/infiniband/hw/ocrdma/ocrdma_main.c   |   1 +
>>>  drivers/infiniband/hw/ocrdma/ocrdma_verbs.c  |   6 +
>>>  drivers/infiniband/hw/ocrdma/ocrdma_verbs.h  |   3 +
>>>  drivers/infiniband/hw/qib/qib_verbs.c        |   7 +
>>>  drivers/infiniband/hw/usnic/usnic_ib_main.c  |   1 +
>>>  drivers/infiniband/hw/usnic/usnic_ib_verbs.c |   6 +
>>>  drivers/infiniband/hw/usnic/usnic_ib_verbs.h |   2 +
>>>  drivers/infiniband/ulp/ipoib/ipoib_main.c    |  15 +-
>>>  include/rdma/ib_verbs.h                      | 167 +++++++++++++++++
>>>  net/sunrpc/xprtrdma/svc_rdma_recvfrom.c      |   4 +-
>>>  net/sunrpc/xprtrdma/svc_rdma_transport.c     |  45 ++---
>>>  33 files changed, 477 insertions(+), 273 deletions(-)
>>>
>>> -- 
>>> 2.1.0
>>>
>> --
>> 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
> 
> 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* Re: [PATCH v8 00/23] IB/Verbs: IB Management Helpers
  2015-05-11 23:49     ` ira.weiny
  (?)
  (?)
@ 2015-05-12  8:04     ` Michael Wang
  -1 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-12  8:04 UTC (permalink / raw)
  To: ira.weiny
  Cc: Roland Dreier, Sean Hefty, Hal Rosenstock, Doug Ledford,
	linux-rdma, linux-kernel, Tom Tucker, Steve Wise,
	Hoang-Nam Nguyen, Christoph Raisch, Mike Marciniszyn, Eli Cohen,
	Faisal Latif, Jack Morgenstein, Or Gerlitz, Haggai Eran,
	Tom Talpey, Jason Gunthorpe, Devesh Sharma, Liran Liss,
	Dave Goodell

On 05/12/2015 01:49 AM, ira.weiny wrote:
> I have run with this series and the only issue I have found is not with this
> patch set directly.
> 
> This patch:
> 
>>   IB/Verbs: Use management helper rdma_cap_ib_mad()
> 
> causes an error when you actually use the port passed from the ib_umad module.
> I have a patch to fix that which I found while trying to build on this series
> for the use of a bit mask.
> 
> Doug, I don't know what you would like to do for this fix.  I am submitting it
> shortly with a new version of the core capability bit patches.  If you want to
> just add it after this series or force Michael to respin with the fix?  Frankly
> I vote for the former because as it stands this series does not break directly.
> It was only after I changed the implementation of rdma_cap_ib_mad that it
> broke.

Agree, it sounds more reasonable to include the fix in the series introduced
it :-P

> 
> 
> For the rest of the series.
> 
> Reviewed-by: Ira Weiny <ira.weiny@intel.com>
> Tested-by: Ira Weiny <ira.weiny@intel.com>
> 	-- Limited to mlx4, qib, and OPA (with additional patches.)

Thanks for the review and testing :-)

Regards,
Michael Wang

> 
> 
> On Tue, May 05, 2015 at 02:50:17PM +0200, Michael Wang wrote:
>> Since v7:
>>   * Thanks to Doug, Ira, Devesh for the testing :-)
>>   * Thanks for the comments from or, Doug, Ira, Jason :-)
>>     Please remind me if anything missed :-P
>>   * Use rdma_cap_XX() instead of cap_XX() for readability
>>   * Remove CC list in git log for maintainability
>>   * Use bool as return value
>>   * Updated github repository to v8
>>
>> There are plenty of lengthy code to check the transport type of IB device,
>> or the link layer type of it's port, but actually we are just speculating
>> whether a particular management/feature is supported by the device/port.
>>
>> Thus instead of inferring, we should have our own mechanism for IB management
>> capability/protocol/feature checking, several proposals below.
>>
>> This patch set will introduce query_protocol() to check management requirement
>> instead of inferring from transport and link layer respectively, along with
>> the new enum on protocol type.
>>
>> Mapping List:
>> 		node-type	link-layer	transport	protocol
>> nes		RNIC		ETH		IWARP		IWARP
>> amso1100	RNIC		ETH		IWARP		IWARP
>> cxgb3   	RNIC		ETH		IWARP		IWARP
>> cxgb4   	RNIC		ETH		IWARP		IWARP
>> usnic   	USNIC_UDP	ETH		USNIC_UDP	USNIC_UDP
>> ocrdma  	IB_CA		ETH		IB		IBOE
>> mlx4    	IB_CA		IB/ETH		IB		IB/IBOE
>> mlx5    	IB_CA		IB		IB		IB
>> ehca    	IB_CA		IB		IB		IB
>> ipath   	IB_CA		IB		IB		IB
>> mthca   	IB_CA		IB		IB		IB
>> qib     	IB_CA		IB		IB		IB
>>
>> For example:
>> 	if (transport == IB) && (link-layer == ETH)
>> will now become:
>> 	if (query_protocol() == IBOE)
>>
>> Thus we will be able to get rid of the respective transport and link-layer
>> checking, and it will help us to add new protocol/Technology (like OPA) more
>> easier, also with the introduced management helpers, IB management logical
>> will be more clear and easier for extending.
>>
>> Highlights:
>>     The long CC list in each patches was complained consider about the
>>     maintainability, it was suggested folks to provide their reviewed-by or
>>     Acked-by instead, so for those who used to be on the CC list, please
>>     provide your signature voluntarily :-)
>>
>>     The 'mgmt-helpers' branch of 'git@github.com:ywang-pb/infiniband-wy.git'
>>     contain this series based on the latest 'infiniband/for-next'
>>
>>     Patch 1#~14# included all the logical reform, 15#~23# introduced the
>>     management helpers.
>>
>>     Doug suggested the bitmask mechanism:
>> 	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23765.html
>>     which could be the plan for future reforming, we prefer that to be another
>>     series which focus on semantic and performance.
>>
>>     This patch-set is somewhat 'bloated' now and it may be a good timing for
>>     staging, I'd like to suggest we focus on improving existed helpers and push
>>     all the further reforms into next series ;-)
>>
>> Proposals:
>>     Sean:
>> 	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23339.html
>>     Doug:
>> 	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23418.html
>> 	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23765.html
>>     Jason:
>> 	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23425.html
>>
>> Michael Wang (23):
>>   IB/Verbs: Implement new callback query_protocol()
>>   IB/Verbs: Implement raw management helpers
>>   IB/Verbs: Reform IB-core mad/agent/user_mad
>>   IB/Verbs: Reform IB-core cm
>>   IB/Verbs: Reform IB-core sa_query
>>   IB/Verbs: Reform IB-core multicast
>>   IB/Verbs: Reform IB-ulp ipoib
>>   IB/Verbs: Reform IB-ulp xprtrdma
>>   IB/Verbs: Reform IB-core verbs
>>   IB/Verbs: Reform cm related part in IB-core cma/ucm
>>   IB/Verbs: Reform route related part in IB-core cma
>>   IB/Verbs: Reform mcast related part in IB-core cma
>>   IB/Verbs: Reform cma_acquire_dev()
>>   IB/Verbs: Reform rest part in IB-core cma
>>   IB/Verbs: Use management helper rdma_cap_ib_mad()
>>   IB/Verbs: Use management helper rdma_cap_ib_smi()
>>   IB/Verbs: Use management helper rdma_cap_ib_cm()
>>   IB/Verbs: Use management helper rdma_cap_iw_cm()
>>   IB/Verbs: Use management helper rdma_cap_ib_sa()
>>   IB/Verbs: Use management helper rdma_cap_ib_mcast()
>>   IB/Verbs: Use management helper rdma_cap_read_multi_sge()
>>   IB/Verbs: Use management helper rdma_cap_af_ib()
>>   IB/Verbs: Use management helper rdma_cap_eth_ah()
>>
>>  drivers/infiniband/core/agent.c              |   2 +-
>>  drivers/infiniband/core/cm.c                 |  20 ++-
>>  drivers/infiniband/core/cma.c                | 257 +++++++++++----------------
>>  drivers/infiniband/core/device.c             |   1 +
>>  drivers/infiniband/core/mad.c                |  43 +++--
>>  drivers/infiniband/core/multicast.c          |  12 +-
>>  drivers/infiniband/core/sa_query.c           |  30 ++--
>>  drivers/infiniband/core/ucm.c                |   3 +-
>>  drivers/infiniband/core/ucma.c               |  25 +--
>>  drivers/infiniband/core/user_mad.c           |  26 ++-
>>  drivers/infiniband/core/verbs.c              |   6 +-
>>  drivers/infiniband/hw/amso1100/c2_provider.c |   7 +
>>  drivers/infiniband/hw/cxgb3/iwch_provider.c  |   7 +
>>  drivers/infiniband/hw/cxgb4/provider.c       |   7 +
>>  drivers/infiniband/hw/ehca/ehca_hca.c        |   6 +
>>  drivers/infiniband/hw/ehca/ehca_iverbs.h     |   3 +
>>  drivers/infiniband/hw/ehca/ehca_main.c       |   1 +
>>  drivers/infiniband/hw/ipath/ipath_verbs.c    |   7 +
>>  drivers/infiniband/hw/mlx4/main.c            |  10 ++
>>  drivers/infiniband/hw/mlx5/main.c            |   7 +
>>  drivers/infiniband/hw/mthca/mthca_provider.c |   7 +
>>  drivers/infiniband/hw/nes/nes_verbs.c        |   6 +
>>  drivers/infiniband/hw/ocrdma/ocrdma_main.c   |   1 +
>>  drivers/infiniband/hw/ocrdma/ocrdma_verbs.c  |   6 +
>>  drivers/infiniband/hw/ocrdma/ocrdma_verbs.h  |   3 +
>>  drivers/infiniband/hw/qib/qib_verbs.c        |   7 +
>>  drivers/infiniband/hw/usnic/usnic_ib_main.c  |   1 +
>>  drivers/infiniband/hw/usnic/usnic_ib_verbs.c |   6 +
>>  drivers/infiniband/hw/usnic/usnic_ib_verbs.h |   2 +
>>  drivers/infiniband/ulp/ipoib/ipoib_main.c    |  15 +-
>>  include/rdma/ib_verbs.h                      | 167 +++++++++++++++++
>>  net/sunrpc/xprtrdma/svc_rdma_recvfrom.c      |   4 +-
>>  net/sunrpc/xprtrdma/svc_rdma_transport.c     |  45 ++---
>>  33 files changed, 477 insertions(+), 273 deletions(-)
>>
>> -- 
>> 2.1.0
>>

^ permalink raw reply	[flat|nested] 64+ messages in thread

* Re: [PATCH v8 00/23] IB/Verbs: IB Management Helpers
  2015-05-12  7:57             ` Michael Wang
  (?)
@ 2015-05-12 14:24             ` Doug Ledford
       [not found]               ` <1431440667.43876.23.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
  -1 siblings, 1 reply; 64+ messages in thread
From: Doug Ledford @ 2015-05-12 14:24 UTC (permalink / raw)
  To: Michael Wang
  Cc: ira.weiny, Roland Dreier, Sean Hefty, Hal Rosenstock, linux-rdma,
	linux-kernel, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell

[-- Attachment #1: Type: text/plain, Size: 9787 bytes --]

On Tue, 2015-05-12 at 09:57 +0200, Michael Wang wrote:
> 
> On 05/12/2015 02:27 AM, Doug Ledford wrote:
> > On Mon, 2015-05-11 at 19:49 -0400, ira.weiny wrote:
> >> I have run with this series and the only issue I have found is not with this
> >> patch set directly.
> >>
> >> This patch:
> >>
> >>>   IB/Verbs: Use management helper rdma_cap_ib_mad()
> >>
> >> causes an error when you actually use the port passed from the ib_umad module.
> >> I have a patch to fix that which I found while trying to build on this series
> >> for the use of a bit mask.
> >>
> >> Doug, I don't know what you would like to do for this fix.  I am submitting it
> >> shortly with a new version of the core capability bit patches.  If you want to
> >> just add it after this series or force Michael to respin with the fix?
> > 
> > As I recall, there was a comment from Or requesting to squash some of
> > the individual patches down, but I no longer have that email in my Inbox
> > to double check.  And it seemed like there was one other review comment
> > not yet addressed.  Do I have that right Michael?  And if so, are you
> > working on a v9?
> 
> AFAIK Or was asking to merge the #15~23, and want to reserve the changelog
> meanwhile reply the cover of prev version (I'm still confused on that...),
> I've replied but get no respond yet.
> 
> I can make a v9 to merge the #15~#23 if that could benefit the maintainability,
> please let me know your opinion :-)

I don't think it would make a significant difference.  I've pulled the
v8 patchset out of patchworks and I'll throw a new branch with it
included up to my github repo sometime today.

> About the Bug, if it was not introduced in this series, maybe including the
> fix in next series would be better?
> 
> Regards,
> Michael Wang
> 
> > 
> >>   Frankly
> >> I vote for the former because as it stands this series does not break directly.
> >> It was only after I changed the implementation of rdma_cap_ib_mad that it
> >> broke.
> >>
> >>
> >> For the rest of the series.
> >>
> >> Reviewed-by: Ira Weiny <ira.weiny@intel.com>
> >> Tested-by: Ira Weiny <ira.weiny@intel.com>
> >> 	-- Limited to mlx4, qib, and OPA (with additional patches.)
> >>
> >>
> >> On Tue, May 05, 2015 at 02:50:17PM +0200, Michael Wang wrote:
> >>> Since v7:
> >>>   * Thanks to Doug, Ira, Devesh for the testing :-)
> >>>   * Thanks for the comments from or, Doug, Ira, Jason :-)
> >>>     Please remind me if anything missed :-P
> >>>   * Use rdma_cap_XX() instead of cap_XX() for readability
> >>>   * Remove CC list in git log for maintainability
> >>>   * Use bool as return value
> >>>   * Updated github repository to v8
> >>>
> >>> There are plenty of lengthy code to check the transport type of IB device,
> >>> or the link layer type of it's port, but actually we are just speculating
> >>> whether a particular management/feature is supported by the device/port.
> >>>
> >>> Thus instead of inferring, we should have our own mechanism for IB management
> >>> capability/protocol/feature checking, several proposals below.
> >>>
> >>> This patch set will introduce query_protocol() to check management requirement
> >>> instead of inferring from transport and link layer respectively, along with
> >>> the new enum on protocol type.
> >>>
> >>> Mapping List:
> >>> 		node-type	link-layer	transport	protocol
> >>> nes		RNIC		ETH		IWARP		IWARP
> >>> amso1100	RNIC		ETH		IWARP		IWARP
> >>> cxgb3   	RNIC		ETH		IWARP		IWARP
> >>> cxgb4   	RNIC		ETH		IWARP		IWARP
> >>> usnic   	USNIC_UDP	ETH		USNIC_UDP	USNIC_UDP
> >>> ocrdma  	IB_CA		ETH		IB		IBOE
> >>> mlx4    	IB_CA		IB/ETH		IB		IB/IBOE
> >>> mlx5    	IB_CA		IB		IB		IB
> >>> ehca    	IB_CA		IB		IB		IB
> >>> ipath   	IB_CA		IB		IB		IB
> >>> mthca   	IB_CA		IB		IB		IB
> >>> qib     	IB_CA		IB		IB		IB
> >>>
> >>> For example:
> >>> 	if (transport == IB) && (link-layer == ETH)
> >>> will now become:
> >>> 	if (query_protocol() == IBOE)
> >>>
> >>> Thus we will be able to get rid of the respective transport and link-layer
> >>> checking, and it will help us to add new protocol/Technology (like OPA) more
> >>> easier, also with the introduced management helpers, IB management logical
> >>> will be more clear and easier for extending.
> >>>
> >>> Highlights:
> >>>     The long CC list in each patches was complained consider about the
> >>>     maintainability, it was suggested folks to provide their reviewed-by or
> >>>     Acked-by instead, so for those who used to be on the CC list, please
> >>>     provide your signature voluntarily :-)
> >>>
> >>>     The 'mgmt-helpers' branch of 'git@github.com:ywang-pb/infiniband-wy.git'
> >>>     contain this series based on the latest 'infiniband/for-next'
> >>>
> >>>     Patch 1#~14# included all the logical reform, 15#~23# introduced the
> >>>     management helpers.
> >>>
> >>>     Doug suggested the bitmask mechanism:
> >>> 	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23765.html
> >>>     which could be the plan for future reforming, we prefer that to be another
> >>>     series which focus on semantic and performance.
> >>>
> >>>     This patch-set is somewhat 'bloated' now and it may be a good timing for
> >>>     staging, I'd like to suggest we focus on improving existed helpers and push
> >>>     all the further reforms into next series ;-)
> >>>
> >>> Proposals:
> >>>     Sean:
> >>> 	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23339.html
> >>>     Doug:
> >>> 	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23418.html
> >>> 	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23765.html
> >>>     Jason:
> >>> 	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23425.html
> >>>
> >>> Michael Wang (23):
> >>>   IB/Verbs: Implement new callback query_protocol()
> >>>   IB/Verbs: Implement raw management helpers
> >>>   IB/Verbs: Reform IB-core mad/agent/user_mad
> >>>   IB/Verbs: Reform IB-core cm
> >>>   IB/Verbs: Reform IB-core sa_query
> >>>   IB/Verbs: Reform IB-core multicast
> >>>   IB/Verbs: Reform IB-ulp ipoib
> >>>   IB/Verbs: Reform IB-ulp xprtrdma
> >>>   IB/Verbs: Reform IB-core verbs
> >>>   IB/Verbs: Reform cm related part in IB-core cma/ucm
> >>>   IB/Verbs: Reform route related part in IB-core cma
> >>>   IB/Verbs: Reform mcast related part in IB-core cma
> >>>   IB/Verbs: Reform cma_acquire_dev()
> >>>   IB/Verbs: Reform rest part in IB-core cma
> >>>   IB/Verbs: Use management helper rdma_cap_ib_mad()
> >>>   IB/Verbs: Use management helper rdma_cap_ib_smi()
> >>>   IB/Verbs: Use management helper rdma_cap_ib_cm()
> >>>   IB/Verbs: Use management helper rdma_cap_iw_cm()
> >>>   IB/Verbs: Use management helper rdma_cap_ib_sa()
> >>>   IB/Verbs: Use management helper rdma_cap_ib_mcast()
> >>>   IB/Verbs: Use management helper rdma_cap_read_multi_sge()
> >>>   IB/Verbs: Use management helper rdma_cap_af_ib()
> >>>   IB/Verbs: Use management helper rdma_cap_eth_ah()
> >>>
> >>>  drivers/infiniband/core/agent.c              |   2 +-
> >>>  drivers/infiniband/core/cm.c                 |  20 ++-
> >>>  drivers/infiniband/core/cma.c                | 257 +++++++++++----------------
> >>>  drivers/infiniband/core/device.c             |   1 +
> >>>  drivers/infiniband/core/mad.c                |  43 +++--
> >>>  drivers/infiniband/core/multicast.c          |  12 +-
> >>>  drivers/infiniband/core/sa_query.c           |  30 ++--
> >>>  drivers/infiniband/core/ucm.c                |   3 +-
> >>>  drivers/infiniband/core/ucma.c               |  25 +--
> >>>  drivers/infiniband/core/user_mad.c           |  26 ++-
> >>>  drivers/infiniband/core/verbs.c              |   6 +-
> >>>  drivers/infiniband/hw/amso1100/c2_provider.c |   7 +
> >>>  drivers/infiniband/hw/cxgb3/iwch_provider.c  |   7 +
> >>>  drivers/infiniband/hw/cxgb4/provider.c       |   7 +
> >>>  drivers/infiniband/hw/ehca/ehca_hca.c        |   6 +
> >>>  drivers/infiniband/hw/ehca/ehca_iverbs.h     |   3 +
> >>>  drivers/infiniband/hw/ehca/ehca_main.c       |   1 +
> >>>  drivers/infiniband/hw/ipath/ipath_verbs.c    |   7 +
> >>>  drivers/infiniband/hw/mlx4/main.c            |  10 ++
> >>>  drivers/infiniband/hw/mlx5/main.c            |   7 +
> >>>  drivers/infiniband/hw/mthca/mthca_provider.c |   7 +
> >>>  drivers/infiniband/hw/nes/nes_verbs.c        |   6 +
> >>>  drivers/infiniband/hw/ocrdma/ocrdma_main.c   |   1 +
> >>>  drivers/infiniband/hw/ocrdma/ocrdma_verbs.c  |   6 +
> >>>  drivers/infiniband/hw/ocrdma/ocrdma_verbs.h  |   3 +
> >>>  drivers/infiniband/hw/qib/qib_verbs.c        |   7 +
> >>>  drivers/infiniband/hw/usnic/usnic_ib_main.c  |   1 +
> >>>  drivers/infiniband/hw/usnic/usnic_ib_verbs.c |   6 +
> >>>  drivers/infiniband/hw/usnic/usnic_ib_verbs.h |   2 +
> >>>  drivers/infiniband/ulp/ipoib/ipoib_main.c    |  15 +-
> >>>  include/rdma/ib_verbs.h                      | 167 +++++++++++++++++
> >>>  net/sunrpc/xprtrdma/svc_rdma_recvfrom.c      |   4 +-
> >>>  net/sunrpc/xprtrdma/svc_rdma_transport.c     |  45 ++---
> >>>  33 files changed, 477 insertions(+), 273 deletions(-)
> >>>
> >>> -- 
> >>> 2.1.0
> >>>
> >> --
> >> 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
> > 
> > 
> --
> 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


-- 
Doug Ledford <dledford@redhat.com>
              GPG KeyID: 0E572FDD


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 64+ messages in thread

* Re: [PATCH v8 00/23] IB/Verbs: IB Management Helpers
  2015-05-12 14:24             ` Doug Ledford
@ 2015-05-12 14:28                   ` Michael Wang
  0 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-12 14:28 UTC (permalink / raw)
  To: Doug Ledford
  Cc: ira.weiny, Roland Dreier, Sean Hefty, Hal Rosenstock,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Tom Tucker, Steve Wise,
	Hoang-Nam Nguyen, Christoph Raisch, Mike Marciniszyn, Eli Cohen,
	Faisal Latif, Jack Morgenstein, Or Gerlitz, Haggai Eran,
	Tom Talpey, Jason Gunthorpe, Devesh Sharma, Liran Liss,
	Dave Goodell



On 05/12/2015 04:24 PM, Doug Ledford wrote:
[snip]
>>
>> AFAIK Or was asking to merge the #15~23, and want to reserve the changelog
>> meanwhile reply the cover of prev version (I'm still confused on that...),
>> I've replied but get no respond yet.
>>
>> I can make a v9 to merge the #15~#23 if that could benefit the maintainability,
>> please let me know your opinion :-)
> 
> I don't think it would make a significant difference.  I've pulled the
> v8 patchset out of patchworks and I'll throw a new branch with it
> included up to my github repo sometime today.

Got it :-)

Regards,
Michael Wang

> 
>> About the Bug, if it was not introduced in this series, maybe including the
>> fix in next series would be better?
>>
>> Regards,
>> Michael Wang
>>
>>>
>>>>   Frankly
>>>> I vote for the former because as it stands this series does not break directly.
>>>> It was only after I changed the implementation of rdma_cap_ib_mad that it
>>>> broke.
>>>>
>>>>
>>>> For the rest of the series.
>>>>
>>>> Reviewed-by: Ira Weiny <ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
>>>> Tested-by: Ira Weiny <ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
>>>> 	-- Limited to mlx4, qib, and OPA (with additional patches.)
>>>>
>>>>
>>>> On Tue, May 05, 2015 at 02:50:17PM +0200, Michael Wang wrote:
>>>>> Since v7:
>>>>>   * Thanks to Doug, Ira, Devesh for the testing :-)
>>>>>   * Thanks for the comments from or, Doug, Ira, Jason :-)
>>>>>     Please remind me if anything missed :-P
>>>>>   * Use rdma_cap_XX() instead of cap_XX() for readability
>>>>>   * Remove CC list in git log for maintainability
>>>>>   * Use bool as return value
>>>>>   * Updated github repository to v8
>>>>>
>>>>> There are plenty of lengthy code to check the transport type of IB device,
>>>>> or the link layer type of it's port, but actually we are just speculating
>>>>> whether a particular management/feature is supported by the device/port.
>>>>>
>>>>> Thus instead of inferring, we should have our own mechanism for IB management
>>>>> capability/protocol/feature checking, several proposals below.
>>>>>
>>>>> This patch set will introduce query_protocol() to check management requirement
>>>>> instead of inferring from transport and link layer respectively, along with
>>>>> the new enum on protocol type.
>>>>>
>>>>> Mapping List:
>>>>> 		node-type	link-layer	transport	protocol
>>>>> nes		RNIC		ETH		IWARP		IWARP
>>>>> amso1100	RNIC		ETH		IWARP		IWARP
>>>>> cxgb3   	RNIC		ETH		IWARP		IWARP
>>>>> cxgb4   	RNIC		ETH		IWARP		IWARP
>>>>> usnic   	USNIC_UDP	ETH		USNIC_UDP	USNIC_UDP
>>>>> ocrdma  	IB_CA		ETH		IB		IBOE
>>>>> mlx4    	IB_CA		IB/ETH		IB		IB/IBOE
>>>>> mlx5    	IB_CA		IB		IB		IB
>>>>> ehca    	IB_CA		IB		IB		IB
>>>>> ipath   	IB_CA		IB		IB		IB
>>>>> mthca   	IB_CA		IB		IB		IB
>>>>> qib     	IB_CA		IB		IB		IB
>>>>>
>>>>> For example:
>>>>> 	if (transport == IB) && (link-layer == ETH)
>>>>> will now become:
>>>>> 	if (query_protocol() == IBOE)
>>>>>
>>>>> Thus we will be able to get rid of the respective transport and link-layer
>>>>> checking, and it will help us to add new protocol/Technology (like OPA) more
>>>>> easier, also with the introduced management helpers, IB management logical
>>>>> will be more clear and easier for extending.
>>>>>
>>>>> Highlights:
>>>>>     The long CC list in each patches was complained consider about the
>>>>>     maintainability, it was suggested folks to provide their reviewed-by or
>>>>>     Acked-by instead, so for those who used to be on the CC list, please
>>>>>     provide your signature voluntarily :-)
>>>>>
>>>>>     The 'mgmt-helpers' branch of 'git-9UaJU3cA/F/QT0dZR+AlfA@public.gmane.org:ywang-pb/infiniband-wy.git'
>>>>>     contain this series based on the latest 'infiniband/for-next'
>>>>>
>>>>>     Patch 1#~14# included all the logical reform, 15#~23# introduced the
>>>>>     management helpers.
>>>>>
>>>>>     Doug suggested the bitmask mechanism:
>>>>> 	https://www.mail-archive.com/linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg23765.html
>>>>>     which could be the plan for future reforming, we prefer that to be another
>>>>>     series which focus on semantic and performance.
>>>>>
>>>>>     This patch-set is somewhat 'bloated' now and it may be a good timing for
>>>>>     staging, I'd like to suggest we focus on improving existed helpers and push
>>>>>     all the further reforms into next series ;-)
>>>>>
>>>>> Proposals:
>>>>>     Sean:
>>>>> 	https://www.mail-archive.com/linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg23339.html
>>>>>     Doug:
>>>>> 	https://www.mail-archive.com/linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg23418.html
>>>>> 	https://www.mail-archive.com/linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg23765.html
>>>>>     Jason:
>>>>> 	https://www.mail-archive.com/linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg23425.html
>>>>>
>>>>> Michael Wang (23):
>>>>>   IB/Verbs: Implement new callback query_protocol()
>>>>>   IB/Verbs: Implement raw management helpers
>>>>>   IB/Verbs: Reform IB-core mad/agent/user_mad
>>>>>   IB/Verbs: Reform IB-core cm
>>>>>   IB/Verbs: Reform IB-core sa_query
>>>>>   IB/Verbs: Reform IB-core multicast
>>>>>   IB/Verbs: Reform IB-ulp ipoib
>>>>>   IB/Verbs: Reform IB-ulp xprtrdma
>>>>>   IB/Verbs: Reform IB-core verbs
>>>>>   IB/Verbs: Reform cm related part in IB-core cma/ucm
>>>>>   IB/Verbs: Reform route related part in IB-core cma
>>>>>   IB/Verbs: Reform mcast related part in IB-core cma
>>>>>   IB/Verbs: Reform cma_acquire_dev()
>>>>>   IB/Verbs: Reform rest part in IB-core cma
>>>>>   IB/Verbs: Use management helper rdma_cap_ib_mad()
>>>>>   IB/Verbs: Use management helper rdma_cap_ib_smi()
>>>>>   IB/Verbs: Use management helper rdma_cap_ib_cm()
>>>>>   IB/Verbs: Use management helper rdma_cap_iw_cm()
>>>>>   IB/Verbs: Use management helper rdma_cap_ib_sa()
>>>>>   IB/Verbs: Use management helper rdma_cap_ib_mcast()
>>>>>   IB/Verbs: Use management helper rdma_cap_read_multi_sge()
>>>>>   IB/Verbs: Use management helper rdma_cap_af_ib()
>>>>>   IB/Verbs: Use management helper rdma_cap_eth_ah()
>>>>>
>>>>>  drivers/infiniband/core/agent.c              |   2 +-
>>>>>  drivers/infiniband/core/cm.c                 |  20 ++-
>>>>>  drivers/infiniband/core/cma.c                | 257 +++++++++++----------------
>>>>>  drivers/infiniband/core/device.c             |   1 +
>>>>>  drivers/infiniband/core/mad.c                |  43 +++--
>>>>>  drivers/infiniband/core/multicast.c          |  12 +-
>>>>>  drivers/infiniband/core/sa_query.c           |  30 ++--
>>>>>  drivers/infiniband/core/ucm.c                |   3 +-
>>>>>  drivers/infiniband/core/ucma.c               |  25 +--
>>>>>  drivers/infiniband/core/user_mad.c           |  26 ++-
>>>>>  drivers/infiniband/core/verbs.c              |   6 +-
>>>>>  drivers/infiniband/hw/amso1100/c2_provider.c |   7 +
>>>>>  drivers/infiniband/hw/cxgb3/iwch_provider.c  |   7 +
>>>>>  drivers/infiniband/hw/cxgb4/provider.c       |   7 +
>>>>>  drivers/infiniband/hw/ehca/ehca_hca.c        |   6 +
>>>>>  drivers/infiniband/hw/ehca/ehca_iverbs.h     |   3 +
>>>>>  drivers/infiniband/hw/ehca/ehca_main.c       |   1 +
>>>>>  drivers/infiniband/hw/ipath/ipath_verbs.c    |   7 +
>>>>>  drivers/infiniband/hw/mlx4/main.c            |  10 ++
>>>>>  drivers/infiniband/hw/mlx5/main.c            |   7 +
>>>>>  drivers/infiniband/hw/mthca/mthca_provider.c |   7 +
>>>>>  drivers/infiniband/hw/nes/nes_verbs.c        |   6 +
>>>>>  drivers/infiniband/hw/ocrdma/ocrdma_main.c   |   1 +
>>>>>  drivers/infiniband/hw/ocrdma/ocrdma_verbs.c  |   6 +
>>>>>  drivers/infiniband/hw/ocrdma/ocrdma_verbs.h  |   3 +
>>>>>  drivers/infiniband/hw/qib/qib_verbs.c        |   7 +
>>>>>  drivers/infiniband/hw/usnic/usnic_ib_main.c  |   1 +
>>>>>  drivers/infiniband/hw/usnic/usnic_ib_verbs.c |   6 +
>>>>>  drivers/infiniband/hw/usnic/usnic_ib_verbs.h |   2 +
>>>>>  drivers/infiniband/ulp/ipoib/ipoib_main.c    |  15 +-
>>>>>  include/rdma/ib_verbs.h                      | 167 +++++++++++++++++
>>>>>  net/sunrpc/xprtrdma/svc_rdma_recvfrom.c      |   4 +-
>>>>>  net/sunrpc/xprtrdma/svc_rdma_transport.c     |  45 ++---
>>>>>  33 files changed, 477 insertions(+), 273 deletions(-)
>>>>>
>>>>> -- 
>>>>> 2.1.0
>>>>>
>>>> --
>>>> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
>>>> the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
>>>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>>
>>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
>> the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 64+ messages in thread

* Re: [PATCH v8 00/23] IB/Verbs: IB Management Helpers
@ 2015-05-12 14:28                   ` Michael Wang
  0 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-12 14:28 UTC (permalink / raw)
  To: Doug Ledford
  Cc: ira.weiny, Roland Dreier, Sean Hefty, Hal Rosenstock, linux-rdma,
	linux-kernel, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Tom Talpey,
	Jason Gunthorpe, Devesh Sharma, Liran Liss, Dave Goodell



On 05/12/2015 04:24 PM, Doug Ledford wrote:
[snip]
>>
>> AFAIK Or was asking to merge the #15~23, and want to reserve the changelog
>> meanwhile reply the cover of prev version (I'm still confused on that...),
>> I've replied but get no respond yet.
>>
>> I can make a v9 to merge the #15~#23 if that could benefit the maintainability,
>> please let me know your opinion :-)
> 
> I don't think it would make a significant difference.  I've pulled the
> v8 patchset out of patchworks and I'll throw a new branch with it
> included up to my github repo sometime today.

Got it :-)

Regards,
Michael Wang

> 
>> About the Bug, if it was not introduced in this series, maybe including the
>> fix in next series would be better?
>>
>> Regards,
>> Michael Wang
>>
>>>
>>>>   Frankly
>>>> I vote for the former because as it stands this series does not break directly.
>>>> It was only after I changed the implementation of rdma_cap_ib_mad that it
>>>> broke.
>>>>
>>>>
>>>> For the rest of the series.
>>>>
>>>> Reviewed-by: Ira Weiny <ira.weiny@intel.com>
>>>> Tested-by: Ira Weiny <ira.weiny@intel.com>
>>>> 	-- Limited to mlx4, qib, and OPA (with additional patches.)
>>>>
>>>>
>>>> On Tue, May 05, 2015 at 02:50:17PM +0200, Michael Wang wrote:
>>>>> Since v7:
>>>>>   * Thanks to Doug, Ira, Devesh for the testing :-)
>>>>>   * Thanks for the comments from or, Doug, Ira, Jason :-)
>>>>>     Please remind me if anything missed :-P
>>>>>   * Use rdma_cap_XX() instead of cap_XX() for readability
>>>>>   * Remove CC list in git log for maintainability
>>>>>   * Use bool as return value
>>>>>   * Updated github repository to v8
>>>>>
>>>>> There are plenty of lengthy code to check the transport type of IB device,
>>>>> or the link layer type of it's port, but actually we are just speculating
>>>>> whether a particular management/feature is supported by the device/port.
>>>>>
>>>>> Thus instead of inferring, we should have our own mechanism for IB management
>>>>> capability/protocol/feature checking, several proposals below.
>>>>>
>>>>> This patch set will introduce query_protocol() to check management requirement
>>>>> instead of inferring from transport and link layer respectively, along with
>>>>> the new enum on protocol type.
>>>>>
>>>>> Mapping List:
>>>>> 		node-type	link-layer	transport	protocol
>>>>> nes		RNIC		ETH		IWARP		IWARP
>>>>> amso1100	RNIC		ETH		IWARP		IWARP
>>>>> cxgb3   	RNIC		ETH		IWARP		IWARP
>>>>> cxgb4   	RNIC		ETH		IWARP		IWARP
>>>>> usnic   	USNIC_UDP	ETH		USNIC_UDP	USNIC_UDP
>>>>> ocrdma  	IB_CA		ETH		IB		IBOE
>>>>> mlx4    	IB_CA		IB/ETH		IB		IB/IBOE
>>>>> mlx5    	IB_CA		IB		IB		IB
>>>>> ehca    	IB_CA		IB		IB		IB
>>>>> ipath   	IB_CA		IB		IB		IB
>>>>> mthca   	IB_CA		IB		IB		IB
>>>>> qib     	IB_CA		IB		IB		IB
>>>>>
>>>>> For example:
>>>>> 	if (transport == IB) && (link-layer == ETH)
>>>>> will now become:
>>>>> 	if (query_protocol() == IBOE)
>>>>>
>>>>> Thus we will be able to get rid of the respective transport and link-layer
>>>>> checking, and it will help us to add new protocol/Technology (like OPA) more
>>>>> easier, also with the introduced management helpers, IB management logical
>>>>> will be more clear and easier for extending.
>>>>>
>>>>> Highlights:
>>>>>     The long CC list in each patches was complained consider about the
>>>>>     maintainability, it was suggested folks to provide their reviewed-by or
>>>>>     Acked-by instead, so for those who used to be on the CC list, please
>>>>>     provide your signature voluntarily :-)
>>>>>
>>>>>     The 'mgmt-helpers' branch of 'git@github.com:ywang-pb/infiniband-wy.git'
>>>>>     contain this series based on the latest 'infiniband/for-next'
>>>>>
>>>>>     Patch 1#~14# included all the logical reform, 15#~23# introduced the
>>>>>     management helpers.
>>>>>
>>>>>     Doug suggested the bitmask mechanism:
>>>>> 	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23765.html
>>>>>     which could be the plan for future reforming, we prefer that to be another
>>>>>     series which focus on semantic and performance.
>>>>>
>>>>>     This patch-set is somewhat 'bloated' now and it may be a good timing for
>>>>>     staging, I'd like to suggest we focus on improving existed helpers and push
>>>>>     all the further reforms into next series ;-)
>>>>>
>>>>> Proposals:
>>>>>     Sean:
>>>>> 	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23339.html
>>>>>     Doug:
>>>>> 	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23418.html
>>>>> 	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23765.html
>>>>>     Jason:
>>>>> 	https://www.mail-archive.com/linux-rdma@vger.kernel.org/msg23425.html
>>>>>
>>>>> Michael Wang (23):
>>>>>   IB/Verbs: Implement new callback query_protocol()
>>>>>   IB/Verbs: Implement raw management helpers
>>>>>   IB/Verbs: Reform IB-core mad/agent/user_mad
>>>>>   IB/Verbs: Reform IB-core cm
>>>>>   IB/Verbs: Reform IB-core sa_query
>>>>>   IB/Verbs: Reform IB-core multicast
>>>>>   IB/Verbs: Reform IB-ulp ipoib
>>>>>   IB/Verbs: Reform IB-ulp xprtrdma
>>>>>   IB/Verbs: Reform IB-core verbs
>>>>>   IB/Verbs: Reform cm related part in IB-core cma/ucm
>>>>>   IB/Verbs: Reform route related part in IB-core cma
>>>>>   IB/Verbs: Reform mcast related part in IB-core cma
>>>>>   IB/Verbs: Reform cma_acquire_dev()
>>>>>   IB/Verbs: Reform rest part in IB-core cma
>>>>>   IB/Verbs: Use management helper rdma_cap_ib_mad()
>>>>>   IB/Verbs: Use management helper rdma_cap_ib_smi()
>>>>>   IB/Verbs: Use management helper rdma_cap_ib_cm()
>>>>>   IB/Verbs: Use management helper rdma_cap_iw_cm()
>>>>>   IB/Verbs: Use management helper rdma_cap_ib_sa()
>>>>>   IB/Verbs: Use management helper rdma_cap_ib_mcast()
>>>>>   IB/Verbs: Use management helper rdma_cap_read_multi_sge()
>>>>>   IB/Verbs: Use management helper rdma_cap_af_ib()
>>>>>   IB/Verbs: Use management helper rdma_cap_eth_ah()
>>>>>
>>>>>  drivers/infiniband/core/agent.c              |   2 +-
>>>>>  drivers/infiniband/core/cm.c                 |  20 ++-
>>>>>  drivers/infiniband/core/cma.c                | 257 +++++++++++----------------
>>>>>  drivers/infiniband/core/device.c             |   1 +
>>>>>  drivers/infiniband/core/mad.c                |  43 +++--
>>>>>  drivers/infiniband/core/multicast.c          |  12 +-
>>>>>  drivers/infiniband/core/sa_query.c           |  30 ++--
>>>>>  drivers/infiniband/core/ucm.c                |   3 +-
>>>>>  drivers/infiniband/core/ucma.c               |  25 +--
>>>>>  drivers/infiniband/core/user_mad.c           |  26 ++-
>>>>>  drivers/infiniband/core/verbs.c              |   6 +-
>>>>>  drivers/infiniband/hw/amso1100/c2_provider.c |   7 +
>>>>>  drivers/infiniband/hw/cxgb3/iwch_provider.c  |   7 +
>>>>>  drivers/infiniband/hw/cxgb4/provider.c       |   7 +
>>>>>  drivers/infiniband/hw/ehca/ehca_hca.c        |   6 +
>>>>>  drivers/infiniband/hw/ehca/ehca_iverbs.h     |   3 +
>>>>>  drivers/infiniband/hw/ehca/ehca_main.c       |   1 +
>>>>>  drivers/infiniband/hw/ipath/ipath_verbs.c    |   7 +
>>>>>  drivers/infiniband/hw/mlx4/main.c            |  10 ++
>>>>>  drivers/infiniband/hw/mlx5/main.c            |   7 +
>>>>>  drivers/infiniband/hw/mthca/mthca_provider.c |   7 +
>>>>>  drivers/infiniband/hw/nes/nes_verbs.c        |   6 +
>>>>>  drivers/infiniband/hw/ocrdma/ocrdma_main.c   |   1 +
>>>>>  drivers/infiniband/hw/ocrdma/ocrdma_verbs.c  |   6 +
>>>>>  drivers/infiniband/hw/ocrdma/ocrdma_verbs.h  |   3 +
>>>>>  drivers/infiniband/hw/qib/qib_verbs.c        |   7 +
>>>>>  drivers/infiniband/hw/usnic/usnic_ib_main.c  |   1 +
>>>>>  drivers/infiniband/hw/usnic/usnic_ib_verbs.c |   6 +
>>>>>  drivers/infiniband/hw/usnic/usnic_ib_verbs.h |   2 +
>>>>>  drivers/infiniband/ulp/ipoib/ipoib_main.c    |  15 +-
>>>>>  include/rdma/ib_verbs.h                      | 167 +++++++++++++++++
>>>>>  net/sunrpc/xprtrdma/svc_rdma_recvfrom.c      |   4 +-
>>>>>  net/sunrpc/xprtrdma/svc_rdma_transport.c     |  45 ++---
>>>>>  33 files changed, 477 insertions(+), 273 deletions(-)
>>>>>
>>>>> -- 
>>>>> 2.1.0
>>>>>
>>>> --
>>>> 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
>>>
>>>
>> --
>> 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
> 
> 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* Re: [PATCH v8 00/23] IB/Verbs: IB Management Helpers
  2015-05-12  0:27         ` Doug Ledford
@ 2015-05-12 18:09             ` Jason Gunthorpe
  -1 siblings, 0 replies; 64+ messages in thread
From: Jason Gunthorpe @ 2015-05-12 18:09 UTC (permalink / raw)
  To: Doug Ledford
  Cc: ira.weiny, Michael Wang, Roland Dreier, Sean Hefty,
	Hal Rosenstock, linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Tom Tucker, Steve Wise,
	Hoang-Nam Nguyen, Christoph Raisch, Mike Marciniszyn, Eli Cohen,
	Faisal Latif, Jack Morgenstein, Or Gerlitz, Haggai Eran,
	Tom Talpey, Devesh Sharma, Liran Liss, Dave Goodell

On Mon, May 11, 2015 at 08:27:00PM -0400, Doug Ledford wrote:
> On Mon, 2015-05-11 at 19:49 -0400, ira.weiny wrote:
> > I have run with this series and the only issue I have found is not with this
> > patch set directly.
> > 
> > This patch:
> > 
> > >   IB/Verbs: Use management helper rdma_cap_ib_mad()
> > 
> > causes an error when you actually use the port passed from the ib_umad module.
> > I have a patch to fix that which I found while trying to build on this series
> > for the use of a bit mask.
> > 
> > Doug, I don't know what you would like to do for this fix.  I am submitting it
> > shortly with a new version of the core capability bit patches.  If you want to
> > just add it after this series or force Michael to respin with the fix?
> 
> As I recall, there was a comment from Or requesting to squash some of
> the individual patches down, but I no longer have that email in my Inbox
> to double check.  And it seemed like there was one other review comment
> not yet addressed.  Do I have that right Michael?  And if so, are you
> working on a v9?

I had asked for better kdocs for the new helpers so new people can
understand when and where to use them.

I've not looked at the series at all for the past few postings.

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

^ permalink raw reply	[flat|nested] 64+ messages in thread

* Re: [PATCH v8 00/23] IB/Verbs: IB Management Helpers
@ 2015-05-12 18:09             ` Jason Gunthorpe
  0 siblings, 0 replies; 64+ messages in thread
From: Jason Gunthorpe @ 2015-05-12 18:09 UTC (permalink / raw)
  To: Doug Ledford
  Cc: ira.weiny, Michael Wang, Roland Dreier, Sean Hefty,
	Hal Rosenstock, linux-rdma, linux-kernel, Tom Tucker, Steve Wise,
	Hoang-Nam Nguyen, Christoph Raisch, Mike Marciniszyn, Eli Cohen,
	Faisal Latif, Jack Morgenstein, Or Gerlitz, Haggai Eran,
	Tom Talpey, Devesh Sharma, Liran Liss, Dave Goodell

On Mon, May 11, 2015 at 08:27:00PM -0400, Doug Ledford wrote:
> On Mon, 2015-05-11 at 19:49 -0400, ira.weiny wrote:
> > I have run with this series and the only issue I have found is not with this
> > patch set directly.
> > 
> > This patch:
> > 
> > >   IB/Verbs: Use management helper rdma_cap_ib_mad()
> > 
> > causes an error when you actually use the port passed from the ib_umad module.
> > I have a patch to fix that which I found while trying to build on this series
> > for the use of a bit mask.
> > 
> > Doug, I don't know what you would like to do for this fix.  I am submitting it
> > shortly with a new version of the core capability bit patches.  If you want to
> > just add it after this series or force Michael to respin with the fix?
> 
> As I recall, there was a comment from Or requesting to squash some of
> the individual patches down, but I no longer have that email in my Inbox
> to double check.  And it seemed like there was one other review comment
> not yet addressed.  Do I have that right Michael?  And if so, are you
> working on a v9?

I had asked for better kdocs for the new helpers so new people can
understand when and where to use them.

I've not looked at the series at all for the past few postings.

Jason

^ permalink raw reply	[flat|nested] 64+ messages in thread

* Re: [PATCH v8 00/23] IB/Verbs: IB Management Helpers
  2015-05-12 18:09             ` Jason Gunthorpe
@ 2015-05-12 20:09                 ` Doug Ledford
  -1 siblings, 0 replies; 64+ messages in thread
From: Doug Ledford @ 2015-05-12 20:09 UTC (permalink / raw)
  To: Jason Gunthorpe
  Cc: ira.weiny, Michael Wang, Roland Dreier, Sean Hefty,
	Hal Rosenstock, linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Tom Tucker, Steve Wise,
	Hoang-Nam Nguyen, Christoph Raisch, Mike Marciniszyn, Eli Cohen,
	Faisal Latif, Jack Morgenstein, Or Gerlitz, Haggai Eran,
	Tom Talpey, Devesh Sharma, Liran Liss, Dave Goodell

[-- Attachment #1: Type: text/plain, Size: 1711 bytes --]

On Tue, 2015-05-12 at 12:09 -0600, Jason Gunthorpe wrote:
> On Mon, May 11, 2015 at 08:27:00PM -0400, Doug Ledford wrote:
> > On Mon, 2015-05-11 at 19:49 -0400, ira.weiny wrote:
> > > I have run with this series and the only issue I have found is not with this
> > > patch set directly.
> > > 
> > > This patch:
> > > 
> > > >   IB/Verbs: Use management helper rdma_cap_ib_mad()
> > > 
> > > causes an error when you actually use the port passed from the ib_umad module.
> > > I have a patch to fix that which I found while trying to build on this series
> > > for the use of a bit mask.
> > > 
> > > Doug, I don't know what you would like to do for this fix.  I am submitting it
> > > shortly with a new version of the core capability bit patches.  If you want to
> > > just add it after this series or force Michael to respin with the fix?
> > 
> > As I recall, there was a comment from Or requesting to squash some of
> > the individual patches down, but I no longer have that email in my Inbox
> > to double check.  And it seemed like there was one other review comment
> > not yet addressed.  Do I have that right Michael?  And if so, are you
> > working on a v9?
> 
> I had asked for better kdocs for the new helpers so new people can
> understand when and where to use them.
> 
> I've not looked at the series at all for the past few postings.

Michael, please work up an incremental patch to address the kdocs issue.
I've picked up the v8 patchset, and there is no need to respin it, but I
would like to have that kdoc patch before the 4.2 merge window opens.


-- 
Doug Ledford <dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
              GPG KeyID: 0E572FDD


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 64+ messages in thread

* Re: [PATCH v8 00/23] IB/Verbs: IB Management Helpers
@ 2015-05-12 20:09                 ` Doug Ledford
  0 siblings, 0 replies; 64+ messages in thread
From: Doug Ledford @ 2015-05-12 20:09 UTC (permalink / raw)
  To: Jason Gunthorpe
  Cc: ira.weiny, Michael Wang, Roland Dreier, Sean Hefty,
	Hal Rosenstock, linux-rdma, linux-kernel, Tom Tucker, Steve Wise,
	Hoang-Nam Nguyen, Christoph Raisch, Mike Marciniszyn, Eli Cohen,
	Faisal Latif, Jack Morgenstein, Or Gerlitz, Haggai Eran,
	Tom Talpey, Devesh Sharma, Liran Liss, Dave Goodell

[-- Attachment #1: Type: text/plain, Size: 1682 bytes --]

On Tue, 2015-05-12 at 12:09 -0600, Jason Gunthorpe wrote:
> On Mon, May 11, 2015 at 08:27:00PM -0400, Doug Ledford wrote:
> > On Mon, 2015-05-11 at 19:49 -0400, ira.weiny wrote:
> > > I have run with this series and the only issue I have found is not with this
> > > patch set directly.
> > > 
> > > This patch:
> > > 
> > > >   IB/Verbs: Use management helper rdma_cap_ib_mad()
> > > 
> > > causes an error when you actually use the port passed from the ib_umad module.
> > > I have a patch to fix that which I found while trying to build on this series
> > > for the use of a bit mask.
> > > 
> > > Doug, I don't know what you would like to do for this fix.  I am submitting it
> > > shortly with a new version of the core capability bit patches.  If you want to
> > > just add it after this series or force Michael to respin with the fix?
> > 
> > As I recall, there was a comment from Or requesting to squash some of
> > the individual patches down, but I no longer have that email in my Inbox
> > to double check.  And it seemed like there was one other review comment
> > not yet addressed.  Do I have that right Michael?  And if so, are you
> > working on a v9?
> 
> I had asked for better kdocs for the new helpers so new people can
> understand when and where to use them.
> 
> I've not looked at the series at all for the past few postings.

Michael, please work up an incremental patch to address the kdocs issue.
I've picked up the v8 patchset, and there is no need to respin it, but I
would like to have that kdoc patch before the 4.2 merge window opens.


-- 
Doug Ledford <dledford@redhat.com>
              GPG KeyID: 0E572FDD


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 64+ messages in thread

* Re: [PATCH v8 00/23] IB/Verbs: IB Management Helpers
  2015-05-12 20:09                 ` Doug Ledford
@ 2015-05-13  7:44                     ` Michael Wang
  -1 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-13  7:44 UTC (permalink / raw)
  To: Doug Ledford, Jason Gunthorpe
  Cc: ira.weiny, Roland Dreier, Sean Hefty, Hal Rosenstock,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Tom Tucker, Steve Wise,
	Hoang-Nam Nguyen, Christoph Raisch, Mike Marciniszyn, Eli Cohen,
	Faisal Latif, Jack Morgenstein, Or Gerlitz, Haggai Eran,
	Tom Talpey, Devesh Sharma, Liran Liss, Dave Goodell



On 05/12/2015 10:09 PM, Doug Ledford wrote:
[snip]
>>
>> I had asked for better kdocs for the new helpers so new people can
>> understand when and where to use them.
>>
>> I've not looked at the series at all for the past few postings.
> 
> Michael, please work up an incremental patch to address the kdocs issue.
> I've picked up the v8 patchset, and there is no need to respin it, but I
> would like to have that kdoc patch before the 4.2 merge window opens.

Sure, now these helpers are settled down, it's time for document,
I'll send out the RFC ASAP :-)

Regards,
Michael Wang

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

^ permalink raw reply	[flat|nested] 64+ messages in thread

* Re: [PATCH v8 00/23] IB/Verbs: IB Management Helpers
@ 2015-05-13  7:44                     ` Michael Wang
  0 siblings, 0 replies; 64+ messages in thread
From: Michael Wang @ 2015-05-13  7:44 UTC (permalink / raw)
  To: Doug Ledford, Jason Gunthorpe
  Cc: ira.weiny, Roland Dreier, Sean Hefty, Hal Rosenstock, linux-rdma,
	linux-kernel, Tom Tucker, Steve Wise, Hoang-Nam Nguyen,
	Christoph Raisch, Mike Marciniszyn, Eli Cohen, Faisal Latif,
	Jack Morgenstein, Or Gerlitz, Haggai Eran, Tom Talpey,
	Devesh Sharma, Liran Liss, Dave Goodell



On 05/12/2015 10:09 PM, Doug Ledford wrote:
[snip]
>>
>> I had asked for better kdocs for the new helpers so new people can
>> understand when and where to use them.
>>
>> I've not looked at the series at all for the past few postings.
> 
> Michael, please work up an incremental patch to address the kdocs issue.
> I've picked up the v8 patchset, and there is no need to respin it, but I
> would like to have that kdoc patch before the 4.2 merge window opens.

Sure, now these helpers are settled down, it's time for document,
I'll send out the RFC ASAP :-)

Regards,
Michael Wang

> 
> 

^ permalink raw reply	[flat|nested] 64+ messages in thread

end of thread, other threads:[~2015-05-13  7:44 UTC | newest]

Thread overview: 64+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-05-05 12:50 [PATCH v8 00/23] IB/Verbs: IB Management Helpers Michael Wang
2015-05-05 12:50 ` Michael Wang
2015-05-05 12:50 ` [PATCH v8 01/23] IB/Verbs: Implement new callback query_protocol() Michael Wang
     [not found] ` <1430830240-32389-1-git-send-email-yun.wang-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-05-05 12:50   ` [PATCH v8 02/23] IB/Verbs: Implement raw management helpers Michael Wang
2015-05-05 12:50     ` Michael Wang
2015-05-05 12:50   ` [PATCH v8 03/23] IB/Verbs: Reform IB-core mad/agent/user_mad Michael Wang
2015-05-05 12:50     ` Michael Wang
2015-05-05 12:50   ` [PATCH v8 04/23] IB/Verbs: Reform IB-core cm Michael Wang
2015-05-05 12:50     ` Michael Wang
2015-05-05 12:50   ` [PATCH v8 05/23] IB/Verbs: Reform IB-core sa_query Michael Wang
2015-05-05 12:50     ` Michael Wang
2015-05-05 12:50   ` [PATCH v8 06/23] IB/Verbs: Reform IB-core multicast Michael Wang
2015-05-05 12:50     ` Michael Wang
2015-05-05 12:50   ` [PATCH v8 07/23] IB/Verbs: Reform IB-ulp ipoib Michael Wang
2015-05-05 12:50     ` Michael Wang
2015-05-05 12:50   ` [PATCH v8 08/23] IB/Verbs: Reform IB-ulp xprtrdma Michael Wang
2015-05-05 12:50     ` Michael Wang
2015-05-05 12:50   ` [PATCH v8 09/23] IB/Verbs: Reform IB-core verbs Michael Wang
2015-05-05 12:50     ` Michael Wang
2015-05-05 12:50   ` [PATCH v8 10/23] IB/Verbs: Reform cm related part in IB-core cma/ucm Michael Wang
2015-05-05 12:50     ` Michael Wang
2015-05-05 12:50   ` [PATCH v8 11/23] IB/Verbs: Reform route related part in IB-core cma Michael Wang
2015-05-05 12:50     ` Michael Wang
2015-05-05 12:50   ` [PATCH v8 13/23] IB/Verbs: Reform cma_acquire_dev() Michael Wang
2015-05-05 12:50     ` Michael Wang
2015-05-05 12:50   ` [PATCH v8 14/23] IB/Verbs: Reform rest part in IB-core cma Michael Wang
2015-05-05 12:50     ` Michael Wang
2015-05-05 12:50   ` [PATCH v8 16/23] IB/Verbs: Use management helper rdma_cap_ib_smi() Michael Wang
2015-05-05 12:50     ` Michael Wang
2015-05-05 12:50   ` [PATCH v8 17/23] IB/Verbs: Use management helper rdma_cap_ib_cm() Michael Wang
2015-05-05 12:50     ` Michael Wang
2015-05-05 12:50   ` [PATCH v8 18/23] IB/Verbs: Use management helper rdma_cap_iw_cm() Michael Wang
2015-05-05 12:50     ` Michael Wang
2015-05-05 12:50   ` [PATCH v8 19/23] IB/Verbs: Use management helper rdma_cap_ib_sa() Michael Wang
2015-05-05 12:50     ` Michael Wang
2015-05-05 12:50   ` [PATCH v8 21/23] IB/Verbs: Use management helper rdma_cap_read_multi_sge() Michael Wang
2015-05-05 12:50     ` Michael Wang
2015-05-05 12:50   ` [PATCH v8 22/23] IB/Verbs: Use management helper rdma_cap_af_ib() Michael Wang
2015-05-05 12:50     ` Michael Wang
2015-05-05 12:50   ` [PATCH v8 23/23] IB/Verbs: Use management helper rdma_cap_eth_ah() Michael Wang
2015-05-05 12:50     ` Michael Wang
2015-05-05 14:16   ` [PATCH v8 00/23] IB/Verbs: IB Management Helpers Or Gerlitz
2015-05-05 14:16     ` Or Gerlitz
2015-05-05 14:40     ` Michael Wang
2015-05-08 16:28       ` Devesh Sharma
2015-05-11 23:49   ` ira.weiny
2015-05-11 23:49     ` ira.weiny
     [not found]     ` <20150511234910.GA20027-W4f6Xiosr+yv7QzWx2u06xL4W9x8LtSr@public.gmane.org>
2015-05-12  0:27       ` Doug Ledford
2015-05-12  0:27         ` Doug Ledford
     [not found]         ` <1431390420.43876.4.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-05-12  7:57           ` Michael Wang
2015-05-12  7:57             ` Michael Wang
2015-05-12 14:24             ` Doug Ledford
     [not found]               ` <1431440667.43876.23.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-05-12 14:28                 ` Michael Wang
2015-05-12 14:28                   ` Michael Wang
2015-05-12 18:09           ` Jason Gunthorpe
2015-05-12 18:09             ` Jason Gunthorpe
     [not found]             ` <20150512180942.GC15891-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2015-05-12 20:09               ` Doug Ledford
2015-05-12 20:09                 ` Doug Ledford
     [not found]                 ` <1431461362.43876.81.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-05-13  7:44                   ` Michael Wang
2015-05-13  7:44                     ` Michael Wang
2015-05-12  8:04     ` Michael Wang
2015-05-05 12:50 ` [PATCH v8 12/23] IB/Verbs: Reform mcast related part in IB-core cma Michael Wang
2015-05-05 12:50 ` [PATCH v8 15/23] IB/Verbs: Use management helper rdma_cap_ib_mad() Michael Wang
2015-05-05 12:50 ` [PATCH v8 20/23] IB/Verbs: Use management helper rdma_cap_ib_mcast() Michael Wang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.