diff options
| author | David S. Miller <davem@davemloft.net> | 2014-03-12 23:57:26 +0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2014-03-12 23:57:26 +0400 |
| commit | 39e7d095f9d0a82a78804650917cd57972a480ce (patch) | |
| tree | 3225c2a7a5c9ddc64991be14c94a06e63a34794a /include | |
| parent | 36f6fdb74997c3f456f1c6a9803c009c49a30053 (diff) | |
| parent | aa9a2d51a3e70b15a898bec7dde3ce5726fec641 (diff) | |
| download | linux-39e7d095f9d0a82a78804650917cd57972a480ce.tar.xz | |
Merge branch 'mlx4-next'
Or Gerlitz says:
====================
mlx4: Add SRIOV support for RoCE
This series adds SRIOV support for RoCE (RDMA over Ethernet) to the mlx4 driver.
The patches are against net-next, as of commit 2d8d40a "pkt_sched: fq:
do not hold qdisc lock while allocating memory"
changes from V1:
- addressed feedback from Dave on patch #3 and changed get_real_sgid_index()
to be called fill_in_real_sgid_index() and be a void function.
- removed some checkpatch warnings on long lines
changes from V0:
- always check the return code of mlx4_get_roce_gid_from_slave().
The call we fixed is introduced in patch #1 and later removed by
patch #3 that allows guests to have multiple GIDS. The 1..3
separation was done for proper division of patches to logical changes.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/mlx4/cmd.h | 7 | ||||
| -rw-r--r-- | include/linux/mlx4/device.h | 11 |
2 files changed, 17 insertions, 1 deletions
diff --git a/include/linux/mlx4/cmd.h b/include/linux/mlx4/cmd.h index 79a347238168..009985628257 100644 --- a/include/linux/mlx4/cmd.h +++ b/include/linux/mlx4/cmd.h @@ -240,6 +240,13 @@ int mlx4_set_vf_vlan(struct mlx4_dev *dev, int port, int vf, u16 vlan, u8 qos); int mlx4_set_vf_spoofchk(struct mlx4_dev *dev, int port, int vf, bool setting); int mlx4_get_vf_config(struct mlx4_dev *dev, int port, int vf, struct ifla_vf_info *ivf); int mlx4_set_vf_link_state(struct mlx4_dev *dev, int port, int vf, int link_state); +/* + * mlx4_get_slave_default_vlan - + * return true if VST ( default vlan) + * if VST, will return vlan & qos (if not NULL) + */ +bool mlx4_get_slave_default_vlan(struct mlx4_dev *dev, int port, int slave, + u16 *vlan, u8 *qos); #define MLX4_COMM_GET_IF_REV(cmd_chan_ver) (u8)((cmd_chan_ver) >> 8) diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h index 5edd2c68274d..f211b51dc726 100644 --- a/include/linux/mlx4/device.h +++ b/include/linux/mlx4/device.h @@ -48,6 +48,9 @@ #define MSIX_LEGACY_SZ 4 #define MIN_MSIX_P_PORT 5 +#define MLX4_ROCE_MAX_GIDS 128 +#define MLX4_ROCE_PF_GIDS 16 + enum { MLX4_FLAG_MSI_X = 1 << 0, MLX4_FLAG_OLD_PORT_CMDS = 1 << 1, @@ -629,7 +632,8 @@ struct mlx4_eth_av { u8 hop_limit; __be32 sl_tclass_flowlabel; u8 dgid[16]; - u32 reserved4[2]; + u8 s_mac[6]; + u8 reserved4[2]; __be16 vlan; u8 mac[ETH_ALEN]; }; @@ -1183,6 +1187,11 @@ int set_and_calc_slave_port_state(struct mlx4_dev *dev, int slave, u8 port, int void mlx4_put_slave_node_guid(struct mlx4_dev *dev, int slave, __be64 guid); __be64 mlx4_get_slave_node_guid(struct mlx4_dev *dev, int slave); +int mlx4_get_slave_from_roce_gid(struct mlx4_dev *dev, int port, u8 *gid, + int *slave_id); +int mlx4_get_roce_gid_from_slave(struct mlx4_dev *dev, int port, int slave_id, + u8 *gid); + int mlx4_FLOW_STEERING_IB_UC_QP_RANGE(struct mlx4_dev *dev, u32 min_range_qpn, u32 max_range_qpn); |
