hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/infiniband/hw/mlx5/ib_virt.c
....@@ -134,7 +134,7 @@
134134 if (!out)
135135 return -ENOMEM;
136136
137
- err = mlx5_core_query_vport_counter(mdev, true, vf, port, out, out_sz);
137
+ err = mlx5_core_query_vport_counter(mdev, true, vf, port, out);
138138 if (err)
139139 goto ex;
140140
....@@ -164,8 +164,10 @@
164164 in->field_select = MLX5_HCA_VPORT_SEL_NODE_GUID;
165165 in->node_guid = guid;
166166 err = mlx5_core_modify_hca_vport_context(mdev, 1, 1, vf + 1, in);
167
- if (!err)
167
+ if (!err) {
168168 vfs_ctx[vf].node_guid = guid;
169
+ vfs_ctx[vf].node_guid_valid = 1;
170
+ }
169171 kfree(in);
170172 return err;
171173 }
....@@ -185,8 +187,10 @@
185187 in->field_select = MLX5_HCA_VPORT_SEL_PORT_GUID;
186188 in->port_guid = guid;
187189 err = mlx5_core_modify_hca_vport_context(mdev, 1, 1, vf + 1, in);
188
- if (!err)
190
+ if (!err) {
189191 vfs_ctx[vf].port_guid = guid;
192
+ vfs_ctx[vf].port_guid_valid = 1;
193
+ }
190194 kfree(in);
191195 return err;
192196 }
....@@ -201,3 +205,19 @@
201205
202206 return -EINVAL;
203207 }
208
+
209
+int mlx5_ib_get_vf_guid(struct ib_device *device, int vf, u8 port,
210
+ struct ifla_vf_guid *node_guid,
211
+ struct ifla_vf_guid *port_guid)
212
+{
213
+ struct mlx5_ib_dev *dev = to_mdev(device);
214
+ struct mlx5_core_dev *mdev = dev->mdev;
215
+ struct mlx5_vf_context *vfs_ctx = mdev->priv.sriov.vfs_ctx;
216
+
217
+ node_guid->guid =
218
+ vfs_ctx[vf].node_guid_valid ? vfs_ctx[vf].node_guid : 0;
219
+ port_guid->guid =
220
+ vfs_ctx[vf].port_guid_valid ? vfs_ctx[vf].port_guid : 0;
221
+
222
+ return 0;
223
+}