mlx4_core: Add support for multiple completion event vectors

When using MSI-X mode, create a completion event queue for each CPU.
Report the number of completion EQs in a new struct mlx4_caps member,
num_comp_vectors, and extend the mlx4_cq_alloc() interface with a
vector parameter so that consumers can specify which completion EQ
should be used to report events for the CQ being created.

Signed-off-by: Yevgeny Petrilin <yevgenyp@mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
Yevgeny Petrilin
2008-12-22 07:15:03 -08:00
committed by Roland Dreier
orang tua 061e41fdb5
melakukan b8dd786f94
10 mengubah file dengan 157 tambahan dan 63 penghapusan

Melihat File

@@ -62,12 +62,6 @@ enum {
MLX4_MTT_ENTRY_PER_SEG = 8
};
enum {
MLX4_EQ_ASYNC,
MLX4_EQ_COMP,
MLX4_NUM_EQ
};
enum {
MLX4_NUM_PDS = 1 << 15
};
@@ -205,10 +199,11 @@ struct mlx4_cq_table {
struct mlx4_eq_table {
struct mlx4_bitmap bitmap;
char *irq_names;
void __iomem *clr_int;
void __iomem *uar_map[(MLX4_NUM_EQ + 6) / 4];
void __iomem **uar_map;
u32 clr_mask;
struct mlx4_eq eq[MLX4_NUM_EQ];
struct mlx4_eq *eq;
u64 icm_virt;
struct page *icm_page;
dma_addr_t icm_dma;
@@ -328,6 +323,9 @@ void mlx4_bitmap_cleanup(struct mlx4_bitmap *bitmap);
int mlx4_reset(struct mlx4_dev *dev);
int mlx4_alloc_eq_table(struct mlx4_dev *dev);
void mlx4_free_eq_table(struct mlx4_dev *dev);
int mlx4_init_pd_table(struct mlx4_dev *dev);
int mlx4_init_uar_table(struct mlx4_dev *dev);
int mlx4_init_mr_table(struct mlx4_dev *dev);