Merge tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband
Pull infiniband update from Roland Dreier: "Main batch of InfiniBand/RDMA changes for 3.9: - SRP error handling fixes from Bart Van Assche - Implementation of memory windows for mlx4 from Shani Michaeli - Lots of cxgb4 HW driver fixes from Vipul Pandya - Make iSER work for virtual functions, other fixes from Or Gerlitz - Fix for bug in qib HW driver from Mike Marciniszyn - IPoIB fixes from me, Itai Garbi, Shlomo Pongratz, Yan Burman - Various cleanups and warning fixes from Julia Lawall, Paul Bolle, Wei Yongjun" * tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: (41 commits) IB/mlx4: Advertise MW support IB/mlx4: Support memory window binding mlx4: Implement memory windows allocation and deallocation mlx4_core: Enable memory windows in {INIT, QUERY}_HCA mlx4_core: Disable memory windows for virtual functions IPoIB: Free ipoib neigh on path record failure so path rec queries are retried IB/srp: Fail I/O requests if the transport is offline IB/srp: Avoid endless SCSI error handling loop IB/srp: Avoid sending a task management function needlessly IB/srp: Track connection state properly IB/mlx4: Remove redundant NULL check before kfree IB/mlx4: Fix compiler warning about uninitialized 'vlan' variable IB/mlx4: Convert is_xxx variables in build_mlx_header() to bool IB/iser: Enable iser when FMRs are not supported IB/iser: Avoid error prints on EAGAIN registration failures IB/iser: Use proper define for the commands per LUN value advertised to SCSI ML IB/uverbs: Implement memory windows support in uverbs IB/core: Add "type 2" memory windows support mlx4_core: Propagate MR deregistration failures to caller mlx4_core: Rename MPT-related functions to have mpt_ prefix ...
This commit is contained in:
@@ -1086,7 +1086,7 @@ rpcrdma_buffer_create(struct rpcrdma_buffer *buf, struct rpcrdma_ep *ep,
|
||||
case RPCRDMA_MEMWINDOWS:
|
||||
/* Allocate one extra request's worth, for full cycling */
|
||||
for (i = (buf->rb_max_requests+1) * RPCRDMA_MAX_SEGS; i; i--) {
|
||||
r->r.mw = ib_alloc_mw(ia->ri_pd);
|
||||
r->r.mw = ib_alloc_mw(ia->ri_pd, IB_MW_TYPE_1);
|
||||
if (IS_ERR(r->r.mw)) {
|
||||
rc = PTR_ERR(r->r.mw);
|
||||
dprintk("RPC: %s: ib_alloc_mw"
|
||||
@@ -1673,12 +1673,12 @@ rpcrdma_register_memwin_external(struct rpcrdma_mr_seg *seg,
|
||||
|
||||
*nsegs = 1;
|
||||
rpcrdma_map_one(ia, seg, writing);
|
||||
param.mr = ia->ri_bind_mem;
|
||||
param.bind_info.mr = ia->ri_bind_mem;
|
||||
param.wr_id = 0ULL; /* no send cookie */
|
||||
param.addr = seg->mr_dma;
|
||||
param.length = seg->mr_len;
|
||||
param.bind_info.addr = seg->mr_dma;
|
||||
param.bind_info.length = seg->mr_len;
|
||||
param.send_flags = 0;
|
||||
param.mw_access_flags = mem_priv;
|
||||
param.bind_info.mw_access_flags = mem_priv;
|
||||
|
||||
DECR_CQCOUNT(&r_xprt->rx_ep);
|
||||
rc = ib_bind_mw(ia->ri_id->qp, seg->mr_chunk.rl_mw->r.mw, ¶m);
|
||||
@@ -1690,7 +1690,7 @@ rpcrdma_register_memwin_external(struct rpcrdma_mr_seg *seg,
|
||||
rpcrdma_unmap_one(ia, seg);
|
||||
} else {
|
||||
seg->mr_rkey = seg->mr_chunk.rl_mw->r.mw->rkey;
|
||||
seg->mr_base = param.addr;
|
||||
seg->mr_base = param.bind_info.addr;
|
||||
seg->mr_nsegs = 1;
|
||||
}
|
||||
return rc;
|
||||
@@ -1706,10 +1706,10 @@ rpcrdma_deregister_memwin_external(struct rpcrdma_mr_seg *seg,
|
||||
int rc;
|
||||
|
||||
BUG_ON(seg->mr_nsegs != 1);
|
||||
param.mr = ia->ri_bind_mem;
|
||||
param.addr = 0ULL; /* unbind */
|
||||
param.length = 0;
|
||||
param.mw_access_flags = 0;
|
||||
param.bind_info.mr = ia->ri_bind_mem;
|
||||
param.bind_info.addr = 0ULL; /* unbind */
|
||||
param.bind_info.length = 0;
|
||||
param.bind_info.mw_access_flags = 0;
|
||||
if (*r) {
|
||||
param.wr_id = (u64) (unsigned long) *r;
|
||||
param.send_flags = IB_SEND_SIGNALED;
|
||||
|
Reference in New Issue
Block a user