Lines Matching refs:mtt

201 		  struct mlx4_mtt *mtt)
206 mtt->order = -1;
207 mtt->page_shift = MLX4_ICM_PAGE_SHIFT;
210 mtt->page_shift = page_shift;
212 for (mtt->order = 0, i = 1; i < npages; i <<= 1)
213 ++mtt->order;
215 mtt->offset = mlx4_alloc_mtt_range(dev, mtt->order);
216 if (mtt->offset == -1)
250 mlx4_warn(dev, "Failed to free mtt range at:%d order:%d\n",
257 void mlx4_mtt_cleanup(struct mlx4_dev *dev, struct mlx4_mtt *mtt)
259 if (mtt->order < 0)
262 mlx4_free_mtt_range(dev, mtt->offset, mtt->order);
266 u64 mlx4_mtt_addr(struct mlx4_dev *dev, struct mlx4_mtt *mtt)
268 return (u64) mtt->offset * dev->caps.mtt_entry_sz;
433 return mlx4_mtt_init(dev, npages, page_shift, &mr->mtt);
567 mlx4_mtt_cleanup(dev, &mr->mtt);
589 mlx4_mtt_cleanup(dev, &mr->mtt);
590 mr->mtt.order = -1;
600 err = mlx4_mtt_init(dev, npages, page_shift, &mr->mtt);
609 if (mr->mtt.order < 0) {
614 &mr->mtt));
615 if (mr->mtt.page_shift == 0)
616 mpt_entry->mtt_sz = cpu_to_be32(1 << mr->mtt.order);
618 if (mr->mtt.order >= 0 && mr->mtt.page_shift == 0) {
656 mpt_entry->entity_size = cpu_to_be32(mr->mtt.page_shift);
658 if (mr->mtt.order < 0) {
663 &mr->mtt));
666 if (mr->mtt.order >= 0 && mr->mtt.page_shift == 0) {
671 mpt_entry->mtt_sz = cpu_to_be32(1 << mr->mtt.order);
697 static int mlx4_write_mtt_chunk(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
705 mtts = mlx4_table_find(&priv->mr_table.mtt_table, mtt->offset +
723 int __mlx4_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
733 max_mtts_first_page = mtts_per_page - (mtt->offset + start_index)
739 err = mlx4_write_mtt_chunk(dev, mtt, start_index, chunk, page_list);
751 int mlx4_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
760 if (mtt->order < 0)
772 inbox[0] = cpu_to_be64(mtt->offset + start_index);
791 return __mlx4_write_mtt(dev, mtt, start_index, npages, page_list);
795 int mlx4_buf_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
813 err = mlx4_write_mtt(dev, mtt, 0, buf->npages, page_list);
1076 fmr->mr.mtt.offset,