diff options
Diffstat (limited to 'include/linux/mlx4/device.h')
-rw-r--r-- | include/linux/mlx4/device.h | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h index 24ce6bdd540e..7d3a523160ba 100644 --- a/include/linux/mlx4/device.h +++ b/include/linux/mlx4/device.h | |||
@@ -54,6 +54,7 @@ enum { | |||
54 | MLX4_FLAG_MASTER = 1 << 2, | 54 | MLX4_FLAG_MASTER = 1 << 2, |
55 | MLX4_FLAG_SLAVE = 1 << 3, | 55 | MLX4_FLAG_SLAVE = 1 << 3, |
56 | MLX4_FLAG_SRIOV = 1 << 4, | 56 | MLX4_FLAG_SRIOV = 1 << 4, |
57 | MLX4_FLAG_OLD_REG_MAC = 1 << 6, | ||
57 | }; | 58 | }; |
58 | 59 | ||
59 | enum { | 60 | enum { |
@@ -155,7 +156,7 @@ enum { | |||
155 | MLX4_DEV_CAP_FLAG2_RSS_TOP = 1LL << 1, | 156 | MLX4_DEV_CAP_FLAG2_RSS_TOP = 1LL << 1, |
156 | MLX4_DEV_CAP_FLAG2_RSS_XOR = 1LL << 2, | 157 | MLX4_DEV_CAP_FLAG2_RSS_XOR = 1LL << 2, |
157 | MLX4_DEV_CAP_FLAG2_FS_EN = 1LL << 3, | 158 | MLX4_DEV_CAP_FLAG2_FS_EN = 1LL << 3, |
158 | MLX4_DEV_CAP_FLAGS2_REASSIGN_MAC_EN = 1LL << 4, | 159 | MLX4_DEV_CAP_FLAG2_REASSIGN_MAC_EN = 1LL << 4, |
159 | MLX4_DEV_CAP_FLAG2_TS = 1LL << 5, | 160 | MLX4_DEV_CAP_FLAG2_TS = 1LL << 5, |
160 | MLX4_DEV_CAP_FLAG2_VLAN_CONTROL = 1LL << 6, | 161 | MLX4_DEV_CAP_FLAG2_VLAN_CONTROL = 1LL << 6, |
161 | MLX4_DEV_CAP_FLAG2_FSM = 1LL << 7, | 162 | MLX4_DEV_CAP_FLAG2_FSM = 1LL << 7, |
@@ -640,16 +641,28 @@ struct mlx4_counter { | |||
640 | __be64 tx_bytes; | 641 | __be64 tx_bytes; |
641 | }; | 642 | }; |
642 | 643 | ||
644 | struct mlx4_quotas { | ||
645 | int qp; | ||
646 | int cq; | ||
647 | int srq; | ||
648 | int mpt; | ||
649 | int mtt; | ||
650 | int counter; | ||
651 | int xrcd; | ||
652 | }; | ||
653 | |||
643 | struct mlx4_dev { | 654 | struct mlx4_dev { |
644 | struct pci_dev *pdev; | 655 | struct pci_dev *pdev; |
645 | unsigned long flags; | 656 | unsigned long flags; |
646 | unsigned long num_slaves; | 657 | unsigned long num_slaves; |
647 | struct mlx4_caps caps; | 658 | struct mlx4_caps caps; |
648 | struct mlx4_phys_caps phys_caps; | 659 | struct mlx4_phys_caps phys_caps; |
660 | struct mlx4_quotas quotas; | ||
649 | struct radix_tree_root qp_table_tree; | 661 | struct radix_tree_root qp_table_tree; |
650 | u8 rev_id; | 662 | u8 rev_id; |
651 | char board_id[MLX4_BOARD_ID_LEN]; | 663 | char board_id[MLX4_BOARD_ID_LEN]; |
652 | int num_vfs; | 664 | int num_vfs; |
665 | int numa_node; | ||
653 | int oper_log_mgm_entry_size; | 666 | int oper_log_mgm_entry_size; |
654 | u64 regid_promisc_array[MLX4_MAX_PORTS + 1]; | 667 | u64 regid_promisc_array[MLX4_MAX_PORTS + 1]; |
655 | u64 regid_allmulti_array[MLX4_MAX_PORTS + 1]; | 668 | u64 regid_allmulti_array[MLX4_MAX_PORTS + 1]; |
@@ -771,6 +784,12 @@ static inline int mlx4_is_master(struct mlx4_dev *dev) | |||
771 | return dev->flags & MLX4_FLAG_MASTER; | 784 | return dev->flags & MLX4_FLAG_MASTER; |
772 | } | 785 | } |
773 | 786 | ||
787 | static inline int mlx4_num_reserved_sqps(struct mlx4_dev *dev) | ||
788 | { | ||
789 | return dev->phys_caps.base_sqpn + 8 + | ||
790 | 16 * MLX4_MFUNC_MAX * !!mlx4_is_master(dev); | ||
791 | } | ||
792 | |||
774 | static inline int mlx4_is_qp_reserved(struct mlx4_dev *dev, u32 qpn) | 793 | static inline int mlx4_is_qp_reserved(struct mlx4_dev *dev, u32 qpn) |
775 | { | 794 | { |
776 | return (qpn < dev->phys_caps.base_sqpn + 8 + | 795 | return (qpn < dev->phys_caps.base_sqpn + 8 + |
@@ -816,7 +835,7 @@ void mlx4_xrcd_free(struct mlx4_dev *dev, u32 xrcdn); | |||
816 | 835 | ||
817 | int mlx4_uar_alloc(struct mlx4_dev *dev, struct mlx4_uar *uar); | 836 | int mlx4_uar_alloc(struct mlx4_dev *dev, struct mlx4_uar *uar); |
818 | void mlx4_uar_free(struct mlx4_dev *dev, struct mlx4_uar *uar); | 837 | void mlx4_uar_free(struct mlx4_dev *dev, struct mlx4_uar *uar); |
819 | int mlx4_bf_alloc(struct mlx4_dev *dev, struct mlx4_bf *bf); | 838 | int mlx4_bf_alloc(struct mlx4_dev *dev, struct mlx4_bf *bf, int node); |
820 | void mlx4_bf_free(struct mlx4_dev *dev, struct mlx4_bf *bf); | 839 | void mlx4_bf_free(struct mlx4_dev *dev, struct mlx4_bf *bf); |
821 | 840 | ||
822 | int mlx4_mtt_init(struct mlx4_dev *dev, int npages, int page_shift, | 841 | int mlx4_mtt_init(struct mlx4_dev *dev, int npages, int page_shift, |
@@ -1078,7 +1097,7 @@ int mlx4_SET_PORT_SCHEDULER(struct mlx4_dev *dev, u8 port, u8 *tc_tx_bw, | |||
1078 | u8 *pg, u16 *ratelimit); | 1097 | u8 *pg, u16 *ratelimit); |
1079 | int mlx4_find_cached_vlan(struct mlx4_dev *dev, u8 port, u16 vid, int *idx); | 1098 | int mlx4_find_cached_vlan(struct mlx4_dev *dev, u8 port, u16 vid, int *idx); |
1080 | int mlx4_register_vlan(struct mlx4_dev *dev, u8 port, u16 vlan, int *index); | 1099 | int mlx4_register_vlan(struct mlx4_dev *dev, u8 port, u16 vlan, int *index); |
1081 | void mlx4_unregister_vlan(struct mlx4_dev *dev, u8 port, int index); | 1100 | void mlx4_unregister_vlan(struct mlx4_dev *dev, u8 port, u16 vlan); |
1082 | 1101 | ||
1083 | int mlx4_map_phys_fmr(struct mlx4_dev *dev, struct mlx4_fmr *fmr, u64 *page_list, | 1102 | int mlx4_map_phys_fmr(struct mlx4_dev *dev, struct mlx4_fmr *fmr, u64 *page_list, |
1084 | int npages, u64 iova, u32 *lkey, u32 *rkey); | 1103 | int npages, u64 iova, u32 *lkey, u32 *rkey); |