CC: [email protected] In-Reply-To: <[email protected]> References: <[email protected]> TO: Maxim Mikityanskiy <[email protected]> TO: "David S. Miller" <[email protected]> CC: [email protected] TO: Jamal Hadi Salim <[email protected]> TO: Cong Wang <[email protected]> TO: Jiri Pirko <[email protected]> TO: David Ahern <[email protected]> CC: Saeed Mahameed <[email protected]> CC: Jakub Kicinski <[email protected]> CC: Tariq Toukan <[email protected]> CC: Yossi Kuperman <[email protected]>
Hi Maxim, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on net-next/master] url: https://github.com/0day-ci/linux/commits/Maxim-Mikityanskiy/net-sched-Add-multi-queue-support-to-sch_tree_lock/20201215-164306 base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git efd5a1584537698220578227e6467638307c2a0b :::::: branch date: 13 days ago :::::: commit date: 13 days ago config: i386-randconfig-m021-20201227 (attached as .config) compiler: gcc-9 (Debian 9.3.0-15) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Dan Carpenter <[email protected]> smatch warnings: drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:474 mlx5e_htb_root_add() warn: passing a valid pointer to 'PTR_ERR' drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:576 mlx5e_htb_leaf_alloc_queue() warn: passing a valid pointer to 'PTR_ERR' drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:631 mlx5e_htb_leaf_to_inner() warn: passing a valid pointer to 'PTR_ERR' vim +/PTR_ERR +474 drivers/net/ethernet/mellanox/mlx5/core/en/qos.c d34a73d10048450 Maxim Mikityanskiy 2020-12-15 453 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 454 int mlx5e_htb_root_add(struct mlx5e_priv *priv, u16 htb_maj_id, u16 htb_defcls) d34a73d10048450 Maxim Mikityanskiy 2020-12-15 455 { d34a73d10048450 Maxim Mikityanskiy 2020-12-15 456 struct mlx5e_qos_node *root; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 457 bool opened; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 458 int err; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 459 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 460 qos_dbg(priv->mdev, "TC_HTB_CREATE handle %04x:, default :%04x\n", htb_maj_id, htb_defcls); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 461 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 462 if (!mlx5_qos_is_supported(priv->mdev)) d34a73d10048450 Maxim Mikityanskiy 2020-12-15 463 return -EOPNOTSUPP; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 464 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 465 opened = test_bit(MLX5E_STATE_OPENED, &priv->state); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 466 if (opened) { d34a73d10048450 Maxim Mikityanskiy 2020-12-15 467 err = mlx5e_qos_alloc_queues(priv, &priv->channels); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 468 if (err) d34a73d10048450 Maxim Mikityanskiy 2020-12-15 469 return err; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 470 } d34a73d10048450 Maxim Mikityanskiy 2020-12-15 471 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 472 root = mlx5e_sw_node_create_root(priv); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 473 if (IS_ERR(root)) { d34a73d10048450 Maxim Mikityanskiy 2020-12-15 @474 err = PTR_ERR(root); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 475 goto err_free_queues; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 476 } d34a73d10048450 Maxim Mikityanskiy 2020-12-15 477 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 478 err = mlx5_qos_create_root_node(priv->mdev, &root->hw_id); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 479 if (err) d34a73d10048450 Maxim Mikityanskiy 2020-12-15 480 goto err_sw_node_delete; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 481 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 482 WRITE_ONCE(priv->htb.defcls, htb_defcls); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 483 /* Order maj_id after defcls - pairs with d34a73d10048450 Maxim Mikityanskiy 2020-12-15 484 * mlx5e_select_queue/mlx5e_select_htb_queues. d34a73d10048450 Maxim Mikityanskiy 2020-12-15 485 */ d34a73d10048450 Maxim Mikityanskiy 2020-12-15 486 smp_store_release(&priv->htb.maj_id, htb_maj_id); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 487 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 488 return 0; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 489 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 490 err_sw_node_delete: d34a73d10048450 Maxim Mikityanskiy 2020-12-15 491 mlx5e_sw_node_delete(priv, root); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 492 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 493 err_free_queues: d34a73d10048450 Maxim Mikityanskiy 2020-12-15 494 if (opened) d34a73d10048450 Maxim Mikityanskiy 2020-12-15 495 mlx5e_qos_close_all_queues(&priv->channels); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 496 return err; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 497 } d34a73d10048450 Maxim Mikityanskiy 2020-12-15 498 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 499 int mlx5e_htb_root_del(struct mlx5e_priv *priv) d34a73d10048450 Maxim Mikityanskiy 2020-12-15 500 { d34a73d10048450 Maxim Mikityanskiy 2020-12-15 501 struct mlx5e_qos_node *root; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 502 int err; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 503 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 504 qos_dbg(priv->mdev, "TC_HTB_DESTROY\n"); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 505 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 506 WRITE_ONCE(priv->htb.maj_id, 0); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 507 synchronize_rcu(); /* Sync with mlx5e_select_htb_queue and TX data path. */ d34a73d10048450 Maxim Mikityanskiy 2020-12-15 508 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 509 root = mlx5e_sw_node_find(priv, MLX5E_HTB_CLASSID_ROOT); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 510 if (!root) { d34a73d10048450 Maxim Mikityanskiy 2020-12-15 511 qos_warn(priv->mdev, "Failed to find the root node in the QoS tree\n"); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 512 return -ENOENT; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 513 } d34a73d10048450 Maxim Mikityanskiy 2020-12-15 514 err = mlx5_qos_destroy_node(priv->mdev, root->hw_id); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 515 if (err) d34a73d10048450 Maxim Mikityanskiy 2020-12-15 516 qos_warn(priv->mdev, "Failed to destroy root node %u, err = %d\n", d34a73d10048450 Maxim Mikityanskiy 2020-12-15 517 root->hw_id, err); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 518 mlx5e_sw_node_delete(priv, root); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 519 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 520 mlx5e_qos_deactivate_all_queues(&priv->channels); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 521 mlx5e_qos_close_all_queues(&priv->channels); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 522 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 523 return err; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 524 } d34a73d10048450 Maxim Mikityanskiy 2020-12-15 525 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 526 static int mlx5e_htb_convert_rate(struct mlx5e_priv *priv, u64 rate, d34a73d10048450 Maxim Mikityanskiy 2020-12-15 527 struct mlx5e_qos_node *parent, u32 *bw_share) d34a73d10048450 Maxim Mikityanskiy 2020-12-15 528 { d34a73d10048450 Maxim Mikityanskiy 2020-12-15 529 u64 share = 0; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 530 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 531 while (parent->classid != MLX5E_HTB_CLASSID_ROOT && !parent->max_average_bw) d34a73d10048450 Maxim Mikityanskiy 2020-12-15 532 parent = parent->parent; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 533 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 534 if (parent->max_average_bw) d34a73d10048450 Maxim Mikityanskiy 2020-12-15 535 share = div64_u64(div_u64(rate * 100, BYTES_IN_MBIT), d34a73d10048450 Maxim Mikityanskiy 2020-12-15 536 parent->max_average_bw); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 537 else d34a73d10048450 Maxim Mikityanskiy 2020-12-15 538 share = 101; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 539 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 540 *bw_share = share == 0 ? 1 : share > 100 ? 0 : share; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 541 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 542 qos_dbg(priv->mdev, "Convert: rate %llu, parent ceil %llu -> bw_share %u\n", d34a73d10048450 Maxim Mikityanskiy 2020-12-15 543 rate, (u64)parent->max_average_bw * BYTES_IN_MBIT, *bw_share); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 544 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 545 return 0; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 546 } d34a73d10048450 Maxim Mikityanskiy 2020-12-15 547 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 548 static void mlx5e_htb_convert_ceil(struct mlx5e_priv *priv, u64 ceil, u32 *max_average_bw) d34a73d10048450 Maxim Mikityanskiy 2020-12-15 549 { d34a73d10048450 Maxim Mikityanskiy 2020-12-15 550 *max_average_bw = div_u64(ceil, BYTES_IN_MBIT); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 551 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 552 qos_dbg(priv->mdev, "Convert: ceil %llu -> max_average_bw %u\n", d34a73d10048450 Maxim Mikityanskiy 2020-12-15 553 ceil, *max_average_bw); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 554 } d34a73d10048450 Maxim Mikityanskiy 2020-12-15 555 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 556 int mlx5e_htb_leaf_alloc_queue(struct mlx5e_priv *priv, u16 classid, d34a73d10048450 Maxim Mikityanskiy 2020-12-15 557 u32 parent_classid, u64 rate, u64 ceil) d34a73d10048450 Maxim Mikityanskiy 2020-12-15 558 { d34a73d10048450 Maxim Mikityanskiy 2020-12-15 559 struct mlx5e_qos_node *node, *parent; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 560 int qid; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 561 int err; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 562 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 563 qos_dbg(priv->mdev, "TC_HTB_LEAF_ALLOC_QUEUE classid %04x, parent %04x, rate %llu, ceil %llu\n", d34a73d10048450 Maxim Mikityanskiy 2020-12-15 564 classid, parent_classid, rate, ceil); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 565 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 566 qid = mlx5e_find_unused_qos_qid(priv); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 567 if (qid < 0) d34a73d10048450 Maxim Mikityanskiy 2020-12-15 568 return qid; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 569 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 570 parent = mlx5e_sw_node_find(priv, parent_classid); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 571 if (!parent) d34a73d10048450 Maxim Mikityanskiy 2020-12-15 572 return -EINVAL; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 573 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 574 node = mlx5e_sw_node_create_leaf(priv, classid, qid, parent); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 575 if (IS_ERR(node)) d34a73d10048450 Maxim Mikityanskiy 2020-12-15 @576 return PTR_ERR(node); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 577 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 578 node->rate = rate; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 579 mlx5e_htb_convert_rate(priv, rate, node->parent, &node->bw_share); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 580 mlx5e_htb_convert_ceil(priv, ceil, &node->max_average_bw); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 581 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 582 err = mlx5_qos_create_leaf_node(priv->mdev, node->parent->hw_id, d34a73d10048450 Maxim Mikityanskiy 2020-12-15 583 node->bw_share, node->max_average_bw, d34a73d10048450 Maxim Mikityanskiy 2020-12-15 584 &node->hw_id); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 585 if (err) { d34a73d10048450 Maxim Mikityanskiy 2020-12-15 586 qos_warn(priv->mdev, "Failed to create a leaf node (class %04x), err = %d\n", d34a73d10048450 Maxim Mikityanskiy 2020-12-15 587 classid, err); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 588 mlx5e_sw_node_delete(priv, node); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 589 return err; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 590 } d34a73d10048450 Maxim Mikityanskiy 2020-12-15 591 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 592 if (test_bit(MLX5E_STATE_OPENED, &priv->state)) { d34a73d10048450 Maxim Mikityanskiy 2020-12-15 593 err = mlx5e_open_qos_sq(priv, &priv->channels, node); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 594 if (err) d34a73d10048450 Maxim Mikityanskiy 2020-12-15 595 qos_warn(priv->mdev, "Failed to create a QoS SQ (class %04x), err = %d\n", d34a73d10048450 Maxim Mikityanskiy 2020-12-15 596 classid, err); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 597 else d34a73d10048450 Maxim Mikityanskiy 2020-12-15 598 mlx5e_activate_qos_sq(priv, node); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 599 } d34a73d10048450 Maxim Mikityanskiy 2020-12-15 600 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 601 return mlx5e_qid_from_qos(&priv->channels, node->qid); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 602 } d34a73d10048450 Maxim Mikityanskiy 2020-12-15 603 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 604 int mlx5e_htb_leaf_to_inner(struct mlx5e_priv *priv, u16 classid, u16 child_classid, d34a73d10048450 Maxim Mikityanskiy 2020-12-15 605 u64 rate, u64 ceil) d34a73d10048450 Maxim Mikityanskiy 2020-12-15 606 { d34a73d10048450 Maxim Mikityanskiy 2020-12-15 607 struct mlx5e_qos_node *node, *child; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 608 int err, tmp_err; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 609 u32 new_hw_id; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 610 u16 qid; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 611 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 612 qos_dbg(priv->mdev, "TC_HTB_LEAF_TO_INNER classid %04x, upcoming child %04x, rate %llu, ceil %llu\n", d34a73d10048450 Maxim Mikityanskiy 2020-12-15 613 classid, child_classid, rate, ceil); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 614 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 615 node = mlx5e_sw_node_find(priv, classid); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 616 if (!node) d34a73d10048450 Maxim Mikityanskiy 2020-12-15 617 return -ENOENT; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 618 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 619 err = mlx5_qos_create_inner_node(priv->mdev, node->parent->hw_id, d34a73d10048450 Maxim Mikityanskiy 2020-12-15 620 node->bw_share, node->max_average_bw, d34a73d10048450 Maxim Mikityanskiy 2020-12-15 621 &new_hw_id); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 622 if (err) { d34a73d10048450 Maxim Mikityanskiy 2020-12-15 623 qos_warn(priv->mdev, "Failed to create an inner node (class %04x), err = %d\n", d34a73d10048450 Maxim Mikityanskiy 2020-12-15 624 classid, err); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 625 return err; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 626 } d34a73d10048450 Maxim Mikityanskiy 2020-12-15 627 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 628 /* Intentionally reuse the qid for the upcoming first child. */ d34a73d10048450 Maxim Mikityanskiy 2020-12-15 629 child = mlx5e_sw_node_create_leaf(priv, child_classid, node->qid, node); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 630 if (IS_ERR(child)) { d34a73d10048450 Maxim Mikityanskiy 2020-12-15 @631 err = PTR_ERR(child); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 632 goto err_destroy_hw_node; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 633 } d34a73d10048450 Maxim Mikityanskiy 2020-12-15 634 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 635 child->rate = rate; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 636 mlx5e_htb_convert_rate(priv, rate, node, &child->bw_share); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 637 mlx5e_htb_convert_ceil(priv, ceil, &child->max_average_bw); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 638 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 639 err = mlx5_qos_create_leaf_node(priv->mdev, new_hw_id, child->bw_share, d34a73d10048450 Maxim Mikityanskiy 2020-12-15 640 child->max_average_bw, &child->hw_id); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 641 if (err) { d34a73d10048450 Maxim Mikityanskiy 2020-12-15 642 qos_warn(priv->mdev, "Failed to create a leaf node (class %04x), err = %d\n", d34a73d10048450 Maxim Mikityanskiy 2020-12-15 643 classid, err); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 644 goto err_delete_sw_node; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 645 } d34a73d10048450 Maxim Mikityanskiy 2020-12-15 646 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 647 /* No fail point. */ d34a73d10048450 Maxim Mikityanskiy 2020-12-15 648 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 649 qid = node->qid; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 650 /* Pairs with mlx5e_get_txq_by_classid. */ d34a73d10048450 Maxim Mikityanskiy 2020-12-15 651 WRITE_ONCE(node->qid, MLX5E_QOS_QID_INNER); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 652 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 653 if (test_bit(MLX5E_STATE_OPENED, &priv->state)) { d34a73d10048450 Maxim Mikityanskiy 2020-12-15 654 mlx5e_deactivate_qos_sq(priv, qid); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 655 mlx5e_close_qos_sq(priv, qid); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 656 } d34a73d10048450 Maxim Mikityanskiy 2020-12-15 657 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 658 err = mlx5_qos_destroy_node(priv->mdev, node->hw_id); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 659 if (err) /* Not fatal. */ d34a73d10048450 Maxim Mikityanskiy 2020-12-15 660 qos_warn(priv->mdev, "Failed to destroy leaf node %u (class %04x), err = %d\n", d34a73d10048450 Maxim Mikityanskiy 2020-12-15 661 node->hw_id, classid, err); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 662 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 663 node->hw_id = new_hw_id; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 664 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 665 if (test_bit(MLX5E_STATE_OPENED, &priv->state)) { d34a73d10048450 Maxim Mikityanskiy 2020-12-15 666 err = mlx5e_open_qos_sq(priv, &priv->channels, child); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 667 if (err) d34a73d10048450 Maxim Mikityanskiy 2020-12-15 668 qos_warn(priv->mdev, "Failed to create a QoS SQ (class %04x), err = %d\n", d34a73d10048450 Maxim Mikityanskiy 2020-12-15 669 classid, err); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 670 else d34a73d10048450 Maxim Mikityanskiy 2020-12-15 671 mlx5e_activate_qos_sq(priv, child); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 672 } d34a73d10048450 Maxim Mikityanskiy 2020-12-15 673 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 674 return 0; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 675 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 676 err_delete_sw_node: d34a73d10048450 Maxim Mikityanskiy 2020-12-15 677 child->qid = MLX5E_QOS_QID_INNER; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 678 mlx5e_sw_node_delete(priv, child); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 679 d34a73d10048450 Maxim Mikityanskiy 2020-12-15 680 err_destroy_hw_node: d34a73d10048450 Maxim Mikityanskiy 2020-12-15 681 tmp_err = mlx5_qos_destroy_node(priv->mdev, new_hw_id); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 682 if (tmp_err) /* Not fatal. */ d34a73d10048450 Maxim Mikityanskiy 2020-12-15 683 qos_warn(priv->mdev, "Failed to roll back creation of an inner node %u (class %04x), err = %d\n", d34a73d10048450 Maxim Mikityanskiy 2020-12-15 684 new_hw_id, classid, tmp_err); d34a73d10048450 Maxim Mikityanskiy 2020-12-15 685 return err; d34a73d10048450 Maxim Mikityanskiy 2020-12-15 686 } d34a73d10048450 Maxim Mikityanskiy 2020-12-15 687 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
