Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6
[safe/jmp/linux-2.6] / drivers / infiniband / hw / mlx4 / mlx4_ib.h
index 3726e45..5cf9947 100644 (file)
 #include <linux/mlx4/device.h>
 #include <linux/mlx4/doorbell.h>
 
-enum {
-       MLX4_IB_DB_PER_PAGE     = PAGE_SIZE / 4
-};
-
-struct mlx4_ib_db_pgdir;
-struct mlx4_ib_user_db_page;
-
-struct mlx4_ib_db {
-       __be32                 *db;
-       union {
-               struct mlx4_ib_db_pgdir        *pgdir;
-               struct mlx4_ib_user_db_page    *user_page;
-       }                       u;
-       dma_addr_t              dma;
-       int                     index;
-       int                     order;
-};
-
 struct mlx4_ib_ucontext {
        struct ib_ucontext      ibucontext;
        struct mlx4_uar         uar;
@@ -78,13 +60,21 @@ struct mlx4_ib_cq_buf {
        struct mlx4_mtt         mtt;
 };
 
+struct mlx4_ib_cq_resize {
+       struct mlx4_ib_cq_buf   buf;
+       int                     cqe;
+};
+
 struct mlx4_ib_cq {
        struct ib_cq            ibcq;
        struct mlx4_cq          mcq;
        struct mlx4_ib_cq_buf   buf;
-       struct mlx4_ib_db       db;
+       struct mlx4_ib_cq_resize *resize_buf;
+       struct mlx4_db          db;
        spinlock_t              lock;
+       struct mutex            resize_mutex;
        struct ib_umem         *umem;
+       struct ib_umem         *resize_umem;
 };
 
 struct mlx4_ib_mr {
@@ -110,12 +100,16 @@ struct mlx4_ib_wq {
        unsigned                tail;
 };
 
+enum mlx4_ib_qp_flags {
+       MLX4_IB_QP_LSO          = 1 << 0
+};
+
 struct mlx4_ib_qp {
        struct ib_qp            ibqp;
        struct mlx4_qp          mqp;
        struct mlx4_buf         buf;
 
-       struct mlx4_ib_db       db;
+       struct mlx4_db          db;
        struct mlx4_ib_wq       rq;
 
        u32                     doorbell_qpn;
@@ -129,6 +123,7 @@ struct mlx4_ib_qp {
        struct mlx4_mtt         mtt;
        int                     buf_size;
        struct mutex            mutex;
+       u32                     flags;
        u8                      port;
        u8                      alt_port;
        u8                      atomic_rd_en;
@@ -141,7 +136,7 @@ struct mlx4_ib_srq {
        struct ib_srq           ibsrq;
        struct mlx4_srq         msrq;
        struct mlx4_buf         buf;
-       struct mlx4_ib_db       db;
+       struct mlx4_db          db;
        u64                    *wrid;
        spinlock_t              lock;
        int                     head;
@@ -162,9 +157,6 @@ struct mlx4_ib_dev {
        struct mlx4_dev        *dev;
        void __iomem           *uar_map;
 
-       struct list_head        pgdir_list;
-       struct mutex            pgdir_mutex;
-
        struct mlx4_uar         priv_uar;
        u32                     priv_pdn;
        MLX4_DECLARE_DOORBELL_LOCK(uar_lock);
@@ -235,11 +227,9 @@ static inline struct mlx4_ib_ah *to_mah(struct ib_ah *ibah)
        return container_of(ibah, struct mlx4_ib_ah, ibah);
 }
 
-int mlx4_ib_db_alloc(struct mlx4_ib_dev *dev, struct mlx4_ib_db *db, int order);
-void mlx4_ib_db_free(struct mlx4_ib_dev *dev, struct mlx4_ib_db *db);
 int mlx4_ib_db_map_user(struct mlx4_ib_ucontext *context, unsigned long virt,
-                       struct mlx4_ib_db *db);
-void mlx4_ib_db_unmap_user(struct mlx4_ib_ucontext *context, struct mlx4_ib_db *db);
+                       struct mlx4_db *db);
+void mlx4_ib_db_unmap_user(struct mlx4_ib_ucontext *context, struct mlx4_db *db);
 
 struct ib_mr *mlx4_ib_get_dma_mr(struct ib_pd *pd, int acc);
 int mlx4_ib_umem_write_mtt(struct mlx4_ib_dev *dev, struct mlx4_mtt *mtt,
@@ -249,6 +239,8 @@ struct ib_mr *mlx4_ib_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,
                                  struct ib_udata *udata);
 int mlx4_ib_dereg_mr(struct ib_mr *mr);
 
+int mlx4_ib_modify_cq(struct ib_cq *cq, u16 cq_count, u16 cq_period);
+int mlx4_ib_resize_cq(struct ib_cq *ibcq, int entries, struct ib_udata *udata);
 struct ib_cq *mlx4_ib_create_cq(struct ib_device *ibdev, int entries, int vector,
                                struct ib_ucontext *context,
                                struct ib_udata *udata);