| .. | .. |
|---|
| 47 | 47 | "rp_byte_reset", |
|---|
| 48 | 48 | "rp_threshold", |
|---|
| 49 | 49 | "rp_ai_rate", |
|---|
| 50 | + "rp_max_rate", |
|---|
| 50 | 51 | "rp_hai_rate", |
|---|
| 51 | 52 | "rp_min_dec_fac", |
|---|
| 52 | 53 | "rp_min_rate", |
|---|
| .. | .. |
|---|
| 56 | 57 | "rp_rate_reduce_monitor_period", |
|---|
| 57 | 58 | "rp_initial_alpha_value", |
|---|
| 58 | 59 | "rp_gd", |
|---|
| 60 | + "np_min_time_between_cnps", |
|---|
| 59 | 61 | "np_cnp_dscp", |
|---|
| 60 | 62 | "np_cnp_prio_mode", |
|---|
| 61 | 63 | "np_cnp_prio", |
|---|
| .. | .. |
|---|
| 66 | 68 | #define MLX5_IB_RP_TIME_RESET_ATTR BIT(3) |
|---|
| 67 | 69 | #define MLX5_IB_RP_BYTE_RESET_ATTR BIT(4) |
|---|
| 68 | 70 | #define MLX5_IB_RP_THRESHOLD_ATTR BIT(5) |
|---|
| 71 | +#define MLX5_IB_RP_MAX_RATE_ATTR BIT(6) |
|---|
| 69 | 72 | #define MLX5_IB_RP_AI_RATE_ATTR BIT(7) |
|---|
| 70 | 73 | #define MLX5_IB_RP_HAI_RATE_ATTR BIT(8) |
|---|
| 71 | 74 | #define MLX5_IB_RP_MIN_DEC_FAC_ATTR BIT(9) |
|---|
| .. | .. |
|---|
| 77 | 80 | #define MLX5_IB_RP_INITIAL_ALPHA_VALUE_ATTR BIT(15) |
|---|
| 78 | 81 | #define MLX5_IB_RP_GD_ATTR BIT(16) |
|---|
| 79 | 82 | |
|---|
| 83 | +#define MLX5_IB_NP_MIN_TIME_BETWEEN_CNPS_ATTR BIT(2) |
|---|
| 80 | 84 | #define MLX5_IB_NP_CNP_DSCP_ATTR BIT(3) |
|---|
| 81 | 85 | #define MLX5_IB_NP_CNP_PRIO_MODE_ATTR BIT(4) |
|---|
| 82 | 86 | |
|---|
| .. | .. |
|---|
| 111 | 115 | case MLX5_IB_DBG_CC_RP_AI_RATE: |
|---|
| 112 | 116 | return MLX5_GET(cong_control_r_roce_ecn_rp, field, |
|---|
| 113 | 117 | 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); |
|---|
| 114 | 121 | case MLX5_IB_DBG_CC_RP_HAI_RATE: |
|---|
| 115 | 122 | return MLX5_GET(cong_control_r_roce_ecn_rp, field, |
|---|
| 116 | 123 | rpg_hai_rate); |
|---|
| .. | .. |
|---|
| 138 | 145 | case MLX5_IB_DBG_CC_RP_GD: |
|---|
| 139 | 146 | return MLX5_GET(cong_control_r_roce_ecn_rp, field, |
|---|
| 140 | 147 | 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); |
|---|
| 141 | 151 | case MLX5_IB_DBG_CC_NP_CNP_DSCP: |
|---|
| 142 | 152 | return MLX5_GET(cong_control_r_roce_ecn_np, field, |
|---|
| 143 | 153 | cnp_dscp); |
|---|
| .. | .. |
|---|
| 186 | 196 | MLX5_SET(cong_control_r_roce_ecn_rp, field, |
|---|
| 187 | 197 | rpg_ai_rate, var); |
|---|
| 188 | 198 | 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; |
|---|
| 189 | 204 | case MLX5_IB_DBG_CC_RP_HAI_RATE: |
|---|
| 190 | 205 | *attr_mask |= MLX5_IB_RP_HAI_RATE_ATTR; |
|---|
| 191 | 206 | MLX5_SET(cong_control_r_roce_ecn_rp, field, |
|---|
| .. | .. |
|---|
| 231 | 246 | MLX5_SET(cong_control_r_roce_ecn_rp, field, |
|---|
| 232 | 247 | rpg_gd, var); |
|---|
| 233 | 248 | 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; |
|---|
| 234 | 254 | case MLX5_IB_DBG_CC_NP_CNP_DSCP: |
|---|
| 235 | 255 | *attr_mask |= MLX5_IB_NP_CNP_DSCP_ATTR; |
|---|
| 236 | 256 | MLX5_SET(cong_control_r_roce_ecn_np, field, cnp_dscp, var); |
|---|
| .. | .. |
|---|
| 270 | 290 | |
|---|
| 271 | 291 | node = mlx5_ib_param_to_node(offset); |
|---|
| 272 | 292 | |
|---|
| 273 | | - err = mlx5_cmd_query_cong_params(mdev, node, out, outlen); |
|---|
| 293 | + err = mlx5_cmd_query_cong_params(mdev, node, out); |
|---|
| 274 | 294 | if (err) |
|---|
| 275 | 295 | goto free; |
|---|
| 276 | 296 | |
|---|
| .. | .. |
|---|
| 319 | 339 | MLX5_SET(field_select_r_roce_rp, field, field_select_r_roce_rp, |
|---|
| 320 | 340 | attr_mask); |
|---|
| 321 | 341 | |
|---|
| 322 | | - err = mlx5_cmd_modify_cong_params(mdev, in, inlen); |
|---|
| 342 | + err = mlx5_cmd_exec_in(dev->mdev, modify_cong_params, in); |
|---|
| 323 | 343 | kvfree(in); |
|---|
| 324 | 344 | alloc_err: |
|---|
| 325 | 345 | mlx5_ib_put_native_port_mdev(dev, port_num + 1); |
|---|
| .. | .. |
|---|
| 389 | 409 | dev->port[port_num].dbg_cc_params = NULL; |
|---|
| 390 | 410 | } |
|---|
| 391 | 411 | |
|---|
| 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) |
|---|
| 393 | 413 | { |
|---|
| 394 | 414 | struct mlx5_ib_dbg_cc_params *dbg_cc_params; |
|---|
| 395 | 415 | struct mlx5_core_dev *mdev; |
|---|
| 396 | 416 | int i; |
|---|
| 397 | 417 | |
|---|
| 398 | 418 | if (!mlx5_debugfs_root) |
|---|
| 399 | | - goto out; |
|---|
| 419 | + return; |
|---|
| 400 | 420 | |
|---|
| 401 | 421 | /* Takes a 1-based port number */ |
|---|
| 402 | 422 | mdev = mlx5_ib_get_native_port_mdev(dev, port_num + 1, NULL); |
|---|
| 403 | 423 | if (!mdev) |
|---|
| 404 | | - goto out; |
|---|
| 424 | + return; |
|---|
| 405 | 425 | |
|---|
| 406 | 426 | if (!MLX5_CAP_GEN(mdev, cc_query_allowed) || |
|---|
| 407 | 427 | !MLX5_CAP_GEN(mdev, cc_modify_allowed)) |
|---|
| .. | .. |
|---|
| 415 | 435 | |
|---|
| 416 | 436 | dbg_cc_params->root = debugfs_create_dir("cc_params", |
|---|
| 417 | 437 | mdev->priv.dbg_root); |
|---|
| 418 | | - if (!dbg_cc_params->root) |
|---|
| 419 | | - goto err; |
|---|
| 420 | 438 | |
|---|
| 421 | 439 | for (i = 0; i < MLX5_IB_DBG_CC_MAX; i++) { |
|---|
| 422 | 440 | dbg_cc_params->params[i].offset = i; |
|---|
| .. | .. |
|---|
| 427 | 445 | 0600, dbg_cc_params->root, |
|---|
| 428 | 446 | &dbg_cc_params->params[i], |
|---|
| 429 | 447 | &dbg_cc_fops); |
|---|
| 430 | | - if (!dbg_cc_params->params[i].dentry) |
|---|
| 431 | | - goto err; |
|---|
| 432 | 448 | } |
|---|
| 433 | 449 | |
|---|
| 434 | 450 | put_mdev: |
|---|
| 435 | 451 | mlx5_ib_put_native_port_mdev(dev, port_num + 1); |
|---|
| 436 | | -out: |
|---|
| 437 | | - return 0; |
|---|
| 452 | + return; |
|---|
| 438 | 453 | |
|---|
| 439 | 454 | err: |
|---|
| 440 | 455 | mlx5_ib_warn(dev, "cong debugfs failure\n"); |
|---|
| .. | .. |
|---|
| 445 | 460 | * We don't want to fail driver if debugfs failed to initialize, |
|---|
| 446 | 461 | * so we are not forwarding error to the user. |
|---|
| 447 | 462 | */ |
|---|
| 448 | | - return 0; |
|---|
| 463 | + return; |
|---|
| 449 | 464 | } |
|---|