From: Linus Torvalds <torvalds@linux-foundation.org>
Date: Sat, 7 Nov 2015 21:33:07 +0000 (-0800)
Subject: Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma
X-Git-Tag: firefly_0821_release~176^2~755
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=ab9f2faf8f40604551336e5b0a18e0910a57b92c;p=firefly-linux-kernel-4.4.55.git

Merge tag 'for-linus' of git://git./linux/kernel/git/dledford/rdma

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
  ...
---

ab9f2faf8f40604551336e5b0a18e0910a57b92c
diff --cc drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
index 414fe7c487d5,11045ec8d94c..55a47de544ea
--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
@@@ -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__)
diff --cc drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h
index 5f78b42b427a,993d1ff9ba21..263db37de7c8
--- a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h
+++ b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h
@@@ -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 {
diff --cc net/rds/iw_rdma.c
index d3d4454ffc84,47bd68451ff7..b09a40c1adce
--- a/net/rds/iw_rdma.c
+++ b/net/rds/iw_rdma.c
@@@ -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);
diff --cc net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
index f0c3ff67ca98,cb0991345816..ff4f01e527ec
--- a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
+++ b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
@@@ -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];