|
@@ -543,11 +543,8 @@ rpcrdma_ia_open(struct rpcrdma_xprt *xprt, struct sockaddr *addr, int memreg)
|
|
|
}
|
|
|
|
|
|
if (memreg == RPCRDMA_FRMR) {
|
|
|
- /* Requires both frmr reg and local dma lkey */
|
|
|
- if (((devattr->device_cap_flags &
|
|
|
- (IB_DEVICE_MEM_MGT_EXTENSIONS|IB_DEVICE_LOCAL_DMA_LKEY)) !=
|
|
|
- (IB_DEVICE_MEM_MGT_EXTENSIONS|IB_DEVICE_LOCAL_DMA_LKEY)) ||
|
|
|
- (devattr->max_fast_reg_page_list_len == 0)) {
|
|
|
+ if (!(devattr->device_cap_flags & IB_DEVICE_MEM_MGT_EXTENSIONS) ||
|
|
|
+ (devattr->max_fast_reg_page_list_len == 0)) {
|
|
|
dprintk("RPC: %s: FRMR registration "
|
|
|
"not supported by HCA\n", __func__);
|
|
|
memreg = RPCRDMA_MTHCAFMR;
|
|
@@ -557,6 +554,7 @@ rpcrdma_ia_open(struct rpcrdma_xprt *xprt, struct sockaddr *addr, int memreg)
|
|
|
if (!ia->ri_device->alloc_fmr) {
|
|
|
dprintk("RPC: %s: MTHCAFMR registration "
|
|
|
"not supported by HCA\n", __func__);
|
|
|
+ rc = -EINVAL;
|
|
|
goto out3;
|
|
|
}
|
|
|
}
|