From: Stephen Hemminger <stephen@networkplumber.org>
To: David Miller <davem@davemloft.net>, Scott Feldman <sfeldma@gmail.com>
Cc: netdev@vger.kernel.org, bridge@lists.linux-foundation.org,
Jiri Pirko <jiri@resnulli.us>,
Jouni Malinen <jouni@codeaurora.org>
Subject: [Bridge] [PATCH net] bridge: fix regression in ageing time
Date: Fri, 12 Feb 2016 13:31:09 -0800 [thread overview]
Message-ID: <20160212133109.218ed423@xeon-e3> (raw)
This fixes a regression in the bridge ageing time caused by:
commit c62987bbd8a1 ("bridge: push bridge setting ageing_time down to switchdev")
There are users of Linux bridge which use the feature that if ageing time
is set to 0 it causes entries to never expire.
This feature is even listed on the web page:
https://www.linuxfoundation.org/collaborate/workgroups/networking/bridge
For a pure software bridge, it is unnecessary for the code to have
arbitrary restrictions on what values are allowable.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
Please apply to 4.4 for stable as well.
include/linux/if_bridge.h | 5 -----
net/bridge/br_stp.c | 9 ++++++---
2 files changed, 6 insertions(+), 8 deletions(-)
--- a/include/linux/if_bridge.h 2015-09-23 16:17:25.387594110 -0700
+++ b/include/linux/if_bridge.h 2016-02-11 07:49:35.016689397 -0800
@@ -45,11 +45,6 @@ struct br_ip_list {
#define BR_PROXYARP BIT(8)
#define BR_LEARNING_SYNC BIT(9)
#define BR_PROXYARP_WIFI BIT(10)
-
-/* values as per ieee8021QBridgeFdbAgingTime */
-#define BR_MIN_AGEING_TIME (10 * HZ)
-#define BR_MAX_AGEING_TIME (1000000 * HZ)
-
#define BR_DEFAULT_AGEING_TIME (300 * HZ)
extern void brioctl_set(int (*ioctl_hook)(struct net *, unsigned int, void __user *));
--- a/net/bridge/br_stp.c 2015-12-17 17:17:18.650746679 -0800
+++ b/net/bridge/br_stp.c 2016-02-11 07:49:53.240772672 -0800
@@ -568,6 +568,12 @@ int br_set_max_age(struct net_bridge *br
}
+/* Set the how long dynamic forwarding database entries live.
+ * The Linux bridge allows values outside the standard 802.1
+ * specification to allow for special cases:
+ * 0 - means entry never age.
+ * 1 - means entries disappear in next clock tick
+ */
int br_set_ageing_time(struct net_bridge *br, u32 ageing_time)
{
struct switchdev_attr attr = {
@@ -579,9 +585,6 @@ int br_set_ageing_time(struct net_bridge
unsigned long t = clock_t_to_jiffies(ageing_time);
int err;
- if (t < BR_MIN_AGEING_TIME || t > BR_MAX_AGEING_TIME)
- return -ERANGE;
-
err = switchdev_port_attr_set(br->dev, &attr);
if (err)
return err;
WARNING: multiple messages have this Message-ID (diff)
From: Stephen Hemminger <stephen@networkplumber.org>
To: David Miller <davem@davemloft.net>, Scott Feldman <sfeldma@gmail.com>
Cc: netdev@vger.kernel.org, bridge@lists.linux-foundation.org,
Jiri Pirko <jiri@resnulli.us>,
Jouni Malinen <jouni@codeaurora.org>
Subject: [PATCH net] bridge: fix regression in ageing time
Date: Fri, 12 Feb 2016 13:31:09 -0800 [thread overview]
Message-ID: <20160212133109.218ed423@xeon-e3> (raw)
This fixes a regression in the bridge ageing time caused by:
commit c62987bbd8a1 ("bridge: push bridge setting ageing_time down to switchdev")
There are users of Linux bridge which use the feature that if ageing time
is set to 0 it causes entries to never expire.
This feature is even listed on the web page:
https://www.linuxfoundation.org/collaborate/workgroups/networking/bridge
For a pure software bridge, it is unnecessary for the code to have
arbitrary restrictions on what values are allowable.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
Please apply to 4.4 for stable as well.
include/linux/if_bridge.h | 5 -----
net/bridge/br_stp.c | 9 ++++++---
2 files changed, 6 insertions(+), 8 deletions(-)
--- a/include/linux/if_bridge.h 2015-09-23 16:17:25.387594110 -0700
+++ b/include/linux/if_bridge.h 2016-02-11 07:49:35.016689397 -0800
@@ -45,11 +45,6 @@ struct br_ip_list {
#define BR_PROXYARP BIT(8)
#define BR_LEARNING_SYNC BIT(9)
#define BR_PROXYARP_WIFI BIT(10)
-
-/* values as per ieee8021QBridgeFdbAgingTime */
-#define BR_MIN_AGEING_TIME (10 * HZ)
-#define BR_MAX_AGEING_TIME (1000000 * HZ)
-
#define BR_DEFAULT_AGEING_TIME (300 * HZ)
extern void brioctl_set(int (*ioctl_hook)(struct net *, unsigned int, void __user *));
--- a/net/bridge/br_stp.c 2015-12-17 17:17:18.650746679 -0800
+++ b/net/bridge/br_stp.c 2016-02-11 07:49:53.240772672 -0800
@@ -568,6 +568,12 @@ int br_set_max_age(struct net_bridge *br
}
+/* Set the how long dynamic forwarding database entries live.
+ * The Linux bridge allows values outside the standard 802.1
+ * specification to allow for special cases:
+ * 0 - means entry never age.
+ * 1 - means entries disappear in next clock tick
+ */
int br_set_ageing_time(struct net_bridge *br, u32 ageing_time)
{
struct switchdev_attr attr = {
@@ -579,9 +585,6 @@ int br_set_ageing_time(struct net_bridge
unsigned long t = clock_t_to_jiffies(ageing_time);
int err;
- if (t < BR_MIN_AGEING_TIME || t > BR_MAX_AGEING_TIME)
- return -ERANGE;
-
err = switchdev_port_attr_set(br->dev, &attr);
if (err)
return err;
next reply other threads:[~2016-02-12 21:31 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-12 21:31 Stephen Hemminger [this message]
2016-02-12 21:31 ` [PATCH net] bridge: fix regression in ageing time Stephen Hemminger
2016-02-13 21:35 ` [Bridge] " Ido Schimmel
2016-02-13 21:35 ` Ido Schimmel
2016-02-14 15:15 ` [Bridge] " Ido Schimmel
2016-02-14 15:15 ` Ido Schimmel
2016-02-15 10:16 ` Jiri Pirko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160212133109.218ed423@xeon-e3 \
--to=stephen@networkplumber.org \
--cc=bridge@lists.linux-foundation.org \
--cc=davem@davemloft.net \
--cc=jiri@resnulli.us \
--cc=jouni@codeaurora.org \
--cc=netdev@vger.kernel.org \
--cc=sfeldma@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.