| From 70a3447bb5efc663377fab1ab48516696ebbd714 Mon Sep 17 00:00:00 2001 |
| From: Sridhar Samudrala <sri@us.ibm.com> |
| Date: Fri, 17 May 2013 06:39:07 +0000 |
| Subject: vxlan: Update vxlan fdb 'used' field after each usage |
| |
| From: Sridhar Samudrala <sri@us.ibm.com> |
| |
| [ Upstream commit 014be2c8eac3381e202f684c1f35ae184a8b152b ] |
| |
| 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: Sridhar Samudrala <sri@us.ibm.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/vxlan.c | 17 ++++++++++++++--- |
| 1 file changed, 14 insertions(+), 3 deletions(-) |
| |
| --- a/drivers/net/vxlan.c |
| +++ b/drivers/net/vxlan.c |
| @@ -285,7 +285,7 @@ static inline struct hlist_head *vxlan_f |
| } |
| |
| /* 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) |
| |
| { |
| @@ -300,6 +300,18 @@ static struct vxlan_fdb *vxlan_find_mac( |
| 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 new entry to forwarding table -- assumes lock held */ |
| static int vxlan_fdb_create(struct vxlan_dev *vxlan, |
| const u8 *mac, __be32 ip, |
| @@ -308,7 +320,7 @@ static int vxlan_fdb_create(struct vxlan |
| struct vxlan_fdb *f; |
| int notify = 0; |
| |
| - f = vxlan_find_mac(vxlan, mac); |
| + f = __vxlan_find_mac(vxlan, mac); |
| if (f) { |
| if (flags & NLM_F_EXCL) { |
| netdev_dbg(vxlan->dev, |
| @@ -453,7 +465,6 @@ static void vxlan_snoop(struct net_devic |
| |
| f = vxlan_find_mac(vxlan, src_mac); |
| if (likely(f)) { |
| - f->used = jiffies; |
| if (likely(f->remote_ip == src_ip)) |
| return; |
| |