Lines Matching refs:mtt

195 		  struct mlx4_mtt *mtt)
200 mtt->order = -1;
201 mtt->page_shift = MLX4_ICM_PAGE_SHIFT;
204 mtt->page_shift = page_shift;
206 for (mtt->order = 0, i = 1; i < npages; i <<= 1)
207 ++mtt->order;
209 mtt->offset = mlx4_alloc_mtt_range(dev, mtt->order);
210 if (mtt->offset == -1)
244 mlx4_warn(dev, "Failed to free mtt range at:%d order:%d\n",
251 void mlx4_mtt_cleanup(struct mlx4_dev *dev, struct mlx4_mtt *mtt)
253 if (mtt->order < 0)
256 mlx4_free_mtt_range(dev, mtt->offset, mtt->order);
260 u64 mlx4_mtt_addr(struct mlx4_dev *dev, struct mlx4_mtt *mtt)
262 return (u64) mtt->offset * dev->caps.mtt_entry_sz;
428 return mlx4_mtt_init(dev, npages, page_shift, &mr->mtt);
562 mlx4_mtt_cleanup(dev, &mr->mtt);
584 mlx4_mtt_cleanup(dev, &mr->mtt);
585 mr->mtt.order = -1;
595 err = mlx4_mtt_init(dev, npages, page_shift, &mr->mtt);
604 if (mr->mtt.order < 0) {
609 &mr->mtt));
610 if (mr->mtt.page_shift == 0)
611 mpt_entry->mtt_sz = cpu_to_be32(1 << mr->mtt.order);
613 if (mr->mtt.order >= 0 && mr->mtt.page_shift == 0) {
651 mpt_entry->entity_size = cpu_to_be32(mr->mtt.page_shift);
653 if (mr->mtt.order < 0) {
658 &mr->mtt));
661 if (mr->mtt.order >= 0 && mr->mtt.page_shift == 0) {
666 mpt_entry->mtt_sz = cpu_to_be32(1 << mr->mtt.order);
692 static int mlx4_write_mtt_chunk(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
700 mtts = mlx4_table_find(&priv->mr_table.mtt_table, mtt->offset +
718 int __mlx4_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
728 max_mtts_first_page = mtts_per_page - (mtt->offset + start_index)
734 err = mlx4_write_mtt_chunk(dev, mtt, start_index, chunk, page_list);
746 int mlx4_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
755 if (mtt->order < 0)
767 inbox[0] = cpu_to_be64(mtt->offset + start_index);
786 return __mlx4_write_mtt(dev, mtt, start_index, npages, page_list);
790 int mlx4_buf_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
807 err = mlx4_write_mtt(dev, mtt, 0, buf->npages, page_list);