On Mon, Oct 07, 2019 at 05:12:44AM -0700, Christoph Hellwig wrote: > 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; I don't think that it simplifies and wanted to make separate checks to be separated. For example, rdma_protocol_iwarp() has nothing to do with attrs.max_sgl_rd. I'll fix comment. Thanks