Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1030315AbbD1PKq (ORCPT ); Tue, 28 Apr 2015 11:10:46 -0400 Received: from mail-wi0-f179.google.com ([209.85.212.179]:34589 "EHLO mail-wi0-f179.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965779AbbD1PKd (ORCPT ); Tue, 28 Apr 2015 11:10:33 -0400 From: Michael Wang To: Roland Dreier , Sean Hefty , Hal Rosenstock , linux-rdma@vger.kernel.org, linux-kernel@vger.kernel.org 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 , Doug Ledford , Devesh Sharma , Liran Liss , Dave Goodell Subject: [PATCH v7 00/23] IB/Verbs: IB Management Helpers Date: Tue, 28 Apr 2015 17:10:00 +0200 Message-Id: <1430233823-7075-1-git-send-email-yun.wang@profitbricks.com> X-Mailer: git-send-email 2.1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 6240 Lines: 145 Since v6: * Thanks to Ira, Devesh for the review and testing :-) * Thanks for the comments from Sean, Tom, Jason, Doug, Devesh, Ira, Liran :-) Please remind me if anything missed :-P * Use query_protocol() and enum protocol type in 1# * Use rdma_protocol_XX() in 2# * Drop cma_set_legacy_transport() * Reserve rdma_ib_or_iboe() and rdma_node_get_transport() * Updated github repository to v7 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 'mgmt-helpers' branch of 'git@github.com:ywang-pb/infiniband-wy.git' contain this series based on the latest 'infiniband/for-next' The patch set covered a wide range of IB stuff, thus for those who are familiar with the particular part, your suggestion would be invaluable ;-) Patch 1#~14# included all the logical reform, 15#~23# introduced the management helpers. we appreciate for those one who have the HW willing to provide Tested-by :-) 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 cap_ib_mad() IB/Verbs: Use management helper cap_ib_smi() IB/Verbs: Use management helper cap_ib_cm() IB/Verbs: Use management helper cap_iw_cm() IB/Verbs: Use management helper cap_ib_sa() IB/Verbs: Use management helper cap_ib_mcast() IB/Verbs: Use management helper cap_read_multi_sge() IB/Verbs: Use management helper cap_af_ib() IB/Verbs: Use management helper 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 | 166 +++++++++++++++++ net/sunrpc/xprtrdma/svc_rdma_recvfrom.c | 4 +- net/sunrpc/xprtrdma/svc_rdma_transport.c | 45 ++--- 33 files changed, 476 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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/