| /* |
| * Copyright (c) 2015 Oracle. All rights reserved. |
| * Copyright (c) 2003-2007 Network Appliance, Inc. All rights reserved. |
| */ |
| |
| /* Lightweight memory registration using Fast Memory Regions (FMR). |
| * Referred to sometimes as MTHCAFMR mode. |
| * |
| * FMR uses synchronous memory registration and deregistration. |
| * FMR registration is known to be fast, but FMR deregistration |
| * can take tens of usecs to complete. |
| */ |
| |
| #include "xprt_rdma.h" |
| |
| #if IS_ENABLED(CONFIG_SUNRPC_DEBUG) |
| # define RPCDBG_FACILITY RPCDBG_TRANS |
| #endif |
| |
| /* Maximum scatter/gather per FMR */ |
| #define RPCRDMA_MAX_FMR_SGES (64) |
| |
| /* FMR mode conveys up to 64 pages of payload per chunk segment. |
| */ |
| static size_t |
| fmr_op_maxpages(struct rpcrdma_xprt *r_xprt) |
| { |
| return min_t(unsigned int, RPCRDMA_MAX_DATA_SEGS, |
| rpcrdma_max_segments(r_xprt) * RPCRDMA_MAX_FMR_SGES); |
| } |
| |
| const struct rpcrdma_memreg_ops rpcrdma_fmr_memreg_ops = { |
| .ro_maxpages = fmr_op_maxpages, |
| .ro_displayname = "fmr", |
| }; |