Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 7 Nov 2015 21:33:07 +0000 (13:33 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 7 Nov 2015 21:33:07 +0000 (13:33 -0800)
Pull rdma updates from Doug Ledford:
 "This is my initial round of 4.4 merge window patches.  There are a few
  other things I wish to get in for 4.4 that aren't in this pull, as
  this represents what has gone through merge/build/run testing and not
  what is the last few items for which testing is not yet complete.

   - "Checksum offload support in user space" enablement
   - Misc cxgb4 fixes, add T6 support
   - Misc usnic fixes
   - 32 bit build warning fixes
   - Misc ocrdma fixes
   - Multicast loopback prevention extension
   - Extend the GID cache to store and return attributes of GIDs
   - Misc iSER updates
   - iSER clustering update
   - Network NameSpace support for rdma CM
   - Work Request cleanup series
   - New Memory Registration API"

* tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma: (76 commits)
  IB/core, cma: Make __attribute_const__ declarations sparse-friendly
  IB/core: Remove old fast registration API
  IB/ipath: Remove fast registration from the code
  IB/hfi1: Remove fast registration from the code
  RDMA/nes: Remove old FRWR API
  IB/qib: Remove old FRWR API
  iw_cxgb4: Remove old FRWR API
  RDMA/cxgb3: Remove old FRWR API
  RDMA/ocrdma: Remove old FRWR API
  IB/mlx4: Remove old FRWR API support
  IB/mlx5: Remove old FRWR API support
  IB/srp: Dont allocate a page vector when using fast_reg
  IB/srp: Remove srp_finish_mapping
  IB/srp: Convert to new registration API
  IB/srp: Split srp_map_sg
  RDS/IW: Convert to new memory registration API
  svcrdma: Port to new memory registration API
  xprtrdma: Port to new memory registration API
  iser-target: Port to new memory registration API
  IB/iser: Port to new fast registration API
  ...

26 files changed:
1  2 
MAINTAINERS
drivers/infiniband/hw/mlx5/main.c
drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
drivers/net/ethernet/mellanox/mlx4/fw.c
drivers/net/ethernet/mellanox/mlx4/qp.c
drivers/net/ethernet/mellanox/mlx4/resource_tracker.c
drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h
drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c
drivers/staging/rdma/amso1100/c2_qp.c
drivers/staging/rdma/hfi1/mr.c
drivers/staging/rdma/hfi1/rc.c
drivers/staging/rdma/hfi1/ruc.c
drivers/staging/rdma/hfi1/verbs.c
drivers/staging/rdma/hfi1/verbs.h
drivers/staging/rdma/ipath/ipath_ruc.c
drivers/staging/rdma/ipath/ipath_ud.c
drivers/staging/rdma/ipath/ipath_verbs.c
include/linux/mlx4/device.h
net/rds/ib.c
net/rds/ib.h
net/rds/ib_cm.c
net/rds/ib_send.c
net/rds/iw_rdma.c
net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
net/sunrpc/xprtrdma/verbs.c

diff --cc MAINTAINERS
Simple merge
Simple merge
index 414fe7c487d598b05b574907bedd15a42b01eb3f,11045ec8d94ce295c19c5a52ee5fe8774ccc9bd3..55a47de544ea297bb7dc8b00091ac4f15cb83954
@@@ -47,8 -47,8 +47,9 @@@
  #include <linux/timer.h>
  #include <linux/vmalloc.h>
  #include <linux/etherdevice.h>
 +#include <linux/net_tstamp.h>
  #include <asm/io.h>
+ #include "t4_chip_type.h"
  #include "cxgb4_uld.h"
  
  #define CH_WARN(adap, fmt, ...) dev_warn(adap->pdev_dev, fmt, ## __VA_ARGS__)
index 5f78b42b427aef46d8567789ce1cb36bf3fae00e,993d1ff9ba21987612362d122b7082242314b313..263db37de7c807821ffe98b2156252b4ecf24ebf
@@@ -490,28 -511,30 +492,28 @@@ typedef struct kib_r
  
  typedef struct kib_tx                         /* transmit message */
  {
 -      struct list_head       tx_list;       /* queue on idle_txs ibc_tx_queue
 -                                             * etc. */
 -      kib_tx_pool_t          *tx_pool;      /* pool I'm from */
 -      struct kib_conn        *tx_conn;      /* owning conn */
 -      short                  tx_sending;    /* # tx callbacks outstanding */
 -      short                  tx_queued;     /* queued for sending */
 -      short                  tx_waiting;    /* waiting for peer */
 -      int                    tx_status;     /* LNET completion status */
 -      unsigned long          tx_deadline;   /* completion deadline */
 -      __u64                  tx_cookie;     /* completion cookie */
 -      lnet_msg_t             *tx_lntmsg[2]; /* lnet msgs to finalize on
 -                                             * completion */
 -      kib_msg_t              *tx_msg;       /* message buffer (host vaddr) */
 -      __u64                  tx_msgaddr;    /* message buffer (I/O addr) */
 +      struct list_head      tx_list; /* queue on idle_txs ibc_tx_queue etc. */
 +      kib_tx_pool_t         *tx_pool;       /* pool I'm from */
 +      struct kib_conn       *tx_conn;       /* owning conn */
 +      short                 tx_sending;     /* # tx callbacks outstanding */
 +      short                 tx_queued;      /* queued for sending */
 +      short                 tx_waiting;     /* waiting for peer */
 +      int                   tx_status;      /* LNET completion status */
 +      unsigned long         tx_deadline;    /* completion deadline */
 +      __u64                 tx_cookie;      /* completion cookie */
 +      lnet_msg_t *tx_lntmsg[2]; /* lnet msgs to finalize on completion */
 +      kib_msg_t             *tx_msg;        /* message buffer (host vaddr) */
 +      __u64                 tx_msgaddr;     /* message buffer (I/O addr) */
        DECLARE_PCI_UNMAP_ADDR(tx_msgunmap);  /* for dma_unmap_single() */
 -      int                    tx_nwrq;       /* # send work items */
 -      struct ib_rdma_wr      *tx_wrq;       /* send work items... */
 -      struct ib_sge          *tx_sge;       /* ...and their memory */
 -      kib_rdma_desc_t        *tx_rd;        /* rdma descriptor */
 -      int                    tx_nfrags;     /* # entries in... */
 -      struct scatterlist     *tx_frags;     /* dma_map_sg descriptor */
 -      __u64                  *tx_pages;     /* rdma phys page addrs */
 -      kib_fmr_t               fmr;          /* FMR */
 -      int                    tx_dmadir;     /* dma direction */
 +      int                   tx_nwrq;        /* # send work items */
-       struct ib_send_wr     *tx_wrq;        /* send work items... */
++      struct ib_rdma_wr     *tx_wrq;        /* send work items... */
 +      struct ib_sge         *tx_sge;        /* ...and their memory */
 +      kib_rdma_desc_t       *tx_rd;         /* rdma descriptor */
 +      int                   tx_nfrags;      /* # entries in... */
 +      struct scatterlist    *tx_frags;      /* dma_map_sg descriptor */
 +      __u64                 *tx_pages;      /* rdma phys page addrs */
 +      kib_fmr_t             fmr;            /* FMR */
 +      int                   tx_dmadir;      /* dma direction */
  } kib_tx_t;
  
  typedef struct kib_connvars {
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc net/rds/ib.c
Simple merge
diff --cc net/rds/ib.h
Simple merge
diff --cc net/rds/ib_cm.c
Simple merge
Simple merge
index d3d4454ffc84c6603397976e8c027b62c3300fbe,47bd68451ff7417e267ff7a9812d03c954deb1eb..b09a40c1adceebf170617da3826c82002b04807a
@@@ -75,10 -74,10 +74,10 @@@ struct rds_iw_mr_pool 
        int                     max_pages;
  };
  
 -static int rds_iw_flush_mr_pool(struct rds_iw_mr_pool *pool, int free_all);
 +static void rds_iw_flush_mr_pool(struct rds_iw_mr_pool *pool, int free_all);
  static void rds_iw_mr_pool_flush_worker(struct work_struct *work);
- static int rds_iw_init_fastreg(struct rds_iw_mr_pool *pool, struct rds_iw_mr *ibmr);
- static int rds_iw_map_fastreg(struct rds_iw_mr_pool *pool,
+ static int rds_iw_init_reg(struct rds_iw_mr_pool *pool, struct rds_iw_mr *ibmr);
+ static int rds_iw_map_reg(struct rds_iw_mr_pool *pool,
                          struct rds_iw_mr *ibmr,
                          struct scatterlist *sg, unsigned int nents);
  static void rds_iw_free_fastreg(struct rds_iw_mr_pool *pool, struct rds_iw_mr *ibmr);
index f0c3ff67ca987427136baebf67034ad3bf58a27f,cb0991345816e4ab2c2c99c6242726bef7e6c98a..ff4f01e527ecc08a1480ecba8f00d41a90a76571
@@@ -235,17 -234,14 +235,14 @@@ int rdma_read_chunk_frmr(struct svcxprt
  
        ctxt->direction = DMA_FROM_DEVICE;
        ctxt->frmr = frmr;
-       pages_needed = min_t(int, pages_needed, xprt->sc_frmr_pg_list_len);
-       read = min_t(int, (pages_needed << PAGE_SHIFT) - *page_offset,
-                    rs_length);
+       nents = min_t(unsigned int, nents, xprt->sc_frmr_pg_list_len);
 -      read = min_t(int, nents << PAGE_SHIFT, rs_length);
++      read = min_t(int, (nents << PAGE_SHIFT) - *page_offset, rs_length);
  
-       frmr->kva = page_address(rqstp->rq_arg.pages[pg_no]);
        frmr->direction = DMA_FROM_DEVICE;
        frmr->access_flags = (IB_ACCESS_LOCAL_WRITE|IB_ACCESS_REMOTE_WRITE);
-       frmr->map_len = pages_needed << PAGE_SHIFT;
-       frmr->page_list_len = pages_needed;
+       frmr->sg_nents = nents;
  
-       for (pno = 0; pno < pages_needed; pno++) {
+       for (pno = 0; pno < nents; pno++) {
                int len = min_t(int, rs_length, PAGE_SIZE - pg_off);
  
                head->arg.pages[pg_no] = rqstp->rq_arg.pages[pg_no];
Simple merge