diff options
Diffstat (limited to 'include/linux/mlx4/device.h')
| -rw-r--r-- | include/linux/mlx4/device.h | 42 |
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 | ||
| 73 | enum { | 74 | enum { |
| @@ -171,6 +172,10 @@ enum { | |||
| 171 | MLX4_NUM_FEXCH = 64 * 1024, | 172 | MLX4_NUM_FEXCH = 64 * 1024, |
| 172 | }; | 173 | }; |
| 173 | 174 | ||
| 175 | enum { | ||
| 176 | MLX4_MAX_FAST_REG_PAGES = 511, | ||
| 177 | }; | ||
| 178 | |||
| 174 | static inline u64 mlx4_fw_ver(u64 major, u64 minor, u64 subminor) | 179 | static 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 | ||
| 387 | struct 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 | |||
| 403 | union mlx4_ext_av { | ||
| 404 | struct mlx4_av ib; | ||
| 405 | struct mlx4_eth_av eth; | ||
| 406 | }; | ||
| 407 | |||
| 376 | struct mlx4_dev { | 408 | struct 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 | |||
| 404 | int mlx4_buf_alloc(struct mlx4_dev *dev, int size, int max_direct, | 442 | int mlx4_buf_alloc(struct mlx4_dev *dev, int size, int max_direct, |
| 405 | struct mlx4_buf *buf); | 443 | struct mlx4_buf *buf); |
| 406 | void mlx4_buf_free(struct mlx4_dev *dev, int size, struct mlx4_buf *buf); | 444 | void 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]); | |||
| 468 | int mlx4_register_mac(struct mlx4_dev *dev, u8 port, u64 mac, int *index); | 506 | int mlx4_register_mac(struct mlx4_dev *dev, u8 port, u64 mac, int *index); |
| 469 | void mlx4_unregister_mac(struct mlx4_dev *dev, u8 port, int index); | 507 | void mlx4_unregister_mac(struct mlx4_dev *dev, u8 port, int index); |
| 470 | 508 | ||
| 509 | int mlx4_find_cached_vlan(struct mlx4_dev *dev, u8 port, u16 vid, int *idx); | ||
| 471 | int mlx4_register_vlan(struct mlx4_dev *dev, u8 port, u16 vlan, int *index); | 510 | int mlx4_register_vlan(struct mlx4_dev *dev, u8 port, u16 vlan, int *index); |
| 472 | void mlx4_unregister_vlan(struct mlx4_dev *dev, u8 port, int index); | 511 | void 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); |
| 481 | int mlx4_fmr_free(struct mlx4_dev *dev, struct mlx4_fmr *fmr); | 520 | int mlx4_fmr_free(struct mlx4_dev *dev, struct mlx4_fmr *fmr); |
| 482 | int mlx4_SYNC_TPT(struct mlx4_dev *dev); | 521 | int mlx4_SYNC_TPT(struct mlx4_dev *dev); |
| 522 | int mlx4_test_interrupts(struct mlx4_dev *dev); | ||
| 483 | 523 | ||
| 484 | #endif /* MLX4_DEVICE_H */ | 524 | #endif /* MLX4_DEVICE_H */ |
