[SRU][F:linux-bluefield][PATCH v2 2/2] netfilter: flowtable: add counter support in HW offload
William Tu
witu at nvidia.com
Thu Feb 23 22:32:51 UTC 2023
From: wenxu <wenxu at ucloud.cn>
BugLink: https://bugs.launchpad.net/bugs/2008136
Store the conntrack counters to the conntrack entry in the
HW flowtable offload.
Signed-off-by: wenxu <wenxu at ucloud.cn>
Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
(Backported from commit ef803b3cf96a26e2a601755b237585a23e6bc30c)
Signed-off-by: William Tu <witu at nvidia.com>
[William Tu: not cherry-pickable due to NF_FLOW_TIMEOUT replaced with flow_offload_get_timeout in 24384e28586c netfilter: flowtable: Set offload timeouts according to proto.]
---
net/netfilter/nf_flow_table_offload.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/net/netfilter/nf_flow_table_offload.c b/net/netfilter/nf_flow_table_offload.c
index 668bdb375205..bf786e5e516b 100644
--- a/net/netfilter/nf_flow_table_offload.c
+++ b/net/netfilter/nf_flow_table_offload.c
@@ -9,6 +9,7 @@
#include <net/netfilter/nf_flow_table.h>
#include <net/netfilter/nf_tables.h>
#include <net/netfilter/nf_conntrack.h>
+#include <net/netfilter/nf_conntrack_acct.h>
#include <net/netfilter/nf_conntrack_core.h>
#include <net/netfilter/nf_conntrack_tuple.h>
@@ -802,6 +803,17 @@ static void flow_offload_work_stats(struct flow_offload_work *offload)
/* Clear HW_OFFLOAD right away when hw module is removed. */
if (!lastused)
clear_bit(IPS_HW_OFFLOAD_BIT, &offload->flow->ct->status);
+
+ if (offload->flowtable->flags & NF_FLOWTABLE_COUNTER) {
+ if (stats[0].pkts)
+ nf_ct_acct_add(offload->flow->ct,
+ FLOW_OFFLOAD_DIR_ORIGINAL,
+ stats[0].pkts, stats[0].bytes);
+ if (stats[1].pkts)
+ nf_ct_acct_add(offload->flow->ct,
+ FLOW_OFFLOAD_DIR_REPLY,
+ stats[1].pkts, stats[1].bytes);
+ }
}
static void flow_offload_work_handler(struct work_struct *work)
--
2.34.1
More information about the kernel-team
mailing list