| .. | .. |
|---|
| 47 | 47 | #define DEFAULT_UAR_PAGE_SHIFT 12 |
|---|
| 48 | 48 | |
|---|
| 49 | 49 | #define MAX_MSIX_P_PORT 17 |
|---|
| 50 | | -#define MAX_MSIX 64 |
|---|
| 50 | +#define MAX_MSIX 128 |
|---|
| 51 | 51 | #define MIN_MSIX_P_PORT 5 |
|---|
| 52 | 52 | #define MLX4_IS_LEGACY_EQ_MODE(dev_cap) ((dev_cap).num_comp_vectors < \ |
|---|
| 53 | 53 | (dev_cap).num_ports * MIN_MSIX_P_PORT) |
|---|
| .. | .. |
|---|
| 226 | 226 | MLX4_DEV_CAP_FLAG2_SL_TO_VL_CHANGE_EVENT = 1ULL << 37, |
|---|
| 227 | 227 | MLX4_DEV_CAP_FLAG2_USER_MAC_EN = 1ULL << 38, |
|---|
| 228 | 228 | MLX4_DEV_CAP_FLAG2_DRIVER_VERSION_TO_FW = 1ULL << 39, |
|---|
| 229 | + MLX4_DEV_CAP_FLAG2_SW_CQ_INIT = 1ULL << 40, |
|---|
| 229 | 230 | }; |
|---|
| 230 | 231 | |
|---|
| 231 | 232 | enum { |
|---|
| .. | .. |
|---|
| 572 | 573 | int reserved_eqs; |
|---|
| 573 | 574 | int num_comp_vectors; |
|---|
| 574 | 575 | int num_mpts; |
|---|
| 575 | | - int max_fmr_maps; |
|---|
| 576 | 576 | int num_mtts; |
|---|
| 577 | 577 | int fmr_reserved_mtts; |
|---|
| 578 | 578 | int reserved_mtts; |
|---|
| .. | .. |
|---|
| 705 | 705 | u32 pd; |
|---|
| 706 | 706 | enum mlx4_mw_type type; |
|---|
| 707 | 707 | int enabled; |
|---|
| 708 | | -}; |
|---|
| 709 | | - |
|---|
| 710 | | -struct mlx4_fmr { |
|---|
| 711 | | - struct mlx4_mr mr; |
|---|
| 712 | | - struct mlx4_mpt_entry *mpt; |
|---|
| 713 | | - __be64 *mtts; |
|---|
| 714 | | - dma_addr_t dma_handle; |
|---|
| 715 | | - int max_pages; |
|---|
| 716 | | - int max_maps; |
|---|
| 717 | | - int maps; |
|---|
| 718 | | - u8 page_shift; |
|---|
| 719 | 708 | }; |
|---|
| 720 | 709 | |
|---|
| 721 | 710 | struct mlx4_uar { |
|---|
| .. | .. |
|---|
| 1137 | 1126 | |
|---|
| 1138 | 1127 | int mlx4_cq_alloc(struct mlx4_dev *dev, int nent, struct mlx4_mtt *mtt, |
|---|
| 1139 | 1128 | struct mlx4_uar *uar, u64 db_rec, struct mlx4_cq *cq, |
|---|
| 1140 | | - unsigned vector, int collapsed, int timestamp_en); |
|---|
| 1129 | + unsigned int vector, int collapsed, int timestamp_en, |
|---|
| 1130 | + void *buf_addr, bool user_cq); |
|---|
| 1141 | 1131 | void mlx4_cq_free(struct mlx4_dev *dev, struct mlx4_cq *cq); |
|---|
| 1142 | 1132 | int mlx4_qp_reserve_range(struct mlx4_dev *dev, int cnt, int align, |
|---|
| 1143 | 1133 | int *base, u8 flags, u8 usage); |
|---|
| .. | .. |
|---|
| 1411 | 1401 | int mlx4_register_vlan(struct mlx4_dev *dev, u8 port, u16 vlan, int *index); |
|---|
| 1412 | 1402 | void mlx4_unregister_vlan(struct mlx4_dev *dev, u8 port, u16 vlan); |
|---|
| 1413 | 1403 | |
|---|
| 1414 | | -int mlx4_map_phys_fmr(struct mlx4_dev *dev, struct mlx4_fmr *fmr, u64 *page_list, |
|---|
| 1415 | | - int npages, u64 iova, u32 *lkey, u32 *rkey); |
|---|
| 1416 | | -int mlx4_fmr_alloc(struct mlx4_dev *dev, u32 pd, u32 access, int max_pages, |
|---|
| 1417 | | - int max_maps, u8 page_shift, struct mlx4_fmr *fmr); |
|---|
| 1418 | | -int mlx4_fmr_enable(struct mlx4_dev *dev, struct mlx4_fmr *fmr); |
|---|
| 1419 | | -void mlx4_fmr_unmap(struct mlx4_dev *dev, struct mlx4_fmr *fmr, |
|---|
| 1420 | | - u32 *lkey, u32 *rkey); |
|---|
| 1421 | | -int mlx4_fmr_free(struct mlx4_dev *dev, struct mlx4_fmr *fmr); |
|---|
| 1422 | 1404 | int mlx4_SYNC_TPT(struct mlx4_dev *dev); |
|---|
| 1423 | 1405 | int mlx4_test_interrupt(struct mlx4_dev *dev, int vector); |
|---|
| 1424 | 1406 | int mlx4_test_async(struct mlx4_dev *dev); |
|---|
| .. | .. |
|---|
| 1521 | 1503 | int mlx4_vf_get_enable_smi_admin(struct mlx4_dev *dev, int slave, int port); |
|---|
| 1522 | 1504 | int mlx4_vf_set_enable_smi_admin(struct mlx4_dev *dev, int slave, int port, |
|---|
| 1523 | 1505 | int enable); |
|---|
| 1506 | + |
|---|
| 1507 | +struct mlx4_mpt_entry; |
|---|
| 1524 | 1508 | int mlx4_mr_hw_get_mpt(struct mlx4_dev *dev, struct mlx4_mr *mmr, |
|---|
| 1525 | 1509 | struct mlx4_mpt_entry ***mpt_entry); |
|---|
| 1526 | 1510 | int mlx4_mr_hw_write_mpt(struct mlx4_dev *dev, struct mlx4_mr *mmr, |
|---|