aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHadar Hen Zion <hadarh@mellanox.com>2016-08-03 10:27:30 -0400
committerLeon Romanovsky <leon@kernel.org>2016-08-17 10:45:59 -0400
commit9def7121bed3be8a9d126c900ca7067647bc4789 (patch)
tree7e3afaf0f5055087d2b46a8fc60cece1f0289a66
parent2974ab6e8bd8ad06d30ed471b91f8ff7aa6debd8 (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.c20
-rw-r--r--include/linux/mlx5/mlx5_ifc.h2
-rw-r--r--include/linux/mlx5/vport.h2
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}
126EXPORT_SYMBOL_GPL(mlx5_query_nic_vport_min_inline); 126EXPORT_SYMBOL_GPL(mlx5_query_nic_vport_min_inline);
127 127
128int 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
128int mlx5_query_nic_vport_mac_address(struct mlx5_core_dev *mdev, 148int 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);
46void mlx5_query_nic_vport_min_inline(struct mlx5_core_dev *mdev, 46void mlx5_query_nic_vport_min_inline(struct mlx5_core_dev *mdev,
47 u8 *min_inline); 47 u8 *min_inline);
48int mlx5_modify_nic_vport_min_inline(struct mlx5_core_dev *mdev,
49 u16 vport, u8 min_inline);
48int mlx5_modify_nic_vport_mac_address(struct mlx5_core_dev *dev, 50int mlx5_modify_nic_vport_mac_address(struct mlx5_core_dev *dev,
49 u16 vport, u8 *addr); 51 u16 vport, u8 *addr);
50int mlx5_query_nic_vport_mtu(struct mlx5_core_dev *mdev, u16 *mtu); 52int mlx5_query_nic_vport_mtu(struct mlx5_core_dev *mdev, u16 *mtu);