• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/net/mlx4/

Lines Matching refs:fmr

505 static inline int mlx4_check_fmr(struct mlx4_fmr *fmr, u64 *page_list,
510 if (npages > fmr->max_pages)
513 page_mask = (1 << fmr->page_shift) - 1;
526 if (fmr->maps >= fmr->max_maps)
532 int mlx4_map_phys_fmr(struct mlx4_dev *dev, struct mlx4_fmr *fmr, u64 *page_list,
538 err = mlx4_check_fmr(fmr, page_list, npages, iova);
542 ++fmr->maps;
544 key = key_to_hw_index(fmr->mr.key);
546 *lkey = *rkey = fmr->mr.key = hw_index_to_key(key);
548 *(u8 *) fmr->mpt = MLX4_MPT_STATUS_SW;
553 dma_sync_single_for_cpu(&dev->pdev->dev, fmr->dma_handle,
557 fmr->mtts[i] = cpu_to_be64(page_list[i] | MLX4_MTT_FLAG_PRESENT);
559 dma_sync_single_for_device(&dev->pdev->dev, fmr->dma_handle,
562 fmr->mpt->key = cpu_to_be32(key);
563 fmr->mpt->lkey = cpu_to_be32(key);
564 fmr->mpt->length = cpu_to_be64(npages * (1ull << fmr->page_shift));
565 fmr->mpt->start = cpu_to_be64(iova);
570 *(u8 *) fmr->mpt = MLX4_MPT_STATUS_HW;
580 int max_maps, u8 page_shift, struct mlx4_fmr *fmr)
590 if (max_pages * sizeof *fmr->mtts > PAGE_SIZE)
593 fmr->page_shift = page_shift;
594 fmr->max_pages = max_pages;
595 fmr->max_maps = max_maps;
596 fmr->maps = 0;
599 page_shift, &fmr->mr);
603 mtt_seg = fmr->mr.mtt.first_seg * dev->caps.mtt_entry_sz;
605 fmr->mtts = mlx4_table_find(&priv->mr_table.mtt_table,
606 fmr->mr.mtt.first_seg,
607 &fmr->dma_handle);
608 if (!fmr->mtts) {
616 mlx4_mr_free(dev, &fmr->mr);
621 int mlx4_fmr_enable(struct mlx4_dev *dev, struct mlx4_fmr *fmr)
626 err = mlx4_mr_enable(dev, &fmr->mr);
630 fmr->mpt = mlx4_table_find(&priv->mr_table.dmpt_table,
631 key_to_hw_index(fmr->mr.key), NULL);
632 if (!fmr->mpt)
639 void mlx4_fmr_unmap(struct mlx4_dev *dev, struct mlx4_fmr *fmr,
642 if (!fmr->maps)
645 fmr->maps = 0;
647 *(u8 *) fmr->mpt = MLX4_MPT_STATUS_SW;
651 int mlx4_fmr_free(struct mlx4_dev *dev, struct mlx4_fmr *fmr)
653 if (fmr->maps)
656 fmr->mr.enabled = 0;
657 mlx4_mr_free(dev, &fmr->mr);