Patch "netfilter: flowtable: fix excessive hw offload attempts after failure" has been added to the 5.17-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    netfilter: flowtable: fix excessive hw offload attempts after failure

to the 5.17-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     netfilter-flowtable-fix-excessive-hw-offload-attempt.patch
and it can be found in the queue-5.17 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 79a6349a75068045678bc4a482e19dc70c458db1
Author: Felix Fietkau <nbd@xxxxxxxx>
Date:   Mon May 9 14:26:13 2022 +0200

    netfilter: flowtable: fix excessive hw offload attempts after failure
    
    [ Upstream commit 396ef64113a8ba01c46315d67a99db8dde3eef51 ]
    
    If a flow cannot be offloaded, the code currently repeatedly tries again as
    quickly as possible, which can significantly increase system load.
    Fix this by limiting flow timeout update and hardware offload retry to once
    per second.
    
    Fixes: c07531c01d82 ("netfilter: flowtable: Remove redundant hw refresh bit")
    Signed-off-by: Felix Fietkau <nbd@xxxxxxxx>
    Signed-off-by: Pablo Neira Ayuso <pablo@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/net/netfilter/nf_flow_table_core.c b/net/netfilter/nf_flow_table_core.c
index b90eca7a2f22..52e7f94d2450 100644
--- a/net/netfilter/nf_flow_table_core.c
+++ b/net/netfilter/nf_flow_table_core.c
@@ -329,8 +329,10 @@ void flow_offload_refresh(struct nf_flowtable *flow_table,
 	u32 timeout;
 
 	timeout = nf_flowtable_time_stamp + flow_offload_get_timeout(flow);
-	if (READ_ONCE(flow->timeout) != timeout)
+	if (timeout - READ_ONCE(flow->timeout) > HZ)
 		WRITE_ONCE(flow->timeout, timeout);
+	else
+		return;
 
 	if (likely(!nf_flowtable_hw_offload(flow_table)))
 		return;



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux