From patchwork Wed Aug 16 21:00:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 13355665 X-Patchwork-Delegate: kuba@kernel.org Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C1B5417FE5 for ; Wed, 16 Aug 2023 21:00:57 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2B4C7C433CA; Wed, 16 Aug 2023 21:00:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1692219657; bh=cagxIgDEhFzsHUWP8eDol4BGAvO4+/KXBtfv1u8Ev1g=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=J+ljOSmosmhGbHwvdBEmnLiG3p1W/U0UKVpVXwxvG/5O/q+EGDInLCuYuB+aA3csF kuDxdE219KLUKCw8Xk00kNpBS7Oz1H6VfPZtIXjjCxtkClmNcd+bTZ1YmOphVtJJSA O1pa0NbRu/47kUuPqA0DZeqnIJiGCnYgPcQ+f8mJhA1cxCFY7rU213mhH/mw48JW1B a9PS96TdP2ttbFpUhNTgmREY2SGwSVkj/sJAhIfJ1vQhdZr5PTIY0UO9bjrYflnOqJ fA748OZgVOzVy8qzv4uV6m3O8kVvBPUJay34LMjY+oiSiNGE/g1MExeoMZ5jQtyvkt 4NbGJUKaqhL0Q== From: Saeed Mahameed To: "David S. Miller" , Jakub Kicinski , Paolo Abeni , Eric Dumazet Cc: Saeed Mahameed , netdev@vger.kernel.org, Tariq Toukan , Adham Faris Subject: [net-next 01/15] net/mlx5e: aRFS, Prevent repeated kernel rule migrations requests Date: Wed, 16 Aug 2023 14:00:35 -0700 Message-ID: <20230816210049.54733-2-saeed@kernel.org> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230816210049.54733-1-saeed@kernel.org> References: <20230816210049.54733-1-saeed@kernel.org> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: kuba@kernel.org From: Adham Faris aRFS rule movement requests from one Rx ring to other Rx ring arrive from the kernel to ensure that packets are steered to the right Rx ring. In the time interval until satisfying such a request, several more requests might follow, for the same flow. This patch detects and prevents repeated aRFS rules movement requests. In mlx5e_rx_flow_steer() ndo, after finding the aRFS rule that have been requested to move by the kernel, check if it's already requested to move by calling work_busy(&arfs_rule->arfs_work) handler. IOW, if this request is pending to be executed (in the work queue) or it's executing now but hasn't finished yet, return current filter ID and don't issue a new transition work. Signed-off-by: Adham Faris Reviewed-by: Tariq Toukan Signed-off-by: Saeed Mahameed --- drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c b/drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c index 5aa51d74f8b4..67d8b198a014 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c @@ -740,7 +740,7 @@ int mlx5e_rx_flow_steer(struct net_device *dev, const struct sk_buff *skb, spin_lock_bh(&arfs->arfs_lock); arfs_rule = arfs_find_rule(arfs_t, &fk); if (arfs_rule) { - if (arfs_rule->rxq == rxq_index) { + if (arfs_rule->rxq == rxq_index || work_busy(&arfs_rule->arfs_work)) { spin_unlock_bh(&arfs->arfs_lock); return arfs_rule->filter_id; }