Files
openwrt-R7800-nss/target/linux/ipq806x/patches-6.6/990-059-net-do-time-update-rather-than-fully-update-in-the-f.patch
SqTER-PL 21b3787542 Updated iptunnel patches. Switch to codelinaro.org source.
Minor fixes and patch sorting.
2025-08-04 18:52:30 +02:00

53 lines
1.8 KiB
Diff

From 246b87f0daff042ad215c9c55b411e70ae5406e2 Mon Sep 17 00:00:00 2001
From: Ken Zhu <quic_guigenz@quicinc.com>
Date: Mon, 25 Apr 2022 13:54:20 -0700
Subject: [PATCH 263/281] net: do time update rather than fully update in the
fdb
keep the fdb up to date when do refresh.
Change-Id: Ib0297f11920b66bb573ef41f8a09da9ac0d774af
Signed-off-by: Ken Zhu <quic_guigenz@quicinc.com>
---
include/linux/if_bridge.h | 1 +
net/bridge/br_fdb.c | 18 ++++++++++++++++++
2 files changed, 19 insertions(+)
--- a/include/linux/if_bridge.h
+++ b/include/linux/if_bridge.h
@@ -78,6 +78,7 @@ extern struct net_device *br_port_dev_ge
struct sk_buff *skb,
unsigned int cookie);
extern void br_refresh_fdb_entry(struct net_device *dev, const char *addr);
+extern void br_fdb_entry_refresh(struct net_device *dev, const char *addr, __u16 vid);
extern void br_dev_update_stats(struct net_device *dev,
struct rtnl_link_stats64 *nlstats);
extern struct net_bridge_fdb_entry *br_fdb_has_entry(struct net_device *dev,
--- a/net/bridge/br_fdb.c
+++ b/net/bridge/br_fdb.c
@@ -1006,6 +1006,24 @@ void br_refresh_fdb_entry(struct net_dev
}
EXPORT_SYMBOL_GPL(br_refresh_fdb_entry);
+/* Update timestamp of FDB entries for bridge packets being forwarded by offload engines */
+void br_fdb_entry_refresh(struct net_device *dev, const char *addr, __u16 vid)
+{
+ struct net_bridge_fdb_entry *fdb;
+ struct net_bridge_port *p = br_port_get_rcu(dev);
+
+ if (!p || p->state == BR_STATE_DISABLED)
+ return;
+
+ rcu_read_lock();
+ fdb = fdb_find_rcu(&p->br->fdb_hash_tbl, addr, vid);
+ if (likely(fdb)) {
+ fdb->updated = jiffies;
+ }
+ rcu_read_unlock();
+}
+EXPORT_SYMBOL_GPL(br_fdb_entry_refresh);
+
/* Look up the MAC address in the device's bridge fdb table */
struct net_bridge_fdb_entry *br_fdb_has_entry(struct net_device *dev,
const char *addr, __u16 vid)