hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/drivers/infiniband/hw/mlx5/cong.c
....@@ -47,6 +47,7 @@
4747 "rp_byte_reset",
4848 "rp_threshold",
4949 "rp_ai_rate",
50
+ "rp_max_rate",
5051 "rp_hai_rate",
5152 "rp_min_dec_fac",
5253 "rp_min_rate",
....@@ -56,6 +57,7 @@
5657 "rp_rate_reduce_monitor_period",
5758 "rp_initial_alpha_value",
5859 "rp_gd",
60
+ "np_min_time_between_cnps",
5961 "np_cnp_dscp",
6062 "np_cnp_prio_mode",
6163 "np_cnp_prio",
....@@ -66,6 +68,7 @@
6668 #define MLX5_IB_RP_TIME_RESET_ATTR BIT(3)
6769 #define MLX5_IB_RP_BYTE_RESET_ATTR BIT(4)
6870 #define MLX5_IB_RP_THRESHOLD_ATTR BIT(5)
71
+#define MLX5_IB_RP_MAX_RATE_ATTR BIT(6)
6972 #define MLX5_IB_RP_AI_RATE_ATTR BIT(7)
7073 #define MLX5_IB_RP_HAI_RATE_ATTR BIT(8)
7174 #define MLX5_IB_RP_MIN_DEC_FAC_ATTR BIT(9)
....@@ -77,6 +80,7 @@
7780 #define MLX5_IB_RP_INITIAL_ALPHA_VALUE_ATTR BIT(15)
7881 #define MLX5_IB_RP_GD_ATTR BIT(16)
7982
83
+#define MLX5_IB_NP_MIN_TIME_BETWEEN_CNPS_ATTR BIT(2)
8084 #define MLX5_IB_NP_CNP_DSCP_ATTR BIT(3)
8185 #define MLX5_IB_NP_CNP_PRIO_MODE_ATTR BIT(4)
8286
....@@ -111,6 +115,9 @@
111115 case MLX5_IB_DBG_CC_RP_AI_RATE:
112116 return MLX5_GET(cong_control_r_roce_ecn_rp, field,
113117 rpg_ai_rate);
118
+ case MLX5_IB_DBG_CC_RP_MAX_RATE:
119
+ return MLX5_GET(cong_control_r_roce_ecn_rp, field,
120
+ rpg_max_rate);
114121 case MLX5_IB_DBG_CC_RP_HAI_RATE:
115122 return MLX5_GET(cong_control_r_roce_ecn_rp, field,
116123 rpg_hai_rate);
....@@ -138,6 +145,9 @@
138145 case MLX5_IB_DBG_CC_RP_GD:
139146 return MLX5_GET(cong_control_r_roce_ecn_rp, field,
140147 rpg_gd);
148
+ case MLX5_IB_DBG_CC_NP_MIN_TIME_BETWEEN_CNPS:
149
+ return MLX5_GET(cong_control_r_roce_ecn_np, field,
150
+ min_time_between_cnps);
141151 case MLX5_IB_DBG_CC_NP_CNP_DSCP:
142152 return MLX5_GET(cong_control_r_roce_ecn_np, field,
143153 cnp_dscp);
....@@ -186,6 +196,11 @@
186196 MLX5_SET(cong_control_r_roce_ecn_rp, field,
187197 rpg_ai_rate, var);
188198 break;
199
+ case MLX5_IB_DBG_CC_RP_MAX_RATE:
200
+ *attr_mask |= MLX5_IB_RP_MAX_RATE_ATTR;
201
+ MLX5_SET(cong_control_r_roce_ecn_rp, field,
202
+ rpg_max_rate, var);
203
+ break;
189204 case MLX5_IB_DBG_CC_RP_HAI_RATE:
190205 *attr_mask |= MLX5_IB_RP_HAI_RATE_ATTR;
191206 MLX5_SET(cong_control_r_roce_ecn_rp, field,
....@@ -231,6 +246,11 @@
231246 MLX5_SET(cong_control_r_roce_ecn_rp, field,
232247 rpg_gd, var);
233248 break;
249
+ case MLX5_IB_DBG_CC_NP_MIN_TIME_BETWEEN_CNPS:
250
+ *attr_mask |= MLX5_IB_NP_MIN_TIME_BETWEEN_CNPS_ATTR;
251
+ MLX5_SET(cong_control_r_roce_ecn_np, field,
252
+ min_time_between_cnps, var);
253
+ break;
234254 case MLX5_IB_DBG_CC_NP_CNP_DSCP:
235255 *attr_mask |= MLX5_IB_NP_CNP_DSCP_ATTR;
236256 MLX5_SET(cong_control_r_roce_ecn_np, field, cnp_dscp, var);
....@@ -270,7 +290,7 @@
270290
271291 node = mlx5_ib_param_to_node(offset);
272292
273
- err = mlx5_cmd_query_cong_params(mdev, node, out, outlen);
293
+ err = mlx5_cmd_query_cong_params(mdev, node, out);
274294 if (err)
275295 goto free;
276296
....@@ -319,7 +339,7 @@
319339 MLX5_SET(field_select_r_roce_rp, field, field_select_r_roce_rp,
320340 attr_mask);
321341
322
- err = mlx5_cmd_modify_cong_params(mdev, in, inlen);
342
+ err = mlx5_cmd_exec_in(dev->mdev, modify_cong_params, in);
323343 kvfree(in);
324344 alloc_err:
325345 mlx5_ib_put_native_port_mdev(dev, port_num + 1);
....@@ -389,19 +409,19 @@
389409 dev->port[port_num].dbg_cc_params = NULL;
390410 }
391411
392
-int mlx5_ib_init_cong_debugfs(struct mlx5_ib_dev *dev, u8 port_num)
412
+void mlx5_ib_init_cong_debugfs(struct mlx5_ib_dev *dev, u8 port_num)
393413 {
394414 struct mlx5_ib_dbg_cc_params *dbg_cc_params;
395415 struct mlx5_core_dev *mdev;
396416 int i;
397417
398418 if (!mlx5_debugfs_root)
399
- goto out;
419
+ return;
400420
401421 /* Takes a 1-based port number */
402422 mdev = mlx5_ib_get_native_port_mdev(dev, port_num + 1, NULL);
403423 if (!mdev)
404
- goto out;
424
+ return;
405425
406426 if (!MLX5_CAP_GEN(mdev, cc_query_allowed) ||
407427 !MLX5_CAP_GEN(mdev, cc_modify_allowed))
....@@ -415,8 +435,6 @@
415435
416436 dbg_cc_params->root = debugfs_create_dir("cc_params",
417437 mdev->priv.dbg_root);
418
- if (!dbg_cc_params->root)
419
- goto err;
420438
421439 for (i = 0; i < MLX5_IB_DBG_CC_MAX; i++) {
422440 dbg_cc_params->params[i].offset = i;
....@@ -427,14 +445,11 @@
427445 0600, dbg_cc_params->root,
428446 &dbg_cc_params->params[i],
429447 &dbg_cc_fops);
430
- if (!dbg_cc_params->params[i].dentry)
431
- goto err;
432448 }
433449
434450 put_mdev:
435451 mlx5_ib_put_native_port_mdev(dev, port_num + 1);
436
-out:
437
- return 0;
452
+ return;
438453
439454 err:
440455 mlx5_ib_warn(dev, "cong debugfs failure\n");
....@@ -445,5 +460,5 @@
445460 * We don't want to fail driver if debugfs failed to initialize,
446461 * so we are not forwarding error to the user.
447462 */
448
- return 0;
463
+ return;
449464 }