diff options
Diffstat (limited to 'include/linux/mlx4')
| -rw-r--r-- | include/linux/mlx4/cmd.h | 6 | ||||
| -rw-r--r-- | include/linux/mlx4/device.h | 25 |
2 files changed, 24 insertions, 7 deletions
diff --git a/include/linux/mlx4/cmd.h b/include/linux/mlx4/cmd.h index cd1fdf75103b..8df61bc5da00 100644 --- a/include/linux/mlx4/cmd.h +++ b/include/linux/mlx4/cmd.h | |||
| @@ -154,10 +154,6 @@ enum { | |||
| 154 | MLX4_CMD_QUERY_IF_STAT = 0X54, | 154 | MLX4_CMD_QUERY_IF_STAT = 0X54, |
| 155 | MLX4_CMD_SET_IF_STAT = 0X55, | 155 | MLX4_CMD_SET_IF_STAT = 0X55, |
| 156 | 156 | ||
| 157 | /* set port opcode modifiers */ | ||
| 158 | MLX4_SET_PORT_PRIO2TC = 0x8, | ||
| 159 | MLX4_SET_PORT_SCHEDULER = 0x9, | ||
| 160 | |||
| 161 | /* register/delete flow steering network rules */ | 157 | /* register/delete flow steering network rules */ |
| 162 | MLX4_QP_FLOW_STEERING_ATTACH = 0x65, | 158 | MLX4_QP_FLOW_STEERING_ATTACH = 0x65, |
| 163 | MLX4_QP_FLOW_STEERING_DETACH = 0x66, | 159 | MLX4_QP_FLOW_STEERING_DETACH = 0x66, |
| @@ -182,6 +178,8 @@ enum { | |||
| 182 | MLX4_SET_PORT_VLAN_TABLE = 0x3, | 178 | MLX4_SET_PORT_VLAN_TABLE = 0x3, |
| 183 | MLX4_SET_PORT_PRIO_MAP = 0x4, | 179 | MLX4_SET_PORT_PRIO_MAP = 0x4, |
| 184 | MLX4_SET_PORT_GID_TABLE = 0x5, | 180 | MLX4_SET_PORT_GID_TABLE = 0x5, |
| 181 | MLX4_SET_PORT_PRIO2TC = 0x8, | ||
| 182 | MLX4_SET_PORT_SCHEDULER = 0x9, | ||
| 185 | }; | 183 | }; |
| 186 | 184 | ||
| 187 | enum { | 185 | enum { |
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); |
