Lines Matching refs:db
685 struct mlx4_db *db, int order) in mlx4_alloc_db_from_pgdir() argument
706 db->u.pgdir = pgdir; in mlx4_alloc_db_from_pgdir()
707 db->index = i; in mlx4_alloc_db_from_pgdir()
708 db->db = pgdir->db_page + db->index; in mlx4_alloc_db_from_pgdir()
709 db->dma = pgdir->db_dma + db->index * 4; in mlx4_alloc_db_from_pgdir()
710 db->order = order; in mlx4_alloc_db_from_pgdir()
715 int mlx4_db_alloc(struct mlx4_dev *dev, struct mlx4_db *db, int order) in mlx4_db_alloc() argument
724 if (!mlx4_alloc_db_from_pgdir(pgdir, db, order)) in mlx4_db_alloc()
736 WARN_ON(mlx4_alloc_db_from_pgdir(pgdir, db, order)); in mlx4_db_alloc()
745 void mlx4_db_free(struct mlx4_dev *dev, struct mlx4_db *db) in mlx4_db_free() argument
753 o = db->order; in mlx4_db_free()
754 i = db->index; in mlx4_db_free()
756 if (db->order == 0 && test_bit(i ^ 1, db->u.pgdir->order0)) { in mlx4_db_free()
757 clear_bit(i ^ 1, db->u.pgdir->order0); in mlx4_db_free()
761 set_bit(i, db->u.pgdir->bits[o]); in mlx4_db_free()
763 if (bitmap_full(db->u.pgdir->order1, MLX4_DB_PER_PAGE / 2)) { in mlx4_db_free()
765 db->u.pgdir->db_page, db->u.pgdir->db_dma); in mlx4_db_free()
766 list_del(&db->u.pgdir->list); in mlx4_db_free()
767 kfree(db->u.pgdir); in mlx4_db_free()
779 err = mlx4_db_alloc(dev, &wqres->db, 1); in mlx4_alloc_hwq_res()
783 *wqres->db.db = 0; in mlx4_alloc_hwq_res()
805 mlx4_db_free(dev, &wqres->db); in mlx4_alloc_hwq_res()
816 mlx4_db_free(dev, &wqres->db); in mlx4_free_hwq_res()