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 'g...@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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to