Hi Linus, As we discussed offline, I've split this pull request into two parts because of the need for different merge bases.  This first section is the code that is based on the older 4.7-rc4 base.  While the pull request is mostly normal, there is a new driver in here (the driver was hosted outside the kernel for several years and is actually a fairly mature and well coded driver).  It amounts to 13,000 of the 16,000 lines of added code in this pull request. There should be one merge conflict in core/cma.c.  You can use the hunk from my tree in its entirety and delete the common ancestor and your HEAD chunks. This pull request is on my k.o/for-4.8-1 branch and uses the signed tag for-linus. Here's the boilerplate: The following changes since commit 33688abb2802ff3a230bd2441f765477b94cc89e:   Linux 4.7-rc4 (2016-06-19 21:30:02 -0700) are available in the git repository at:   git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma.git tags/for-linus for you to fetch changes up to 7f1d25b47d919cef29388aff37e7b074e65bf512:   Merge branches 'misc' and 'rxe' into k.o/for-4.8-1 (2016-08-04 11:13:47 -0400) ---------------------------------------------------------------- Round one of 4.8 code - Updates/fixes for iw_cxgb4 driver - Updates/fixes for mlx5 driver - Add flow steering and RSS API - Add hardware stats to mlx4 and mlx5 drivers - Add firmware version API for RDMA driver use - Add the rxe driver (this is a software RoCE driver that makes any   Ethernet device a RoCE device) - Fixes for i40iw driver - Support for send only multicast joins in the cma layer - Other minor fixes ---------------------------------------------------------------- Alex Vesker (3):       IB/mlx5: Fix port counter ID association to QP offset       IB/sa: Add cached attribute containing SM information to SA port       IB/core: Support for CMA multicast join flags Amitoj Kaur Chawla (1):       RDMA/cxgb3: Use AF_INET for sin_family field Artemy Kovalyov (2):       IB/mlx5: Fix MODIFY_QP command input structure       {net, IB}/mlx5: Refactor internal SRQ API Bart Van Assche (2):       IB/rdmavt: Disable by default       IB/hfi1: Disable by default Bodong Wang (1):       IB/mlx5: Report mlx5 TSO capabilities when querying device Doug Ledford (5):       Merge tag 'shared' of http://git.kernel.org/.../leon/linux-rdma into mlx5-4.8       Merge branches 'cxgb4-4.8', 'mlx5-4.8' and 'fw-version' into k.o/for-4.8       Merge branches 'cxgb4' and 'mlx5' into k.o/for-4.8       Merge branch 'i40iw' into k.o/for-4.8       Merge branches 'misc' and 'rxe' into k.o/for-4.8-1 Hariprasad S (8):       RDMA/iw_cxgb4: only read markers_enabled mod param once       RDMA/iw_cxgb4: allocate enough space for debugfs "qps" dump       RDMA/iw_cxgb4: clean up c4iw_reject_cr()       RDMA/iw_cxgb4: Add missing error codes for act open cmd       RDMA/iw_cxgb4: Low resource fixes for connection manager       RDMA/iw_cxgb4: Low resource fixes for Memory registration       RDMA/iw_cxgb4: Low resource fixes for Completion queue       RDMA/iw_cxgb4: Use kfree_skb instead of kfree Ira Weiny (13):       IB/core: Add get FW version string to the core       IB/cxgb3: Support device FW version string       IB/cxgb4: Support device FW version string       IB/i40iw: Support device FW version string       IB/mlx4: Support device FW version string       IB/mlx5: Support device FW version string       IB/mthca: Supprot device FW version string       IB/nes: Support device FW version string       IB/ocrdma: Support device FW version string       IB/usnic: Support device FW version string       IB/ipoib: Use new device FW version string       IB/core: Export a common fw_ver sysfs entry       IB/hfi1: Add device FW version string Jason Gunthorpe (1):       IB/uverbs: Fix race between uverbs_close and remove_one Maor Gottlieb (4):       IB/mlx5: Implements disassociate_ucontext API       IB/mlx5: Reset flow support for IB kernel ULPs       IB/core: Add IPv6 support to flow steering       IB/mlx5: Enable flow steering for IPv6 traffic Mark Bloch (5):       IB/mlx5: Add per port counters       IB/mlx5: Add port protocol stats       net/mlx4: Add diagnostic counters capability bit       net/mlx4: Query performance and diagnostics counters       IB/mlx4: Add diagnostic hardware counters Markus Elfring (3):       IB/hfi1: NULL arg to sc_return_credits is OK       IB/mthca: NULL arg to pci_dev_put is OK       IB/mthca: Clean up error unwind flow in mthca_reset() Moni Shoua (1):       Soft RoCE driver Mustafa Ismail (9):       IB/core: Add flow control to the portmapper netlink calls       i40iw: Correct and use size parameter to i40iw_reg_phys_mr       i40iw: Do not access pointer after free       i40iw: Remove unnecessary parameter to i40iw_cq_poll_completion       i40iw: Simplify code to set fragments in SQ WQE       i40iw: Remove unnecessary check for moving CQ head       i40iw: Change dup_ack_thresh to u8       i40iw: Add NULL check for puda buffer       Use smaller 512 byte messages for portmapper messages Roland Dreier (1):       IB/mlx4: Don't use GFP_ATOMIC for CQ resize struct Saeed Mahameed (1):       {net,IB}/mlx5: mlx5_ifc updates Shiraz Saleem (1):       i40iw: Fix return codes Slava Shwartsman (1):       IB/mlx5: Fix iteration overrun in GSI qps Steve Wise (4):       iw_cxgb4: stop MPA_REPLY timer when disconnecting       iw_cxgb4: explicitly move the qp to ERROR state during flush       iw_cxgb4: don't block in destroy_qp awaiting the last deref       iw_cm: free cm_id resources on the last deref Wei Yongjun (1):       IB/mlx5: Fix duplicate const warning Yishai Hadas (10):       net/mlx5: Export required core functions to support RSS       IB/core: Introduce Work Queue object and its verbs       IB/uverbs: Add WQ support       IB/mlx5: Add receive Work Queue verbs       IB/core: Introduce Receive Work Queue indirection table       IB/uverbs: Introduce RWQ Indirection table       IB/mlx5: Add Receive Work Queue Indirection table operations       IB/core: Extend create QP to get indirection table       IB/uverbs: Extend create QP to get RWQ indirection table       IB/mlx5: Add RSS QP support Yuval Shaia (1):       IB/ipoib: Report SG feature regardless of HW UD CSUM capability  MAINTAINERS                                        |    9 +  drivers/infiniband/Kconfig                         |    1 +  drivers/infiniband/core/cma.c                      |  100 +-  drivers/infiniband/core/device.c                   |    9 +  drivers/infiniband/core/iwcm.c                     |   54 +-  drivers/infiniband/core/iwcm.h                     |    2 +-  drivers/infiniband/core/iwpm_util.c                |    3 +-  drivers/infiniband/core/multicast.c                |   12 -  drivers/infiniband/core/netlink.c                  |    6 +-  drivers/infiniband/core/sa_query.c                 |   41 +  drivers/infiniband/core/sysfs.c                    |   15 +-  drivers/infiniband/core/ucma.c                     |   18 +-  drivers/infiniband/core/uverbs.h                   |   14 +  drivers/infiniband/core/uverbs_cmd.c               |  537 +++++++-  drivers/infiniband/core/uverbs_main.c              |   75 +-  drivers/infiniband/core/verbs.c                    |  163 ++-  drivers/infiniband/hw/cxgb3/iwch_cm.c              |    4 +-  drivers/infiniband/hw/cxgb3/iwch_provider.c        |   27 +-  drivers/infiniband/hw/cxgb4/cm.c                   |  193 ++-  drivers/infiniband/hw/cxgb4/cq.c                   |   42 +-  drivers/infiniband/hw/cxgb4/device.c               |    2 +-  drivers/infiniband/hw/cxgb4/iw_cxgb4.h             |   24 +-  drivers/infiniband/hw/cxgb4/mem.c                  |  127 +-  drivers/infiniband/hw/cxgb4/provider.c             |   31 +-  drivers/infiniband/hw/cxgb4/qp.c                   |   40 +-  drivers/infiniband/hw/hfi1/Kconfig                 |    1 -  drivers/infiniband/hw/hfi1/file_ops.c              |    2 +-  drivers/infiniband/hw/hfi1/hfi.h                   |    2 +  drivers/infiniband/hw/hfi1/verbs.c                 |   15 +  drivers/infiniband/hw/i40iw/i40iw_cm.c             |    4 +-  drivers/infiniband/hw/i40iw/i40iw_d.h              |    3 +  drivers/infiniband/hw/i40iw/i40iw_puda.c           |    4 +  drivers/infiniband/hw/i40iw/i40iw_type.h           |    2 +-  drivers/infiniband/hw/i40iw/i40iw_uk.c             |   29 +-  drivers/infiniband/hw/i40iw/i40iw_user.h           |    2 +-  drivers/infiniband/hw/i40iw/i40iw_verbs.c          |   76 +-  drivers/infiniband/hw/mlx4/cq.c                    |    4 +-  drivers/infiniband/hw/mlx4/main.c                  |  222 +++-  drivers/infiniband/hw/mlx4/mlx4_ib.h               |    9 +  drivers/infiniband/hw/mlx5/cq.c                    |   87 +-  drivers/infiniband/hw/mlx5/gsi.c                   |   19 +-  drivers/infiniband/hw/mlx5/main.c                  |  429 +++++-  drivers/infiniband/hw/mlx5/mlx5_ib.h               |   74 ++  drivers/infiniband/hw/mlx5/mr.c                    |    4 +  drivers/infiniband/hw/mlx5/qp.c                    |  691 +++++++++-  drivers/infiniband/hw/mlx5/srq.c                   |  112 +-  drivers/infiniband/hw/mlx5/user.h                  |   88 +-  drivers/infiniband/hw/mthca/mthca_provider.c       |   24 +-  drivers/infiniband/hw/mthca/mthca_reset.c          |   42 +-  drivers/infiniband/hw/nes/nes_verbs.c              |   33 +-  drivers/infiniband/hw/ocrdma/ocrdma_main.c         |   19 +-  drivers/infiniband/hw/usnic/usnic_ib_main.c        |   16 +  drivers/infiniband/hw/usnic/usnic_ib_sysfs.c       |   17 -  drivers/infiniband/sw/Makefile                     |    1 +  drivers/infiniband/sw/rdmavt/Kconfig               |    1 -  drivers/infiniband/sw/rxe/Kconfig                  |   24 +  drivers/infiniband/sw/rxe/Makefile                 |   24 +  drivers/infiniband/sw/rxe/rxe.c                    |  386 ++++++  drivers/infiniband/sw/rxe/rxe.h                    |   77 ++  drivers/infiniband/sw/rxe/rxe_av.c                 |   98 ++  drivers/infiniband/sw/rxe/rxe_comp.c               |  734 +++++++++++  drivers/infiniband/sw/rxe/rxe_cq.c                 |  165 +++  drivers/infiniband/sw/rxe/rxe_dma.c                |  166 +++  drivers/infiniband/sw/rxe/rxe_hdr.h                |  952 ++++++++++++++  drivers/infiniband/sw/rxe/rxe_icrc.c               |   96 ++  drivers/infiniband/sw/rxe/rxe_loc.h                |  286 ++++  drivers/infiniband/sw/rxe/rxe_mcast.c              |  190 +++  drivers/infiniband/sw/rxe/rxe_mmap.c               |  173 +++  drivers/infiniband/sw/rxe/rxe_mr.c                 |  643 +++++++++  drivers/infiniband/sw/rxe/rxe_net.c                |  708 ++++++++++  drivers/infiniband/sw/rxe/rxe_net.h                |   53 +  drivers/infiniband/sw/rxe/rxe_opcode.c             |  961 ++++++++++++++  drivers/infiniband/sw/rxe/rxe_opcode.h             |  129 ++  drivers/infiniband/sw/rxe/rxe_param.h              |  172 +++  drivers/infiniband/sw/rxe/rxe_pool.c               |  502 +++++++  drivers/infiniband/sw/rxe/rxe_pool.h               |  163 +++  drivers/infiniband/sw/rxe/rxe_qp.c                 |  851 ++++++++++++  drivers/infiniband/sw/rxe/rxe_queue.c              |  217 +++  drivers/infiniband/sw/rxe/rxe_queue.h              |  178 +++  drivers/infiniband/sw/rxe/rxe_recv.c               |  420 ++++++  drivers/infiniband/sw/rxe/rxe_req.c                |  726 ++++++++++  drivers/infiniband/sw/rxe/rxe_resp.c               | 1380 ++++++++++++++++++++  drivers/infiniband/sw/rxe/rxe_srq.c                |  193 +++  drivers/infiniband/sw/rxe/rxe_sysfs.c              |  157 +++  drivers/infiniband/sw/rxe/rxe_task.c               |  154 +++  drivers/infiniband/sw/rxe/rxe_task.h               |   95 ++  drivers/infiniband/sw/rxe/rxe_verbs.c              | 1330 +++++++++++++++++++  drivers/infiniband/sw/rxe/rxe_verbs.h              |  480 +++++++  drivers/infiniband/ulp/ipoib/ipoib_ethtool.c       |    6 +-  drivers/infiniband/ulp/ipoib/ipoib_main.c          |    3 +-  drivers/infiniband/ulp/ipoib/ipoib_verbs.c         |   10 +-  drivers/net/ethernet/chelsio/cxgb4/t4_msg.h        |    2 +  drivers/net/ethernet/mellanox/mlx4/fw.c            |   40 +  drivers/net/ethernet/mellanox/mlx5/core/srq.c      |  265 ++--  drivers/net/ethernet/mellanox/mlx5/core/transobj.c |    4 +  include/linux/mlx4/device.h                        |    7 +  include/linux/mlx5/cq.h                            |    2 +  include/linux/mlx5/driver.h                        |    6 +-  include/linux/mlx5/mlx5_ifc.h                      |  275 +++-  include/linux/mlx5/qp.h                            |    4 +-  include/linux/mlx5/srq.h                           |   25 +  include/rdma/ib_sa.h                               |   13 +  include/rdma/ib_verbs.h                            |  102 +-  include/rdma/rdma_cm.h                             |    4 +-  include/uapi/rdma/Kbuild                           |    1 +  include/uapi/rdma/ib_user_verbs.h                  |   95 ++  include/uapi/rdma/rdma_user_cm.h                   |    9 +-  include/uapi/rdma/rdma_user_rxe.h                  |  144 ++  108 files changed, 16804 insertions(+), 677 deletions(-)  create mode 100644 drivers/infiniband/sw/rxe/Kconfig  create mode 100644 drivers/infiniband/sw/rxe/Makefile  create mode 100644 drivers/infiniband/sw/rxe/rxe.c  create mode 100644 drivers/infiniband/sw/rxe/rxe.h  create mode 100644 drivers/infiniband/sw/rxe/rxe_av.c  create mode 100644 drivers/infiniband/sw/rxe/rxe_comp.c  create mode 100644 drivers/infiniband/sw/rxe/rxe_cq.c  create mode 100644 drivers/infiniband/sw/rxe/rxe_dma.c  create mode 100644 drivers/infiniband/sw/rxe/rxe_hdr.h  create mode 100644 drivers/infiniband/sw/rxe/rxe_icrc.c  create mode 100644 drivers/infiniband/sw/rxe/rxe_loc.h  create mode 100644 drivers/infiniband/sw/rxe/rxe_mcast.c  create mode 100644 drivers/infiniband/sw/rxe/rxe_mmap.c  create mode 100644 drivers/infiniband/sw/rxe/rxe_mr.c  create mode 100644 drivers/infiniband/sw/rxe/rxe_net.c  create mode 100644 drivers/infiniband/sw/rxe/rxe_net.h  create mode 100644 drivers/infiniband/sw/rxe/rxe_opcode.c  create mode 100644 drivers/infiniband/sw/rxe/rxe_opcode.h  create mode 100644 drivers/infiniband/sw/rxe/rxe_param.h  create mode 100644 drivers/infiniband/sw/rxe/rxe_pool.c  create mode 100644 drivers/infiniband/sw/rxe/rxe_pool.h  create mode 100644 drivers/infiniband/sw/rxe/rxe_qp.c  create mode 100644 drivers/infiniband/sw/rxe/rxe_queue.c  create mode 100644 drivers/infiniband/sw/rxe/rxe_queue.h  create mode 100644 drivers/infiniband/sw/rxe/rxe_recv.c  create mode 100644 drivers/infiniband/sw/rxe/rxe_req.c  create mode 100644 drivers/infiniband/sw/rxe/rxe_resp.c  create mode 100644 drivers/infiniband/sw/rxe/rxe_srq.c  create mode 100644 drivers/infiniband/sw/rxe/rxe_sysfs.c  create mode 100644 drivers/infiniband/sw/rxe/rxe_task.c  create mode 100644 drivers/infiniband/sw/rxe/rxe_task.h  create mode 100644 drivers/infiniband/sw/rxe/rxe_verbs.c  create mode 100644 drivers/infiniband/sw/rxe/rxe_verbs.h  create mode 100644 include/uapi/rdma/rdma_user_rxe.h -- Doug Ledford GPG KeyID: 0E572FDD