]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
octeontx2-pf: QOS: Refactor TC_HTB_LEAF_DEL_LAST callback
authorHariprasad Kelam <hkelam@marvell.com>
Thu, 22 May 2025 11:58:42 +0000 (17:28 +0530)
committerPaolo Abeni <pabeni@redhat.com>
Wed, 28 May 2025 06:47:10 +0000 (08:47 +0200)
This patch addresses below issues,

1. Active traffic on the leaf node must be stopped before its send queue
   is reassigned to the parent. This patch resolves the issue by marking
   the node as 'Inner'.

2. During a system reboot, the interface receives TC_HTB_LEAF_DEL
   and TC_HTB_LEAF_DEL_LAST callbacks to delete its HTB queues.
   In the case of TC_HTB_LEAF_DEL_LAST, although the same send queue
   is reassigned to the parent, the current logic still attempts to update
   the real number of queues, leadning to below warnings

        New queues can't be registered after device unregistration.
        WARNING: CPU: 0 PID: 6475 at net/core/net-sysfs.c:1714
        netdev_queue_update_kobjects+0x1e4/0x200

Fixes: 5e6808b4c68d ("octeontx2-pf: Add support for HTB offload")
Signed-off-by: Hariprasad Kelam <hkelam@marvell.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20250522115842.1499666-1-hkelam@marvell.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/marvell/octeontx2/nic/qos.c

index 35acc07bd964890f59004883f887efac1abce7c2..5765bac119f0e7bf6f9fabb356780dcc7aed3c85 100644 (file)
@@ -1638,6 +1638,7 @@ static int otx2_qos_leaf_del_last(struct otx2_nic *pfvf, u16 classid, bool force
        if (!node->is_static)
                dwrr_del_node = true;
 
+       WRITE_ONCE(node->qid, OTX2_QOS_QID_INNER);
        /* destroy the leaf node */
        otx2_qos_disable_sq(pfvf, qid);
        otx2_qos_destroy_node(pfvf, node);
@@ -1682,9 +1683,6 @@ static int otx2_qos_leaf_del_last(struct otx2_nic *pfvf, u16 classid, bool force
        }
        kfree(new_cfg);
 
-       /* update tx_real_queues */
-       otx2_qos_update_tx_netdev_queues(pfvf);
-
        return 0;
 }