Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: mlx4_core: Add helper to move QP to ready-to-send mlx4_core: Add HW queues allocation helpers RDMA/nes: Remove volatile qualifier from struct nes_hw_cq.cq_vbase mlx4_core: CQ resizing should pass a 0 opcode modifier to MODIFY_CQ mlx4_core: Move kernel doorbell management into core IB/ehca: Bump version number to 0026 IB/ehca: Make some module parameters bool, update descriptions IB/ehca: Remove mr_largepage parameter IB/ehca: Move high-volume debug output to higher debug levels IB/ehca: Prevent posting of SQ WQEs if QP not in RTS IPoIB: Handle 4K IB MTU for UD (datagram) mode RDMA/nes: Fix adapter reset after PXE boot RDMA/nes: Print IPv4 addresses in a readable format RDMA/nes: Use print_mac() to format ethernet addresses for printing
This commit is contained in:
@@ -208,6 +208,38 @@ struct mlx4_mtt {
|
||||
int page_shift;
|
||||
};
|
||||
|
||||
enum {
|
||||
MLX4_DB_PER_PAGE = PAGE_SIZE / 4
|
||||
};
|
||||
|
||||
struct mlx4_db_pgdir {
|
||||
struct list_head list;
|
||||
DECLARE_BITMAP(order0, MLX4_DB_PER_PAGE);
|
||||
DECLARE_BITMAP(order1, MLX4_DB_PER_PAGE / 2);
|
||||
unsigned long *bits[2];
|
||||
__be32 *db_page;
|
||||
dma_addr_t db_dma;
|
||||
};
|
||||
|
||||
struct mlx4_ib_user_db_page;
|
||||
|
||||
struct mlx4_db {
|
||||
__be32 *db;
|
||||
union {
|
||||
struct mlx4_db_pgdir *pgdir;
|
||||
struct mlx4_ib_user_db_page *user_page;
|
||||
} u;
|
||||
dma_addr_t dma;
|
||||
int index;
|
||||
int order;
|
||||
};
|
||||
|
||||
struct mlx4_hwq_resources {
|
||||
struct mlx4_db db;
|
||||
struct mlx4_mtt mtt;
|
||||
struct mlx4_buf buf;
|
||||
};
|
||||
|
||||
struct mlx4_mr {
|
||||
struct mlx4_mtt mtt;
|
||||
u64 iova;
|
||||
@@ -341,6 +373,14 @@ int mlx4_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
|
||||
int mlx4_buf_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
|
||||
struct mlx4_buf *buf);
|
||||
|
||||
int mlx4_db_alloc(struct mlx4_dev *dev, struct mlx4_db *db, int order);
|
||||
void mlx4_db_free(struct mlx4_dev *dev, struct mlx4_db *db);
|
||||
|
||||
int mlx4_alloc_hwq_res(struct mlx4_dev *dev, struct mlx4_hwq_resources *wqres,
|
||||
int size, int max_direct);
|
||||
void mlx4_free_hwq_res(struct mlx4_dev *mdev, struct mlx4_hwq_resources *wqres,
|
||||
int size);
|
||||
|
||||
int mlx4_cq_alloc(struct mlx4_dev *dev, int nent, struct mlx4_mtt *mtt,
|
||||
struct mlx4_uar *uar, u64 db_rec, struct mlx4_cq *cq);
|
||||
void mlx4_cq_free(struct mlx4_dev *dev, struct mlx4_cq *cq);
|
||||
|
@@ -296,6 +296,10 @@ int mlx4_qp_modify(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
|
||||
int mlx4_qp_query(struct mlx4_dev *dev, struct mlx4_qp *qp,
|
||||
struct mlx4_qp_context *context);
|
||||
|
||||
int mlx4_qp_to_ready(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
|
||||
struct mlx4_qp_context *context,
|
||||
struct mlx4_qp *qp, enum mlx4_qp_state *qp_state);
|
||||
|
||||
static inline struct mlx4_qp *__mlx4_qp_lookup(struct mlx4_dev *dev, u32 qpn)
|
||||
{
|
||||
return radix_tree_lookup(&dev->qp_table_tree, qpn & (dev->caps.num_qps - 1));
|
||||
|
Reference in New Issue
Block a user