aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/mlx4
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/mlx4')
-rw-r--r--include/linux/mlx4/cmd.h4
-rw-r--r--include/linux/mlx4/device.h17
-rw-r--r--include/linux/mlx4/qp.h6
3 files changed, 25 insertions, 2 deletions
diff --git a/include/linux/mlx4/cmd.h b/include/linux/mlx4/cmd.h
index 9958ff2cad3c..1f3860a8a109 100644
--- a/include/linux/mlx4/cmd.h
+++ b/include/linux/mlx4/cmd.h
@@ -150,6 +150,10 @@ enum {
150 /* statistics commands */ 150 /* statistics commands */
151 MLX4_CMD_QUERY_IF_STAT = 0X54, 151 MLX4_CMD_QUERY_IF_STAT = 0X54,
152 MLX4_CMD_SET_IF_STAT = 0X55, 152 MLX4_CMD_SET_IF_STAT = 0X55,
153
154 /* set port opcode modifiers */
155 MLX4_SET_PORT_PRIO2TC = 0x8,
156 MLX4_SET_PORT_SCHEDULER = 0x9,
153}; 157};
154 158
155enum { 159enum {
diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h
index 834c96c5d879..6a8f002b8ed3 100644
--- a/include/linux/mlx4/device.h
+++ b/include/linux/mlx4/device.h
@@ -64,6 +64,7 @@ enum {
64 MLX4_MAX_NUM_PF = 16, 64 MLX4_MAX_NUM_PF = 16,
65 MLX4_MAX_NUM_VF = 64, 65 MLX4_MAX_NUM_VF = 64,
66 MLX4_MFUNC_MAX = 80, 66 MLX4_MFUNC_MAX = 80,
67 MLX4_MAX_EQ_NUM = 1024,
67 MLX4_MFUNC_EQ_NUM = 4, 68 MLX4_MFUNC_EQ_NUM = 4,
68 MLX4_MFUNC_MAX_EQES = 8, 69 MLX4_MFUNC_MAX_EQES = 8,
69 MLX4_MFUNC_EQE_MASK = (MLX4_MFUNC_MAX_EQES - 1) 70 MLX4_MFUNC_EQE_MASK = (MLX4_MFUNC_MAX_EQES - 1)
@@ -98,6 +99,12 @@ enum {
98 MLX4_DEV_CAP_FLAG_SENSE_SUPPORT = 1LL << 55 99 MLX4_DEV_CAP_FLAG_SENSE_SUPPORT = 1LL << 55
99}; 100};
100 101
102enum {
103 MLX4_DEV_CAP_FLAG2_RSS = 1LL << 0,
104 MLX4_DEV_CAP_FLAG2_RSS_TOP = 1LL << 1,
105 MLX4_DEV_CAP_FLAG2_RSS_XOR = 1LL << 2
106};
107
101#define MLX4_ATTR_EXTENDED_PORT_INFO cpu_to_be16(0xff90) 108#define MLX4_ATTR_EXTENDED_PORT_INFO cpu_to_be16(0xff90)
102 109
103enum { 110enum {
@@ -233,6 +240,10 @@ static inline u64 mlx4_fw_ver(u64 major, u64 minor, u64 subminor)
233 return (major << 32) | (minor << 16) | subminor; 240 return (major << 32) | (minor << 16) | subminor;
234} 241}
235 242
243struct mlx4_phys_caps {
244 u32 num_phys_eqs;
245};
246
236struct mlx4_caps { 247struct mlx4_caps {
237 u64 fw_ver; 248 u64 fw_ver;
238 u32 function; 249 u32 function;
@@ -292,11 +303,13 @@ struct mlx4_caps {
292 u32 max_msg_sz; 303 u32 max_msg_sz;
293 u32 page_size_cap; 304 u32 page_size_cap;
294 u64 flags; 305 u64 flags;
306 u64 flags2;
295 u32 bmme_flags; 307 u32 bmme_flags;
296 u32 reserved_lkey; 308 u32 reserved_lkey;
297 u16 stat_rate_support; 309 u16 stat_rate_support;
298 u8 port_width_cap[MLX4_MAX_PORTS + 1]; 310 u8 port_width_cap[MLX4_MAX_PORTS + 1];
299 int max_gso_sz; 311 int max_gso_sz;
312 int max_rss_tbl_sz;
300 int reserved_qps_cnt[MLX4_NUM_QP_REGION]; 313 int reserved_qps_cnt[MLX4_NUM_QP_REGION];
301 int reserved_qps; 314 int reserved_qps;
302 int reserved_qps_base[MLX4_NUM_QP_REGION]; 315 int reserved_qps_base[MLX4_NUM_QP_REGION];
@@ -491,6 +504,7 @@ struct mlx4_dev {
491 unsigned long flags; 504 unsigned long flags;
492 unsigned long num_slaves; 505 unsigned long num_slaves;
493 struct mlx4_caps caps; 506 struct mlx4_caps caps;
507 struct mlx4_phys_caps phys_caps;
494 struct radix_tree_root qp_table_tree; 508 struct radix_tree_root qp_table_tree;
495 u8 rev_id; 509 u8 rev_id;
496 char board_id[MLX4_BOARD_ID_LEN]; 510 char board_id[MLX4_BOARD_ID_LEN];
@@ -628,6 +642,9 @@ int mlx4_SET_PORT_general(struct mlx4_dev *dev, u8 port, int mtu,
628 u8 pptx, u8 pfctx, u8 pprx, u8 pfcrx); 642 u8 pptx, u8 pfctx, u8 pprx, u8 pfcrx);
629int mlx4_SET_PORT_qpn_calc(struct mlx4_dev *dev, u8 port, u32 base_qpn, 643int mlx4_SET_PORT_qpn_calc(struct mlx4_dev *dev, u8 port, u32 base_qpn,
630 u8 promisc); 644 u8 promisc);
645int mlx4_SET_PORT_PRIO2TC(struct mlx4_dev *dev, u8 port, u8 *prio2tc);
646int mlx4_SET_PORT_SCHEDULER(struct mlx4_dev *dev, u8 port, u8 *tc_tx_bw,
647 u8 *pg, u16 *ratelimit);
631int mlx4_find_cached_vlan(struct mlx4_dev *dev, u8 port, u16 vid, int *idx); 648int mlx4_find_cached_vlan(struct mlx4_dev *dev, u8 port, u16 vid, int *idx);
632int mlx4_register_vlan(struct mlx4_dev *dev, u8 port, u16 vlan, int *index); 649int mlx4_register_vlan(struct mlx4_dev *dev, u8 port, u16 vlan, int *index);
633void mlx4_unregister_vlan(struct mlx4_dev *dev, u8 port, int index); 650void mlx4_unregister_vlan(struct mlx4_dev *dev, u8 port, int index);
diff --git a/include/linux/mlx4/qp.h b/include/linux/mlx4/qp.h
index 091f9e7dc8b9..338388ba260a 100644
--- a/include/linux/mlx4/qp.h
+++ b/include/linux/mlx4/qp.h
@@ -139,7 +139,8 @@ struct mlx4_qp_path {
139 u8 rgid[16]; 139 u8 rgid[16];
140 u8 sched_queue; 140 u8 sched_queue;
141 u8 vlan_index; 141 u8 vlan_index;
142 u8 reserved3[2]; 142 u8 feup;
143 u8 reserved3;
143 u8 reserved4[2]; 144 u8 reserved4[2];
144 u8 dmac[6]; 145 u8 dmac[6];
145}; 146};
@@ -233,7 +234,8 @@ struct mlx4_wqe_mlx_seg {
233 u8 owner; 234 u8 owner;
234 u8 reserved1[2]; 235 u8 reserved1[2];
235 u8 opcode; 236 u8 opcode;
236 u8 reserved2[3]; 237 __be16 sched_prio;
238 u8 reserved2;
237 u8 size; 239 u8 size;
238 /* 240 /*
239 * [17] VL15 241 * [17] VL15