Sorry for nitpicking again, but.. On Mon, Oct 07, 2019 at 02:58:18PM +0300, Leon Romanovsky wrote: > @@ -37,15 +39,15 @@ static inline bool rdma_rw_can_use_mr(struct ib_device *dev, u8 port_num) > * Check if the device will use memory registration for this RW operation. > * We currently always use memory registrations for iWarp RDMA READs, and > * have a debug option to force usage of MRs. > - * > - * XXX: In the future we can hopefully fine tune this based on HCA driver > - * input. The above comment needs an updated a la: * Check if the device will use memory registration for this RW operation. * For RDMA READs we must use MRs on iWarp and can optionaly use them as an * optimaztion otherwise. Additionally we have a debug option to force usage * of MRs to help testing this code path. > if (rdma_protocol_iwarp(dev, port_num) && dir == DMA_FROM_DEVICE) > return true; > + if (dev->attrs.max_sgl_rd && dir == DMA_FROM_DEVICE && > + dma_nents > dev->attrs.max_sgl_rd) > + return true; This can be simplified to: if (dir == DMA_FROM_DEVICE && (rdma_protocol_iwarp(dev, port_num) || (dev->attrs.max_sgl_rd && dma_nents > dev->attrs.max_sgl_rd))) return true;