diff options
author | Hadar Hen Zion <hadarh@mellanox.com> | 2016-08-03 10:27:30 -0400 |
---|---|---|
committer | Leon Romanovsky <leon@kernel.org> | 2016-08-17 10:45:59 -0400 |
commit | 9def7121bed3be8a9d126c900ca7067647bc4789 (patch) | |
tree | 7e3afaf0f5055087d2b46a8fc60cece1f0289a66 | |
parent | 2974ab6e8bd8ad06d30ed471b91f8ff7aa6debd8 (diff) |
net/mlx5: Enable setting minimum inline header mode for VFs
Implement the low-level part of the PF side in setting minimum
inline header mode for VFs.
Signed-off-by: Hadar Hen Zion <hadarh@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx5/core/vport.c | 20 | ||||
-rw-r--r-- | include/linux/mlx5/mlx5_ifc.h | 2 | ||||
-rw-r--r-- | include/linux/mlx5/vport.h | 2 |
3 files changed, 23 insertions, 1 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/vport.c b/drivers/net/ethernet/mellanox/mlx5/core/vport.c index 3593bf78caf4..525f17af108e 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/vport.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/vport.c | |||
@@ -125,6 +125,26 @@ void mlx5_query_nic_vport_min_inline(struct mlx5_core_dev *mdev, | |||
125 | } | 125 | } |
126 | EXPORT_SYMBOL_GPL(mlx5_query_nic_vport_min_inline); | 126 | EXPORT_SYMBOL_GPL(mlx5_query_nic_vport_min_inline); |
127 | 127 | ||
128 | int mlx5_modify_nic_vport_min_inline(struct mlx5_core_dev *mdev, | ||
129 | u16 vport, u8 min_inline) | ||
130 | { | ||
131 | u32 in[MLX5_ST_SZ_DW(modify_nic_vport_context_in)] = {0}; | ||
132 | int inlen = MLX5_ST_SZ_BYTES(modify_nic_vport_context_in); | ||
133 | void *nic_vport_ctx; | ||
134 | |||
135 | MLX5_SET(modify_nic_vport_context_in, in, | ||
136 | field_select.min_inline, 1); | ||
137 | MLX5_SET(modify_nic_vport_context_in, in, vport_number, vport); | ||
138 | MLX5_SET(modify_nic_vport_context_in, in, other_vport, 1); | ||
139 | |||
140 | nic_vport_ctx = MLX5_ADDR_OF(modify_nic_vport_context_in, | ||
141 | in, nic_vport_context); | ||
142 | MLX5_SET(nic_vport_context, nic_vport_ctx, | ||
143 | min_wqe_inline_mode, min_inline); | ||
144 | |||
145 | return mlx5_modify_nic_vport_context(mdev, in, inlen); | ||
146 | } | ||
147 | |||
128 | int mlx5_query_nic_vport_mac_address(struct mlx5_core_dev *mdev, | 148 | int mlx5_query_nic_vport_mac_address(struct mlx5_core_dev *mdev, |
129 | u16 vport, u8 *addr) | 149 | u16 vport, u8 *addr) |
130 | { | 150 | { |
diff --git a/include/linux/mlx5/mlx5_ifc.h b/include/linux/mlx5/mlx5_ifc.h index cb94ac5b8420..7a8ef0af94e7 100644 --- a/include/linux/mlx5/mlx5_ifc.h +++ b/include/linux/mlx5/mlx5_ifc.h | |||
@@ -4724,7 +4724,7 @@ struct mlx5_ifc_modify_nic_vport_field_select_bits { | |||
4724 | u8 reserved_at_0[0x16]; | 4724 | u8 reserved_at_0[0x16]; |
4725 | u8 node_guid[0x1]; | 4725 | u8 node_guid[0x1]; |
4726 | u8 port_guid[0x1]; | 4726 | u8 port_guid[0x1]; |
4727 | u8 reserved_at_18[0x1]; | 4727 | u8 min_inline[0x1]; |
4728 | u8 mtu[0x1]; | 4728 | u8 mtu[0x1]; |
4729 | u8 change_event[0x1]; | 4729 | u8 change_event[0x1]; |
4730 | u8 promisc[0x1]; | 4730 | u8 promisc[0x1]; |
diff --git a/include/linux/mlx5/vport.h b/include/linux/mlx5/vport.h index e087b7d047ac..451b0bde9083 100644 --- a/include/linux/mlx5/vport.h +++ b/include/linux/mlx5/vport.h | |||
@@ -45,6 +45,8 @@ int mlx5_query_nic_vport_mac_address(struct mlx5_core_dev *mdev, | |||
45 | u16 vport, u8 *addr); | 45 | u16 vport, u8 *addr); |
46 | void mlx5_query_nic_vport_min_inline(struct mlx5_core_dev *mdev, | 46 | void mlx5_query_nic_vport_min_inline(struct mlx5_core_dev *mdev, |
47 | u8 *min_inline); | 47 | u8 *min_inline); |
48 | int mlx5_modify_nic_vport_min_inline(struct mlx5_core_dev *mdev, | ||
49 | u16 vport, u8 min_inline); | ||
48 | int mlx5_modify_nic_vport_mac_address(struct mlx5_core_dev *dev, | 50 | int mlx5_modify_nic_vport_mac_address(struct mlx5_core_dev *dev, |
49 | u16 vport, u8 *addr); | 51 | u16 vport, u8 *addr); |
50 | int mlx5_query_nic_vport_mtu(struct mlx5_core_dev *mdev, u16 *mtu); | 52 | int mlx5_query_nic_vport_mtu(struct mlx5_core_dev *mdev, u16 *mtu); |