Hi Anna- Transport header encoding indexes some arrays. gcc doesn't seem to be able to optimize the use of these arrays correctly (as it does in other areas), and is instead using expensive integer multiplication to compute array indices. These two patches refactor the logic used during transport header construction to eliminate the use of array[index] and instead use *array++. This eliminates the use of imul instructions on x86. As before, this is strictly a change to XDR encoding, so I have not copied linux-rdma on these patches. Please have a look at these and let me know if they are not acceptable for v4.14. --- Chuck Lever (2): xprtrdma: Remove imul instructions from rpcrdma_convert_iovs() xprtrdma: Remove imul instructions from chunk list encoders net/sunrpc/xprtrdma/fmr_ops.c | 10 +-- net/sunrpc/xprtrdma/frwr_ops.c | 12 ++- net/sunrpc/xprtrdma/rpc_rdma.c | 150 ++++++++++++++++++--------------------- net/sunrpc/xprtrdma/xprt_rdma.h | 3 + 4 files changed, 82 insertions(+), 93 deletions(-) -- Chuck Lever -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html