Netdev List
 help / color / mirror / Atom feed
* [PATCHv2 net-next] bridge: allow setting hash_max + multicast_router if interface is down
@ 2015-05-22 13:32 Linus Lüssing
  2015-05-22 16:26 ` Cong Wang
  2015-05-22 18:56 ` David Miller
  0 siblings, 2 replies; 3+ messages in thread
From: Linus Lüssing @ 2015-05-22 13:32 UTC (permalink / raw)
  To: netdev, bridge, linux-kernel, Stephen Hemminger, Herbert Xu,
	David S. Miller, roopa, Cong Wang
  Cc: Wilson Kok

Network managers like netifd (used in OpenWRT for instance) try to
configure interface options after creation but before setting the
interface up.

Unfortunately the sysfs / bridge currently only allows to configure the
hash_max and multicast_router options when the bridge interface is up.
But since br_multicast_init() doesn't start any timers and only sets
default values and initializes timers it should be save to reconfigure
the default values after that, before things actually get active after
the bridge is set up.

Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
---
Changelog v2:
* remove another now unnecessary -ENOENT initialization
* consistently initialize to -EINVAL, allowing to shorten two switch-cases

 net/bridge/br_multicast.c |   26 +++-----------------------
 1 file changed, 3 insertions(+), 23 deletions(-)

diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
index 2d69d5c..9955fa4 100644
--- a/net/bridge/br_multicast.c
+++ b/net/bridge/br_multicast.c
@@ -1772,11 +1772,9 @@ out:
 
 int br_multicast_set_router(struct net_bridge *br, unsigned long val)
 {
-	int err = -ENOENT;
+	int err = -EINVAL;
 
 	spin_lock_bh(&br->multicast_lock);
-	if (!netif_running(br->dev))
-		goto unlock;
 
 	switch (val) {
 	case 0:
@@ -1786,14 +1784,8 @@ int br_multicast_set_router(struct net_bridge *br, unsigned long val)
 	case 1:
 		br->multicast_router = val;
 		err = 0;
-		break;
-
-	default:
-		err = -EINVAL;
-		break;
 	}
 
-unlock:
 	spin_unlock_bh(&br->multicast_lock);
 
 	return err;
@@ -1802,11 +1794,9 @@ unlock:
 int br_multicast_set_port_router(struct net_bridge_port *p, unsigned long val)
 {
 	struct net_bridge *br = p->br;
-	int err = -ENOENT;
+	int err = -EINVAL;
 
 	spin_lock(&br->multicast_lock);
-	if (!netif_running(br->dev) || p->state == BR_STATE_DISABLED)
-		goto unlock;
 
 	switch (val) {
 	case 0:
@@ -1827,14 +1817,8 @@ int br_multicast_set_port_router(struct net_bridge_port *p, unsigned long val)
 			break;
 
 		br_multicast_add_router(br, p);
-		break;
-
-	default:
-		err = -EINVAL;
-		break;
 	}
 
-unlock:
 	spin_unlock(&br->multicast_lock);
 
 	return err;
@@ -1939,15 +1923,11 @@ unlock:
 
 int br_multicast_set_hash_max(struct net_bridge *br, unsigned long val)
 {
-	int err = -ENOENT;
+	int err = -EINVAL;
 	u32 old;
 	struct net_bridge_mdb_htable *mdb;
 
 	spin_lock_bh(&br->multicast_lock);
-	if (!netif_running(br->dev))
-		goto unlock;
-
-	err = -EINVAL;
 	if (!is_power_of_2(val))
 		goto unlock;
 
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCHv2 net-next] bridge: allow setting hash_max + multicast_router if interface is down
  2015-05-22 13:32 [PATCHv2 net-next] bridge: allow setting hash_max + multicast_router if interface is down Linus Lüssing
@ 2015-05-22 16:26 ` Cong Wang
  2015-05-22 18:56 ` David Miller
  1 sibling, 0 replies; 3+ messages in thread
From: Cong Wang @ 2015-05-22 16:26 UTC (permalink / raw)
  To: Linus Lüssing
  Cc: Herbert Xu, netdev, roopa, bridge@lists.linux-foundation.org,
	linux-kernel@vger.kernel.org, Wilson Kok, David S. Miller

On Fri, May 22, 2015 at 6:32 AM, Linus Lüssing <linus.luessing@c0d3.blue> wrote:
> Changelog v2:
> * remove another now unnecessary -ENOENT initialization
> * consistently initialize to -EINVAL, allowing to shorten two switch-cases
>

Looks perfect now. :)

Thanks for update.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCHv2 net-next] bridge: allow setting hash_max + multicast_router if interface is down
  2015-05-22 13:32 [PATCHv2 net-next] bridge: allow setting hash_max + multicast_router if interface is down Linus Lüssing
  2015-05-22 16:26 ` Cong Wang
@ 2015-05-22 18:56 ` David Miller
  1 sibling, 0 replies; 3+ messages in thread
From: David Miller @ 2015-05-22 18:56 UTC (permalink / raw)
  To: linus.luessing; +Cc: herbert, netdev, roopa, bridge, linux-kernel, wkok, cwang

From: Linus Lüssing <linus.luessing@c0d3.blue>
Date: Fri, 22 May 2015 15:32:37 +0200

> @@ -1786,14 +1784,8 @@ int br_multicast_set_router(struct net_bridge *br, unsigned long val)
>  	case 1:
>  		br->multicast_router = val;
>  		err = 0;
> -		break;
> -
> -	default:
> -		err = -EINVAL;
> -		break;
>  	}

Please don't remove the break; statement.

> @@ -1827,14 +1817,8 @@ int br_multicast_set_port_router(struct net_bridge_port *p, unsigned long val)
>  			break;
>  
>  		br_multicast_add_router(br, p);
> -		break;
> -
> -	default:
> -		err = -EINVAL;
> -		break;
>  	}
>  
> -unlock:
>  	spin_unlock(&br->multicast_lock);
>  
>  	return err;

Likewise.

Thanks.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2015-05-22 18:56 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-05-22 13:32 [PATCHv2 net-next] bridge: allow setting hash_max + multicast_router if interface is down Linus Lüssing
2015-05-22 16:26 ` Cong Wang
2015-05-22 18:56 ` David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox