Commit 014be2c8 authored by Sridhar Samudrala's avatar Sridhar Samudrala Committed by David S. Miller

vxlan: Update vxlan fdb 'used' field after each usage

Fix some instances where vxlan fdb 'used' field is not updated after the entry
is used.

v2: rename vxlan_find_mac() as __vxlan_find_mac() and create a new vxlan_find_mac()
that also updates ->used field.
Signed-off-by: default avatarSridhar Samudrala <sri@us.ibm.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e5f5e380
...@@ -301,7 +301,7 @@ static inline struct hlist_head *vxlan_fdb_head(struct vxlan_dev *vxlan, ...@@ -301,7 +301,7 @@ static inline struct hlist_head *vxlan_fdb_head(struct vxlan_dev *vxlan,
} }
/* Look up Ethernet address in forwarding table */ /* Look up Ethernet address in forwarding table */
static struct vxlan_fdb *vxlan_find_mac(struct vxlan_dev *vxlan, static struct vxlan_fdb *__vxlan_find_mac(struct vxlan_dev *vxlan,
const u8 *mac) const u8 *mac)
{ {
...@@ -316,6 +316,18 @@ static struct vxlan_fdb *vxlan_find_mac(struct vxlan_dev *vxlan, ...@@ -316,6 +316,18 @@ static struct vxlan_fdb *vxlan_find_mac(struct vxlan_dev *vxlan,
return NULL; return NULL;
} }
static struct vxlan_fdb *vxlan_find_mac(struct vxlan_dev *vxlan,
const u8 *mac)
{
struct vxlan_fdb *f;
f = __vxlan_find_mac(vxlan, mac);
if (f)
f->used = jiffies;
return f;
}
/* Add/update destinations for multicast */ /* Add/update destinations for multicast */
static int vxlan_fdb_append(struct vxlan_fdb *f, static int vxlan_fdb_append(struct vxlan_fdb *f,
__be32 ip, __be16 port, __u32 vni, __u32 ifindex) __be32 ip, __be16 port, __u32 vni, __u32 ifindex)
...@@ -353,7 +365,7 @@ static int vxlan_fdb_create(struct vxlan_dev *vxlan, ...@@ -353,7 +365,7 @@ static int vxlan_fdb_create(struct vxlan_dev *vxlan,
struct vxlan_fdb *f; struct vxlan_fdb *f;
int notify = 0; int notify = 0;
f = vxlan_find_mac(vxlan, mac); f = __vxlan_find_mac(vxlan, mac);
if (f) { if (f) {
if (flags & NLM_F_EXCL) { if (flags & NLM_F_EXCL) {
netdev_dbg(vxlan->dev, netdev_dbg(vxlan->dev,
...@@ -563,7 +575,6 @@ static void vxlan_snoop(struct net_device *dev, ...@@ -563,7 +575,6 @@ static void vxlan_snoop(struct net_device *dev,
f = vxlan_find_mac(vxlan, src_mac); f = vxlan_find_mac(vxlan, src_mac);
if (likely(f)) { if (likely(f)) {
f->used = jiffies;
if (likely(f->remote.remote_ip == src_ip)) if (likely(f->remote.remote_ip == src_ip))
return; return;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment