[PATCH v8 00/23] IB/Verbs: IB Management Helpers

From: Michael Wang
Date: Tue May 05 2015 - 08:58:20 EST


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@xxxxxxxxxx: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@xxxxxxxxxxxxxxx/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@xxxxxxxxxxxxxxx/msg23339.html
Doug:
https://www.mail-archive.com/linux-rdma@xxxxxxxxxxxxxxx/msg23418.html
https://www.mail-archive.com/linux-rdma@xxxxxxxxxxxxxxx/msg23765.html
Jason:
https://www.mail-archive.com/linux-rdma@xxxxxxxxxxxxxxx/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-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/