aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/mlx4/device.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/mlx4/device.h')
-rw-r--r--include/linux/mlx4/device.h42
1 files changed, 41 insertions, 1 deletions
diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h
index 7a7f9c1e679a..a7b15bc7648e 100644
--- a/include/linux/mlx4/device.h
+++ b/include/linux/mlx4/device.h
@@ -67,7 +67,8 @@ enum {
67 MLX4_DEV_CAP_FLAG_ATOMIC = 1 << 18, 67 MLX4_DEV_CAP_FLAG_ATOMIC = 1 << 18,
68 MLX4_DEV_CAP_FLAG_RAW_MCAST = 1 << 19, 68 MLX4_DEV_CAP_FLAG_RAW_MCAST = 1 << 19,
69 MLX4_DEV_CAP_FLAG_UD_AV_PORT = 1 << 20, 69 MLX4_DEV_CAP_FLAG_UD_AV_PORT = 1 << 20,
70 MLX4_DEV_CAP_FLAG_UD_MCAST = 1 << 21 70 MLX4_DEV_CAP_FLAG_UD_MCAST = 1 << 21,
71 MLX4_DEV_CAP_FLAG_IBOE = 1 << 30
71}; 72};
72 73
73enum { 74enum {
@@ -171,6 +172,10 @@ enum {
171 MLX4_NUM_FEXCH = 64 * 1024, 172 MLX4_NUM_FEXCH = 64 * 1024,
172}; 173};
173 174
175enum {
176 MLX4_MAX_FAST_REG_PAGES = 511,
177};
178
174static inline u64 mlx4_fw_ver(u64 major, u64 minor, u64 subminor) 179static inline u64 mlx4_fw_ver(u64 major, u64 minor, u64 subminor)
175{ 180{
176 return (major << 32) | (minor << 16) | subminor; 181 return (major << 32) | (minor << 16) | subminor;
@@ -186,6 +191,10 @@ struct mlx4_caps {
186 int eth_mtu_cap[MLX4_MAX_PORTS + 1]; 191 int eth_mtu_cap[MLX4_MAX_PORTS + 1];
187 int gid_table_len[MLX4_MAX_PORTS + 1]; 192 int gid_table_len[MLX4_MAX_PORTS + 1];
188 int pkey_table_len[MLX4_MAX_PORTS + 1]; 193 int pkey_table_len[MLX4_MAX_PORTS + 1];
194 int trans_type[MLX4_MAX_PORTS + 1];
195 int vendor_oui[MLX4_MAX_PORTS + 1];
196 int wavelength[MLX4_MAX_PORTS + 1];
197 u64 trans_code[MLX4_MAX_PORTS + 1];
189 int local_ca_ack_delay; 198 int local_ca_ack_delay;
190 int num_uars; 199 int num_uars;
191 int bf_reg_size; 200 int bf_reg_size;
@@ -229,6 +238,8 @@ struct mlx4_caps {
229 u32 bmme_flags; 238 u32 bmme_flags;
230 u32 reserved_lkey; 239 u32 reserved_lkey;
231 u16 stat_rate_support; 240 u16 stat_rate_support;
241 int udp_rss;
242 int loopback_support;
232 u8 port_width_cap[MLX4_MAX_PORTS + 1]; 243 u8 port_width_cap[MLX4_MAX_PORTS + 1];
233 int max_gso_sz; 244 int max_gso_sz;
234 int reserved_qps_cnt[MLX4_NUM_QP_REGION]; 245 int reserved_qps_cnt[MLX4_NUM_QP_REGION];
@@ -373,6 +384,27 @@ struct mlx4_av {
373 u8 dgid[16]; 384 u8 dgid[16];
374}; 385};
375 386
387struct mlx4_eth_av {
388 __be32 port_pd;
389 u8 reserved1;
390 u8 smac_idx;
391 u16 reserved2;
392 u8 reserved3;
393 u8 gid_index;
394 u8 stat_rate;
395 u8 hop_limit;
396 __be32 sl_tclass_flowlabel;
397 u8 dgid[16];
398 u32 reserved4[2];
399 __be16 vlan;
400 u8 mac[6];
401};
402
403union mlx4_ext_av {
404 struct mlx4_av ib;
405 struct mlx4_eth_av eth;
406};
407
376struct mlx4_dev { 408struct mlx4_dev {
377 struct pci_dev *pdev; 409 struct pci_dev *pdev;
378 unsigned long flags; 410 unsigned long flags;
@@ -401,6 +433,12 @@ struct mlx4_init_port_param {
401 if (((type) == MLX4_PORT_TYPE_IB ? (dev)->caps.port_mask : \ 433 if (((type) == MLX4_PORT_TYPE_IB ? (dev)->caps.port_mask : \
402 ~(dev)->caps.port_mask) & 1 << ((port) - 1)) 434 ~(dev)->caps.port_mask) & 1 << ((port) - 1))
403 435
436#define mlx4_foreach_ib_transport_port(port, dev) \
437 for ((port) = 1; (port) <= (dev)->caps.num_ports; (port)++) \
438 if (((dev)->caps.port_mask & 1 << ((port) - 1)) || \
439 ((dev)->caps.flags & MLX4_DEV_CAP_FLAG_IBOE))
440
441
404int mlx4_buf_alloc(struct mlx4_dev *dev, int size, int max_direct, 442int mlx4_buf_alloc(struct mlx4_dev *dev, int size, int max_direct,
405 struct mlx4_buf *buf); 443 struct mlx4_buf *buf);
406void mlx4_buf_free(struct mlx4_dev *dev, int size, struct mlx4_buf *buf); 444void mlx4_buf_free(struct mlx4_dev *dev, int size, struct mlx4_buf *buf);
@@ -468,6 +506,7 @@ int mlx4_multicast_detach(struct mlx4_dev *dev, struct mlx4_qp *qp, u8 gid[16]);
468int mlx4_register_mac(struct mlx4_dev *dev, u8 port, u64 mac, int *index); 506int mlx4_register_mac(struct mlx4_dev *dev, u8 port, u64 mac, int *index);
469void mlx4_unregister_mac(struct mlx4_dev *dev, u8 port, int index); 507void mlx4_unregister_mac(struct mlx4_dev *dev, u8 port, int index);
470 508
509int mlx4_find_cached_vlan(struct mlx4_dev *dev, u8 port, u16 vid, int *idx);
471int mlx4_register_vlan(struct mlx4_dev *dev, u8 port, u16 vlan, int *index); 510int mlx4_register_vlan(struct mlx4_dev *dev, u8 port, u16 vlan, int *index);
472void mlx4_unregister_vlan(struct mlx4_dev *dev, u8 port, int index); 511void mlx4_unregister_vlan(struct mlx4_dev *dev, u8 port, int index);
473 512
@@ -480,5 +519,6 @@ void mlx4_fmr_unmap(struct mlx4_dev *dev, struct mlx4_fmr *fmr,
480 u32 *lkey, u32 *rkey); 519 u32 *lkey, u32 *rkey);
481int mlx4_fmr_free(struct mlx4_dev *dev, struct mlx4_fmr *fmr); 520int mlx4_fmr_free(struct mlx4_dev *dev, struct mlx4_fmr *fmr);
482int mlx4_SYNC_TPT(struct mlx4_dev *dev); 521int mlx4_SYNC_TPT(struct mlx4_dev *dev);
522int mlx4_test_interrupts(struct mlx4_dev *dev);
483 523
484#endif /* MLX4_DEVICE_H */ 524#endif /* MLX4_DEVICE_H */