From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:478 mlx5e_htb_root_add() warn: passing a valid pointer to 'PTR_ERR'
Date: Fri, 06 Aug 2021 09:22:59 +0800 [thread overview]
Message-ID: <202108060953.uVCOBp4G-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 21463 bytes --]
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Maxim Mikityanskiy <maximmi@mellanox.com>
CC: Jakub Kicinski <kuba@kernel.org>
CC: Tariq Toukan <tariqt@nvidia.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 902e7f373fff2476b53824264c12e4e76c7ec02a
commit: 214baf22870cfa437522f3bd4fbae56338674b04 net/mlx5e: Support HTB offload
date: 7 months ago
:::::: branch date: 6 hours ago
:::::: commit date: 7 months ago
config: i386-randconfig-m021-20210804 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch warnings:
drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:478 mlx5e_htb_root_add() warn: passing a valid pointer to 'PTR_ERR'
drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:585 mlx5e_htb_leaf_alloc_queue() warn: passing a valid pointer to 'PTR_ERR'
drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:644 mlx5e_htb_leaf_to_inner() warn: passing a valid pointer to 'PTR_ERR'
vim +/PTR_ERR +478 drivers/net/ethernet/mellanox/mlx5/core/en/qos.c
214baf22870cfa Maxim Mikityanskiy 2021-01-19 453
214baf22870cfa Maxim Mikityanskiy 2021-01-19 454 int mlx5e_htb_root_add(struct mlx5e_priv *priv, u16 htb_maj_id, u16 htb_defcls,
214baf22870cfa Maxim Mikityanskiy 2021-01-19 455 struct netlink_ext_ack *extack)
214baf22870cfa Maxim Mikityanskiy 2021-01-19 456 {
214baf22870cfa Maxim Mikityanskiy 2021-01-19 457 struct mlx5e_qos_node *root;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 458 bool opened;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 459 int err;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 460
214baf22870cfa Maxim Mikityanskiy 2021-01-19 461 qos_dbg(priv->mdev, "TC_HTB_CREATE handle %04x:, default :%04x\n", htb_maj_id, htb_defcls);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 462
214baf22870cfa Maxim Mikityanskiy 2021-01-19 463 if (!mlx5_qos_is_supported(priv->mdev)) {
214baf22870cfa Maxim Mikityanskiy 2021-01-19 464 NL_SET_ERR_MSG_MOD(extack,
214baf22870cfa Maxim Mikityanskiy 2021-01-19 465 "Missing QoS capabilities. Try disabling SRIOV or use a supported device.");
214baf22870cfa Maxim Mikityanskiy 2021-01-19 466 return -EOPNOTSUPP;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 467 }
214baf22870cfa Maxim Mikityanskiy 2021-01-19 468
214baf22870cfa Maxim Mikityanskiy 2021-01-19 469 opened = test_bit(MLX5E_STATE_OPENED, &priv->state);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 470 if (opened) {
214baf22870cfa Maxim Mikityanskiy 2021-01-19 471 err = mlx5e_qos_alloc_queues(priv, &priv->channels);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 472 if (err)
214baf22870cfa Maxim Mikityanskiy 2021-01-19 473 return err;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 474 }
214baf22870cfa Maxim Mikityanskiy 2021-01-19 475
214baf22870cfa Maxim Mikityanskiy 2021-01-19 476 root = mlx5e_sw_node_create_root(priv);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 477 if (IS_ERR(root)) {
214baf22870cfa Maxim Mikityanskiy 2021-01-19 @478 err = PTR_ERR(root);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 479 goto err_free_queues;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 480 }
214baf22870cfa Maxim Mikityanskiy 2021-01-19 481
214baf22870cfa Maxim Mikityanskiy 2021-01-19 482 err = mlx5_qos_create_root_node(priv->mdev, &root->hw_id);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 483 if (err) {
214baf22870cfa Maxim Mikityanskiy 2021-01-19 484 NL_SET_ERR_MSG_MOD(extack, "Firmware error. Try upgrading firmware.");
214baf22870cfa Maxim Mikityanskiy 2021-01-19 485 goto err_sw_node_delete;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 486 }
214baf22870cfa Maxim Mikityanskiy 2021-01-19 487
214baf22870cfa Maxim Mikityanskiy 2021-01-19 488 WRITE_ONCE(priv->htb.defcls, htb_defcls);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 489 /* Order maj_id after defcls - pairs with
214baf22870cfa Maxim Mikityanskiy 2021-01-19 490 * mlx5e_select_queue/mlx5e_select_htb_queues.
214baf22870cfa Maxim Mikityanskiy 2021-01-19 491 */
214baf22870cfa Maxim Mikityanskiy 2021-01-19 492 smp_store_release(&priv->htb.maj_id, htb_maj_id);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 493
214baf22870cfa Maxim Mikityanskiy 2021-01-19 494 return 0;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 495
214baf22870cfa Maxim Mikityanskiy 2021-01-19 496 err_sw_node_delete:
214baf22870cfa Maxim Mikityanskiy 2021-01-19 497 mlx5e_sw_node_delete(priv, root);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 498
214baf22870cfa Maxim Mikityanskiy 2021-01-19 499 err_free_queues:
214baf22870cfa Maxim Mikityanskiy 2021-01-19 500 if (opened)
214baf22870cfa Maxim Mikityanskiy 2021-01-19 501 mlx5e_qos_close_all_queues(&priv->channels);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 502 return err;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 503 }
214baf22870cfa Maxim Mikityanskiy 2021-01-19 504
214baf22870cfa Maxim Mikityanskiy 2021-01-19 505 int mlx5e_htb_root_del(struct mlx5e_priv *priv)
214baf22870cfa Maxim Mikityanskiy 2021-01-19 506 {
214baf22870cfa Maxim Mikityanskiy 2021-01-19 507 struct mlx5e_qos_node *root;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 508 int err;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 509
214baf22870cfa Maxim Mikityanskiy 2021-01-19 510 qos_dbg(priv->mdev, "TC_HTB_DESTROY\n");
214baf22870cfa Maxim Mikityanskiy 2021-01-19 511
214baf22870cfa Maxim Mikityanskiy 2021-01-19 512 WRITE_ONCE(priv->htb.maj_id, 0);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 513 synchronize_rcu(); /* Sync with mlx5e_select_htb_queue and TX data path. */
214baf22870cfa Maxim Mikityanskiy 2021-01-19 514
214baf22870cfa Maxim Mikityanskiy 2021-01-19 515 root = mlx5e_sw_node_find(priv, MLX5E_HTB_CLASSID_ROOT);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 516 if (!root) {
214baf22870cfa Maxim Mikityanskiy 2021-01-19 517 qos_err(priv->mdev, "Failed to find the root node in the QoS tree\n");
214baf22870cfa Maxim Mikityanskiy 2021-01-19 518 return -ENOENT;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 519 }
214baf22870cfa Maxim Mikityanskiy 2021-01-19 520 err = mlx5_qos_destroy_node(priv->mdev, root->hw_id);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 521 if (err)
214baf22870cfa Maxim Mikityanskiy 2021-01-19 522 qos_err(priv->mdev, "Failed to destroy root node %u, err = %d\n",
214baf22870cfa Maxim Mikityanskiy 2021-01-19 523 root->hw_id, err);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 524 mlx5e_sw_node_delete(priv, root);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 525
214baf22870cfa Maxim Mikityanskiy 2021-01-19 526 mlx5e_qos_deactivate_all_queues(&priv->channels);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 527 mlx5e_qos_close_all_queues(&priv->channels);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 528
214baf22870cfa Maxim Mikityanskiy 2021-01-19 529 return err;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 530 }
214baf22870cfa Maxim Mikityanskiy 2021-01-19 531
214baf22870cfa Maxim Mikityanskiy 2021-01-19 532 static int mlx5e_htb_convert_rate(struct mlx5e_priv *priv, u64 rate,
214baf22870cfa Maxim Mikityanskiy 2021-01-19 533 struct mlx5e_qos_node *parent, u32 *bw_share)
214baf22870cfa Maxim Mikityanskiy 2021-01-19 534 {
214baf22870cfa Maxim Mikityanskiy 2021-01-19 535 u64 share = 0;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 536
214baf22870cfa Maxim Mikityanskiy 2021-01-19 537 while (parent->classid != MLX5E_HTB_CLASSID_ROOT && !parent->max_average_bw)
214baf22870cfa Maxim Mikityanskiy 2021-01-19 538 parent = parent->parent;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 539
214baf22870cfa Maxim Mikityanskiy 2021-01-19 540 if (parent->max_average_bw)
214baf22870cfa Maxim Mikityanskiy 2021-01-19 541 share = div64_u64(div_u64(rate * 100, BYTES_IN_MBIT),
214baf22870cfa Maxim Mikityanskiy 2021-01-19 542 parent->max_average_bw);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 543 else
214baf22870cfa Maxim Mikityanskiy 2021-01-19 544 share = 101;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 545
214baf22870cfa Maxim Mikityanskiy 2021-01-19 546 *bw_share = share == 0 ? 1 : share > 100 ? 0 : share;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 547
214baf22870cfa Maxim Mikityanskiy 2021-01-19 548 qos_dbg(priv->mdev, "Convert: rate %llu, parent ceil %llu -> bw_share %u\n",
214baf22870cfa Maxim Mikityanskiy 2021-01-19 549 rate, (u64)parent->max_average_bw * BYTES_IN_MBIT, *bw_share);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 550
214baf22870cfa Maxim Mikityanskiy 2021-01-19 551 return 0;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 552 }
214baf22870cfa Maxim Mikityanskiy 2021-01-19 553
214baf22870cfa Maxim Mikityanskiy 2021-01-19 554 static void mlx5e_htb_convert_ceil(struct mlx5e_priv *priv, u64 ceil, u32 *max_average_bw)
214baf22870cfa Maxim Mikityanskiy 2021-01-19 555 {
214baf22870cfa Maxim Mikityanskiy 2021-01-19 556 *max_average_bw = div_u64(ceil, BYTES_IN_MBIT);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 557
214baf22870cfa Maxim Mikityanskiy 2021-01-19 558 qos_dbg(priv->mdev, "Convert: ceil %llu -> max_average_bw %u\n",
214baf22870cfa Maxim Mikityanskiy 2021-01-19 559 ceil, *max_average_bw);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 560 }
214baf22870cfa Maxim Mikityanskiy 2021-01-19 561
214baf22870cfa Maxim Mikityanskiy 2021-01-19 562 int mlx5e_htb_leaf_alloc_queue(struct mlx5e_priv *priv, u16 classid,
214baf22870cfa Maxim Mikityanskiy 2021-01-19 563 u32 parent_classid, u64 rate, u64 ceil,
214baf22870cfa Maxim Mikityanskiy 2021-01-19 564 struct netlink_ext_ack *extack)
214baf22870cfa Maxim Mikityanskiy 2021-01-19 565 {
214baf22870cfa Maxim Mikityanskiy 2021-01-19 566 struct mlx5e_qos_node *node, *parent;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 567 int qid;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 568 int err;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 569
214baf22870cfa Maxim Mikityanskiy 2021-01-19 570 qos_dbg(priv->mdev, "TC_HTB_LEAF_ALLOC_QUEUE classid %04x, parent %04x, rate %llu, ceil %llu\n",
214baf22870cfa Maxim Mikityanskiy 2021-01-19 571 classid, parent_classid, rate, ceil);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 572
214baf22870cfa Maxim Mikityanskiy 2021-01-19 573 qid = mlx5e_find_unused_qos_qid(priv);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 574 if (qid < 0) {
214baf22870cfa Maxim Mikityanskiy 2021-01-19 575 NL_SET_ERR_MSG_MOD(extack, "Maximum amount of leaf classes is reached.");
214baf22870cfa Maxim Mikityanskiy 2021-01-19 576 return qid;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 577 }
214baf22870cfa Maxim Mikityanskiy 2021-01-19 578
214baf22870cfa Maxim Mikityanskiy 2021-01-19 579 parent = mlx5e_sw_node_find(priv, parent_classid);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 580 if (!parent)
214baf22870cfa Maxim Mikityanskiy 2021-01-19 581 return -EINVAL;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 582
214baf22870cfa Maxim Mikityanskiy 2021-01-19 583 node = mlx5e_sw_node_create_leaf(priv, classid, qid, parent);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 584 if (IS_ERR(node))
214baf22870cfa Maxim Mikityanskiy 2021-01-19 @585 return PTR_ERR(node);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 586
214baf22870cfa Maxim Mikityanskiy 2021-01-19 587 node->rate = rate;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 588 mlx5e_htb_convert_rate(priv, rate, node->parent, &node->bw_share);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 589 mlx5e_htb_convert_ceil(priv, ceil, &node->max_average_bw);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 590
214baf22870cfa Maxim Mikityanskiy 2021-01-19 591 err = mlx5_qos_create_leaf_node(priv->mdev, node->parent->hw_id,
214baf22870cfa Maxim Mikityanskiy 2021-01-19 592 node->bw_share, node->max_average_bw,
214baf22870cfa Maxim Mikityanskiy 2021-01-19 593 &node->hw_id);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 594 if (err) {
214baf22870cfa Maxim Mikityanskiy 2021-01-19 595 NL_SET_ERR_MSG_MOD(extack, "Firmware error when creating a leaf node.");
214baf22870cfa Maxim Mikityanskiy 2021-01-19 596 qos_err(priv->mdev, "Failed to create a leaf node (class %04x), err = %d\n",
214baf22870cfa Maxim Mikityanskiy 2021-01-19 597 classid, err);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 598 mlx5e_sw_node_delete(priv, node);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 599 return err;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 600 }
214baf22870cfa Maxim Mikityanskiy 2021-01-19 601
214baf22870cfa Maxim Mikityanskiy 2021-01-19 602 if (test_bit(MLX5E_STATE_OPENED, &priv->state)) {
214baf22870cfa Maxim Mikityanskiy 2021-01-19 603 err = mlx5e_open_qos_sq(priv, &priv->channels, node);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 604 if (err) {
214baf22870cfa Maxim Mikityanskiy 2021-01-19 605 NL_SET_ERR_MSG_MOD(extack, "Error creating an SQ.");
214baf22870cfa Maxim Mikityanskiy 2021-01-19 606 qos_warn(priv->mdev, "Failed to create a QoS SQ (class %04x), err = %d\n",
214baf22870cfa Maxim Mikityanskiy 2021-01-19 607 classid, err);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 608 } else {
214baf22870cfa Maxim Mikityanskiy 2021-01-19 609 mlx5e_activate_qos_sq(priv, node);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 610 }
214baf22870cfa Maxim Mikityanskiy 2021-01-19 611 }
214baf22870cfa Maxim Mikityanskiy 2021-01-19 612
214baf22870cfa Maxim Mikityanskiy 2021-01-19 613 return mlx5e_qid_from_qos(&priv->channels, node->qid);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 614 }
214baf22870cfa Maxim Mikityanskiy 2021-01-19 615
214baf22870cfa Maxim Mikityanskiy 2021-01-19 616 int mlx5e_htb_leaf_to_inner(struct mlx5e_priv *priv, u16 classid, u16 child_classid,
214baf22870cfa Maxim Mikityanskiy 2021-01-19 617 u64 rate, u64 ceil, struct netlink_ext_ack *extack)
214baf22870cfa Maxim Mikityanskiy 2021-01-19 618 {
214baf22870cfa Maxim Mikityanskiy 2021-01-19 619 struct mlx5e_qos_node *node, *child;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 620 int err, tmp_err;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 621 u32 new_hw_id;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 622 u16 qid;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 623
214baf22870cfa Maxim Mikityanskiy 2021-01-19 624 qos_dbg(priv->mdev, "TC_HTB_LEAF_TO_INNER classid %04x, upcoming child %04x, rate %llu, ceil %llu\n",
214baf22870cfa Maxim Mikityanskiy 2021-01-19 625 classid, child_classid, rate, ceil);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 626
214baf22870cfa Maxim Mikityanskiy 2021-01-19 627 node = mlx5e_sw_node_find(priv, classid);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 628 if (!node)
214baf22870cfa Maxim Mikityanskiy 2021-01-19 629 return -ENOENT;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 630
214baf22870cfa Maxim Mikityanskiy 2021-01-19 631 err = mlx5_qos_create_inner_node(priv->mdev, node->parent->hw_id,
214baf22870cfa Maxim Mikityanskiy 2021-01-19 632 node->bw_share, node->max_average_bw,
214baf22870cfa Maxim Mikityanskiy 2021-01-19 633 &new_hw_id);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 634 if (err) {
214baf22870cfa Maxim Mikityanskiy 2021-01-19 635 NL_SET_ERR_MSG_MOD(extack, "Firmware error when creating an inner node.");
214baf22870cfa Maxim Mikityanskiy 2021-01-19 636 qos_err(priv->mdev, "Failed to create an inner node (class %04x), err = %d\n",
214baf22870cfa Maxim Mikityanskiy 2021-01-19 637 classid, err);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 638 return err;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 639 }
214baf22870cfa Maxim Mikityanskiy 2021-01-19 640
214baf22870cfa Maxim Mikityanskiy 2021-01-19 641 /* Intentionally reuse the qid for the upcoming first child. */
214baf22870cfa Maxim Mikityanskiy 2021-01-19 642 child = mlx5e_sw_node_create_leaf(priv, child_classid, node->qid, node);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 643 if (IS_ERR(child)) {
214baf22870cfa Maxim Mikityanskiy 2021-01-19 @644 err = PTR_ERR(child);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 645 goto err_destroy_hw_node;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 646 }
214baf22870cfa Maxim Mikityanskiy 2021-01-19 647
214baf22870cfa Maxim Mikityanskiy 2021-01-19 648 child->rate = rate;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 649 mlx5e_htb_convert_rate(priv, rate, node, &child->bw_share);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 650 mlx5e_htb_convert_ceil(priv, ceil, &child->max_average_bw);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 651
214baf22870cfa Maxim Mikityanskiy 2021-01-19 652 err = mlx5_qos_create_leaf_node(priv->mdev, new_hw_id, child->bw_share,
214baf22870cfa Maxim Mikityanskiy 2021-01-19 653 child->max_average_bw, &child->hw_id);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 654 if (err) {
214baf22870cfa Maxim Mikityanskiy 2021-01-19 655 NL_SET_ERR_MSG_MOD(extack, "Firmware error when creating a leaf node.");
214baf22870cfa Maxim Mikityanskiy 2021-01-19 656 qos_err(priv->mdev, "Failed to create a leaf node (class %04x), err = %d\n",
214baf22870cfa Maxim Mikityanskiy 2021-01-19 657 classid, err);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 658 goto err_delete_sw_node;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 659 }
214baf22870cfa Maxim Mikityanskiy 2021-01-19 660
214baf22870cfa Maxim Mikityanskiy 2021-01-19 661 /* No fail point. */
214baf22870cfa Maxim Mikityanskiy 2021-01-19 662
214baf22870cfa Maxim Mikityanskiy 2021-01-19 663 qid = node->qid;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 664 /* Pairs with mlx5e_get_txq_by_classid. */
214baf22870cfa Maxim Mikityanskiy 2021-01-19 665 WRITE_ONCE(node->qid, MLX5E_QOS_QID_INNER);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 666
214baf22870cfa Maxim Mikityanskiy 2021-01-19 667 if (test_bit(MLX5E_STATE_OPENED, &priv->state)) {
214baf22870cfa Maxim Mikityanskiy 2021-01-19 668 mlx5e_deactivate_qos_sq(priv, qid);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 669 mlx5e_close_qos_sq(priv, qid);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 670 }
214baf22870cfa Maxim Mikityanskiy 2021-01-19 671
214baf22870cfa Maxim Mikityanskiy 2021-01-19 672 err = mlx5_qos_destroy_node(priv->mdev, node->hw_id);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 673 if (err) /* Not fatal. */
214baf22870cfa Maxim Mikityanskiy 2021-01-19 674 qos_warn(priv->mdev, "Failed to destroy leaf node %u (class %04x), err = %d\n",
214baf22870cfa Maxim Mikityanskiy 2021-01-19 675 node->hw_id, classid, err);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 676
214baf22870cfa Maxim Mikityanskiy 2021-01-19 677 node->hw_id = new_hw_id;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 678
214baf22870cfa Maxim Mikityanskiy 2021-01-19 679 if (test_bit(MLX5E_STATE_OPENED, &priv->state)) {
214baf22870cfa Maxim Mikityanskiy 2021-01-19 680 err = mlx5e_open_qos_sq(priv, &priv->channels, child);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 681 if (err) {
214baf22870cfa Maxim Mikityanskiy 2021-01-19 682 NL_SET_ERR_MSG_MOD(extack, "Error creating an SQ.");
214baf22870cfa Maxim Mikityanskiy 2021-01-19 683 qos_warn(priv->mdev, "Failed to create a QoS SQ (class %04x), err = %d\n",
214baf22870cfa Maxim Mikityanskiy 2021-01-19 684 classid, err);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 685 } else {
214baf22870cfa Maxim Mikityanskiy 2021-01-19 686 mlx5e_activate_qos_sq(priv, child);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 687 }
214baf22870cfa Maxim Mikityanskiy 2021-01-19 688 }
214baf22870cfa Maxim Mikityanskiy 2021-01-19 689
214baf22870cfa Maxim Mikityanskiy 2021-01-19 690 return 0;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 691
214baf22870cfa Maxim Mikityanskiy 2021-01-19 692 err_delete_sw_node:
214baf22870cfa Maxim Mikityanskiy 2021-01-19 693 child->qid = MLX5E_QOS_QID_INNER;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 694 mlx5e_sw_node_delete(priv, child);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 695
214baf22870cfa Maxim Mikityanskiy 2021-01-19 696 err_destroy_hw_node:
214baf22870cfa Maxim Mikityanskiy 2021-01-19 697 tmp_err = mlx5_qos_destroy_node(priv->mdev, new_hw_id);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 698 if (tmp_err) /* Not fatal. */
214baf22870cfa Maxim Mikityanskiy 2021-01-19 699 qos_warn(priv->mdev, "Failed to roll back creation of an inner node %u (class %04x), err = %d\n",
214baf22870cfa Maxim Mikityanskiy 2021-01-19 700 new_hw_id, classid, tmp_err);
214baf22870cfa Maxim Mikityanskiy 2021-01-19 701 return err;
214baf22870cfa Maxim Mikityanskiy 2021-01-19 702 }
214baf22870cfa Maxim Mikityanskiy 2021-01-19 703
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 36659 bytes --]
next reply other threads:[~2021-08-06 1:22 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-06 1:22 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2022-01-06 6:06 drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:478 mlx5e_htb_root_add() warn: passing a valid pointer to 'PTR_ERR' kernel test robot
2021-12-11 9:49 kernel test robot
2021-05-17 4:00 kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202108060953.uVCOBp4G-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.