• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6/drivers/infiniband/hw/mthca/

Lines Matching defs:db_tab

453 		      struct mthca_user_db_table *db_tab, int index, u64 uaddr)
466 mutex_lock(&db_tab->mutex);
470 if ((db_tab->page[i].refcount >= MTHCA_DB_REC_PER_PAGE) ||
471 (db_tab->page[i].uvirt && db_tab->page[i].uvirt != uaddr) ||
477 if (db_tab->page[i].refcount) {
478 ++db_tab->page[i].refcount;
487 sg_set_page(&db_tab->page[i].mem, pages[0], MTHCA_ICM_PAGE_SIZE,
490 ret = pci_map_sg(dev->pdev, &db_tab->page[i].mem, 1, PCI_DMA_TODEVICE);
496 ret = mthca_MAP_ICM_page(dev, sg_dma_address(&db_tab->page[i].mem),
501 pci_unmap_sg(dev->pdev, &db_tab->page[i].mem, 1, PCI_DMA_TODEVICE);
502 put_page(sg_page(&db_tab->page[i].mem));
506 db_tab->page[i].uvirt = uaddr;
507 db_tab->page[i].refcount = 1;
510 mutex_unlock(&db_tab->mutex);
515 struct mthca_user_db_table *db_tab, int index)
525 mutex_lock(&db_tab->mutex);
527 --db_tab->page[index / MTHCA_DB_REC_PER_PAGE].refcount;
529 mutex_unlock(&db_tab->mutex);
534 struct mthca_user_db_table *db_tab;
542 db_tab = kmalloc(sizeof *db_tab + npages * sizeof *db_tab->page, GFP_KERNEL);
543 if (!db_tab)
546 mutex_init(&db_tab->mutex);
548 db_tab->page[i].refcount = 0;
549 db_tab->page[i].uvirt = 0;
550 sg_init_table(&db_tab->page[i].mem, 1);
553 return db_tab;
557 struct mthca_user_db_table *db_tab)
566 if (db_tab->page[i].uvirt) {
568 pci_unmap_sg(dev->pdev, &db_tab->page[i].mem, 1, PCI_DMA_TODEVICE);
569 put_page(sg_page(&db_tab->page[i].mem));
573 kfree(db_tab);
586 mutex_lock(&dev->db_tab->mutex);
593 end = dev->db_tab->max_group1;
601 start = dev->db_tab->npages - 1;
602 end = dev->db_tab->min_group2;
612 if (dev->db_tab->page[i].db_rec &&
613 !bitmap_full(dev->db_tab->page[i].used,
615 page = dev->db_tab->page + i;
620 if (!dev->db_tab->page[i].db_rec) {
621 page = dev->db_tab->page + i;
625 if (dev->db_tab->max_group1 >= dev->db_tab->min_group2 - 1) {
631 ++dev->db_tab->max_group1;
633 --dev->db_tab->min_group2;
635 page = dev->db_tab->page + end;
672 mutex_unlock(&dev->db_tab->mutex);
686 page = dev->db_tab->page + i;
688 mutex_lock(&dev->db_tab->mutex);
691 if (i >= dev->db_tab->min_group2)
696 i >= dev->db_tab->max_group1 - 1) {
703 if (i == dev->db_tab->max_group1) {
704 --dev->db_tab->max_group1;
706 if (i == dev->db_tab->min_group2)
707 ++dev->db_tab->min_group2;
710 mutex_unlock(&dev->db_tab->mutex);
720 dev->db_tab = kmalloc(sizeof *dev->db_tab, GFP_KERNEL);
721 if (!dev->db_tab)
724 mutex_init(&dev->db_tab->mutex);
726 dev->db_tab->npages = dev->uar_table.uarc_size / MTHCA_ICM_PAGE_SIZE;
727 dev->db_tab->max_group1 = 0;
728 dev->db_tab->min_group2 = dev->db_tab->npages - 1;
730 dev->db_tab->page = kmalloc(dev->db_tab->npages *
731 sizeof *dev->db_tab->page,
733 if (!dev->db_tab->page) {
734 kfree(dev->db_tab);
738 for (i = 0; i < dev->db_tab->npages; ++i)
739 dev->db_tab->page[i].db_rec = NULL;
758 for (i = 0; i < dev->db_tab->npages; ++i) {
759 if (!dev->db_tab->page[i].db_rec)
762 if (!bitmap_empty(dev->db_tab->page[i].used, MTHCA_DB_REC_PER_PAGE))
768 dev->db_tab->page[i].db_rec,
769 dev->db_tab->page[i].mapping);
772 kfree(dev->db_tab->page);
773 kfree(dev->db_tab);