[SRU][F:linux-bluefield][PATCH v2 2/5] Revert "UBUNTU: SAUCE: netfilter: flowtable: Control flow timeout interval"

Bodong Wang bodong at nvidia.com
Wed Jul 7 15:12:55 UTC 2021


From: Oz Shlomo <ozsh at nvidia.com>

BugLink: https://launchpad.net/bugs/1934401

This reverts commit ceec84149d95890b4a78039437b6832e6c345bba.

Replaced with upstream series:
https://lore.kernel.org/netdev/20210609214523.1678-1-pablo@netfilter.org/

Signed-off-by: Oz Shlomo <ozsh at nvidia.com>
Signed-off-by: Bodong Wang <bodong at nvidia.com>
---
 include/net/netfilter/nf_flow_table.h |  8 +-------
 net/netfilter/nf_flow_table_core.c    | 10 ++--------
 net/netfilter/nf_flow_table_offload.c |  5 ++---
 3 files changed, 5 insertions(+), 18 deletions(-)

diff --git a/include/net/netfilter/nf_flow_table.h b/include/net/netfilter/nf_flow_table.h
index ba3b58a..acd8507 100644
--- a/include/net/netfilter/nf_flow_table.h
+++ b/include/net/netfilter/nf_flow_table.h
@@ -74,7 +74,6 @@ struct nf_flowtable {
 	unsigned int			flags;
 	struct flow_block		flow_block;
 	struct rw_semaphore		flow_block_lock; /* Guards flow_block */
-	u32				flow_timeout;
 	possible_net_t			net;
 };
 
@@ -143,7 +142,7 @@ struct flow_offload {
 	struct rcu_head				rcu_head;
 };
 
-#define NF_DEFAULT_FLOW_TIMEOUT (30 * HZ)
+#define NF_FLOW_TIMEOUT (30 * HZ)
 #define nf_flowtable_time_stamp	(u32)jiffies
 
 static inline __s32 nf_flow_timeout_delta(unsigned int timeout)
@@ -151,11 +150,6 @@ static inline __s32 nf_flow_timeout_delta(unsigned int timeout)
 	return (__s32)(timeout - nf_flowtable_time_stamp);
 }
 
-static inline __s32 nf_flow_offload_timeout(struct nf_flowtable *flow_table)
-{
-	return flow_table->flow_timeout;
-}
-
 struct nf_flow_route {
 	struct {
 		struct dst_entry	*dst;
diff --git a/net/netfilter/nf_flow_table_core.c b/net/netfilter/nf_flow_table_core.c
index 2405eac..080dfea 100644
--- a/net/netfilter/nf_flow_table_core.c
+++ b/net/netfilter/nf_flow_table_core.c
@@ -225,8 +225,7 @@ int flow_offload_add(struct nf_flowtable *flow_table, struct flow_offload *flow)
 {
 	int err;
 
-	flow->timeout = nf_flowtable_time_stamp +
-			nf_flow_offload_timeout(flow_table);
+	flow->timeout = nf_flowtable_time_stamp + NF_FLOW_TIMEOUT;
 
 	err = rhashtable_insert_fast(&flow_table->rhashtable,
 				     &flow->tuplehash[0].node,
@@ -258,8 +257,7 @@ int flow_offload_add(struct nf_flowtable *flow_table, struct flow_offload *flow)
 void flow_offload_refresh(struct nf_flowtable *flow_table,
 			  struct flow_offload *flow)
 {
-	flow->timeout = nf_flowtable_time_stamp +
-			nf_flow_offload_timeout(flow_table);
+	flow->timeout = nf_flowtable_time_stamp + NF_FLOW_TIMEOUT;
 
 	if (likely(!nf_flowtable_hw_offload(flow_table)))
 		return;
@@ -511,10 +509,6 @@ int nf_flow_table_init(struct nf_flowtable *flowtable)
 {
 	int err;
 
-	flowtable->flow_timeout = flowtable->flow_timeout ?
-				  flowtable->flow_timeout * HZ :
-				  NF_DEFAULT_FLOW_TIMEOUT;
-
 	INIT_DEFERRABLE_WORK(&flowtable->gc_work, nf_flow_offload_work_gc);
 	flow_block_init(&flowtable->flow_block);
 	init_rwsem(&flowtable->flow_block_lock);
diff --git a/net/netfilter/nf_flow_table_offload.c b/net/netfilter/nf_flow_table_offload.c
index ad705ca..afc6cd1 100644
--- a/net/netfilter/nf_flow_table_offload.c
+++ b/net/netfilter/nf_flow_table_offload.c
@@ -786,7 +786,6 @@ static void flow_offload_tuple_stats(struct flow_offload_work *offload,
 
 static void flow_offload_work_stats(struct flow_offload_work *offload)
 {
-	u64 flow_timeout = nf_flow_offload_timeout(offload->flowtable);
 	struct flow_stats stats[FLOW_OFFLOAD_DIR_MAX] = {};
 	u64 lastused;
 
@@ -795,7 +794,7 @@ static void flow_offload_work_stats(struct flow_offload_work *offload)
 
 	lastused = max_t(u64, stats[0].lastused, stats[1].lastused);
 	offload->flow->timeout = max_t(u64, offload->flow->timeout,
-				       lastused + flow_timeout);
+				       lastused + NF_FLOW_TIMEOUT);
 	/* Clear HW_OFFLOAD right away when hw module is removed. */
 	if (!lastused)
 		clear_bit(IPS_HW_OFFLOAD_BIT, &offload->flow->ct->status);
@@ -897,7 +896,7 @@ void nf_flow_offload_stats(struct nf_flowtable *flowtable,
 	__s32 delta;
 
 	delta = nf_flow_timeout_delta(flow->timeout);
-	if ((delta >= (9 * nf_flow_offload_timeout(flowtable)) / 10))
+	if ((delta >= (9 * NF_FLOW_TIMEOUT) / 10))
 		return;
 
 	offload = nf_flow_offload_work_alloc(flowtable, flow, FLOW_CLS_STATS);
-- 
1.8.3.1




More information about the kernel-team mailing list