All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Hemminger <shemminger@linux-foundation.org>
To: Jiri Pirko <jpirko@redhat.com>
Cc: linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
	jgarzik@pobox.com, davem@davemloft.net,
	bridge@lists.linux-foundation.org, fubar@us.ibm.com,
	bonding-devel@lists.sourceforge.net, kaber@trash.net,
	mschmidt@redhat.com, dada1@cosmosbay.com, ivecera@redhat.com
Subject: Re: [PATCH net-next] net: bridge: use device address list instead of dev_addr (repost)
Date: Wed, 6 May 2009 12:26:45 -0700	[thread overview]
Message-ID: <20090506122645.456d9af4@nehalam> (raw)
In-Reply-To: <20090506144624.GI28637@psychotron.englab.brq.redhat.com>

On Wed, 6 May 2009 16:46:25 +0200
Jiri Pirko <jpirko@redhat.com> wrote:

> (repost, no modifications)
> 
> This patch changes the handling of mac addresses of bridge port devices. Now
> it uses previously introduced list of device addresses. It allows the bridge to
> know more then one local mac address per port which is mandatory for the right
> work in some cases.
> 
> Signed-off-by: Jiri Pirko <jpirko@redhat.com>
> ---
>  net/bridge/br_fdb.c     |  101 ++++++++++++++++++++++++++++++----------------
>  net/bridge/br_if.c      |    2 +-
>  net/bridge/br_notify.c  |    2 +-
>  net/bridge/br_private.h |    4 +-
>  4 files changed, 70 insertions(+), 39 deletions(-)
> 
> diff --git a/net/bridge/br_fdb.c b/net/bridge/br_fdb.c
> index a48f5ef..1e63f76 100644
> --- a/net/bridge/br_fdb.c
> +++ b/net/bridge/br_fdb.c
> @@ -77,10 +77,26 @@ static inline void fdb_delete(struct net_bridge_fdb_entry *f)
>  	br_fdb_put(f);
>  }
>  
> -void br_fdb_changeaddr(struct net_bridge_port *p, const unsigned char *newaddr)
> +static bool another_port_has_addr(const struct net_bridge_port *p,
> +				  struct net_bridge_fdb_entry *f)
> +{
> +	struct net_bridge *br = p->br;
> +	struct net_bridge_port *op;
> +
> +	list_for_each_entry(op, &br->port_list, list) {
> +		if (op != p && is_etherdev_addr(op->dev, f->addr.addr)) {
> +			f->dst = op;
> +			return 1;
> +		}
> +	}
> +	return 0;
> +}
> +
> +void br_fdb_changeaddr(struct net_bridge_port *p, struct net_device *dev)
>  {
>  	struct net_bridge *br = p->br;
>  	int i;
> +	struct netdev_hw_addr *ha;
>  
>  	spin_lock_bh(&br->hash_lock);
>  
> @@ -92,26 +108,23 @@ void br_fdb_changeaddr(struct net_bridge_port *p, const unsigned char *newaddr)
>  
>  			f = hlist_entry(h, struct net_bridge_fdb_entry, hlist);
>  			if (f->dst == p && f->is_local) {
> -				/* maybe another port has same hw addr? */
> -				struct net_bridge_port *op;
> -				list_for_each_entry(op, &br->port_list, list) {
> -					if (op != p &&
> -					    !compare_ether_addr(op->dev->dev_addr,
> -								f->addr.addr)) {
> -						f->dst = op;
> -						goto insert;
> -					}
> -				}
> -
> -				/* delete old one */
> -				fdb_delete(f);
> -				goto insert;
> +				/*
> +				 * maybe another port has same hw addr?,
> +				 * if not then delete it
> +				 */
> +				if (!another_port_has_addr(p, f))
> +					fdb_delete(f);
>  			}
>  		}
>  	}
> - insert:
> -	/* insert new address,  may fail if invalid address or dup. */
> -	fdb_insert(br, p, newaddr);
> +
> +	/* insert device addresses, may fail if invalid address. */
> +
> +	rcu_read_lock();
> +	for_each_dev_addr(dev, ha) {
> +		fdb_insert(br, p, ha->addr);
> +	}
> +	rcu_read_unlock();
>  
>  	spin_unlock_bh(&br->hash_lock);
>  }
> @@ -189,20 +202,9 @@ void br_fdb_delete_by_port(struct net_bridge *br,
>  			 * then when one port is deleted, assign
>  			 * the local entry to other port
>  			 */
> -			if (f->is_local) {
> -				struct net_bridge_port *op;
> -				list_for_each_entry(op, &br->port_list, list) {
> -					if (op != p &&
> -					    !compare_ether_addr(op->dev->dev_addr,
> -								f->addr.addr)) {
> -						f->dst = op;
> -						goto skip_delete;
> -					}
> -				}
> -			}
> -
> -			fdb_delete(f);
> -		skip_delete: ;
> +			if (!f->is_local ||
> +			    !another_port_has_addr(p, f))
> +				fdb_delete(f);
>  		}
>  	}
>  	spin_unlock_bh(&br->hash_lock);
> @@ -338,7 +340,7 @@ static struct net_bridge_fdb_entry *fdb_create(struct hlist_head *head,
>  }
>  
>  static int fdb_insert(struct net_bridge *br, struct net_bridge_port *source,
> -		  const unsigned char *addr)
> +		      const unsigned char *addr)
>  {
>  	struct hlist_head *head = &br->hash[br_mac_hash(addr)];
>  	struct net_bridge_fdb_entry *fdb;
> @@ -366,13 +368,42 @@ static int fdb_insert(struct net_bridge *br, struct net_bridge_port *source,
>  	return 0;
>  }
>  
> +static int fdb_insert_dev(struct net_bridge *br, struct net_bridge_port *source,
> +			  struct net_device *dev)
> +{
> +	struct netdev_hw_addr *ha, *ha2;
> +	struct net_bridge_fdb_entry *fdb;
> +	struct hlist_head *head;
> +	int ret = 0;
> +
> +	rcu_read_lock();
> +	for_each_dev_addr(dev, ha) {
> +		ret = fdb_insert(br, source, ha->addr);
> +		if (ret)
> +			goto unroll;
> +	}
> +	goto unlock;
> +unroll:
> +	for_each_dev_addr(dev, ha2) {
> +		if (ha2 == ha)
> +			break;
> +		head = &br->hash[br_mac_hash(ha2->addr)];
> +		fdb = fdb_find(head, ha2->addr);
> +		if (fdb && fdb->is_local)
> +			fdb_delete(fdb);
> +	}
> +unlock:
> +	rcu_read_unlock();
> +	return ret;
> +}
> +
>  int br_fdb_insert(struct net_bridge *br, struct net_bridge_port *source,
> -		  const unsigned char *addr)
> +		  struct net_device *dev)
>  {
>  	int ret;
>  
>  	spin_lock_bh(&br->hash_lock);
> -	ret = fdb_insert(br, source, addr);
> +	ret = fdb_insert_dev(br, source, dev);
>  	spin_unlock_bh(&br->hash_lock);
>  	return ret;
>  }
> diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c
> index 8a96672..789cb30 100644
> --- a/net/bridge/br_if.c
> +++ b/net/bridge/br_if.c
> @@ -392,7 +392,7 @@ int br_add_if(struct net_bridge *br, struct net_device *dev)
>  	if (err)
>  		goto err0;
>  
> -	err = br_fdb_insert(br, p, dev->dev_addr);
> +	err = br_fdb_insert(br, p, dev);
>  	if (err)
>  		goto err1;
>  
> diff --git a/net/bridge/br_notify.c b/net/bridge/br_notify.c
> index 763a3ec..1423541 100644
> --- a/net/bridge/br_notify.c
> +++ b/net/bridge/br_notify.c
> @@ -48,7 +48,7 @@ static int br_device_event(struct notifier_block *unused, unsigned long event, v
>  
>  	case NETDEV_CHANGEADDR:
>  		spin_lock_bh(&br->lock);
> -		br_fdb_changeaddr(p, dev->dev_addr);
> +		br_fdb_changeaddr(p, dev);
>  		br_stp_recalculate_bridge_id(br);
>  		spin_unlock_bh(&br->lock);
>  		break;
> diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h
> index b6c3b71..65ffe3d 100644
> --- a/net/bridge/br_private.h
> +++ b/net/bridge/br_private.h
> @@ -148,7 +148,7 @@ extern int br_fdb_init(void);
>  extern void br_fdb_fini(void);
>  extern void br_fdb_flush(struct net_bridge *br);
>  extern void br_fdb_changeaddr(struct net_bridge_port *p,
> -			      const unsigned char *newaddr);
> +			      struct net_device *dev);
>  extern void br_fdb_cleanup(unsigned long arg);
>  extern void br_fdb_delete_by_port(struct net_bridge *br,
>  				  const struct net_bridge_port *p, int do_all);
> @@ -161,7 +161,7 @@ extern int br_fdb_fillbuf(struct net_bridge *br, void *buf,
>  			  unsigned long count, unsigned long off);
>  extern int br_fdb_insert(struct net_bridge *br,
>  			 struct net_bridge_port *source,
> -			 const unsigned char *addr);
> +			 struct net_device *dev);
>  extern void br_fdb_update(struct net_bridge *br,
>  			  struct net_bridge_port *source,
>  			  const unsigned char *addr);

Won't this all break spanning tree which expects 1:1 relationship between
address and port.

WARNING: multiple messages have this Message-ID (diff)
From: Stephen Hemminger <shemminger@linux-foundation.org>
To: Jiri Pirko <jpirko@redhat.com>
Cc: ivecera@redhat.com, fubar@us.ibm.com, netdev@vger.kernel.org,
	bridge@lists.linux-foundation.org, linux-kernel@vger.kernel.org,
	mschmidt@redhat.com, bonding-devel@lists.sourceforge.net,
	dada1@cosmosbay.com, jgarzik@pobox.com, davem@davemloft.net
Subject: Re: [Bridge] [PATCH net-next] net: bridge: use device address list instead of dev_addr (repost)
Date: Wed, 6 May 2009 12:26:45 -0700	[thread overview]
Message-ID: <20090506122645.456d9af4@nehalam> (raw)
In-Reply-To: <20090506144624.GI28637@psychotron.englab.brq.redhat.com>

On Wed, 6 May 2009 16:46:25 +0200
Jiri Pirko <jpirko@redhat.com> wrote:

> (repost, no modifications)
> 
> This patch changes the handling of mac addresses of bridge port devices. Now
> it uses previously introduced list of device addresses. It allows the bridge to
> know more then one local mac address per port which is mandatory for the right
> work in some cases.
> 
> Signed-off-by: Jiri Pirko <jpirko@redhat.com>
> ---
>  net/bridge/br_fdb.c     |  101 ++++++++++++++++++++++++++++++----------------
>  net/bridge/br_if.c      |    2 +-
>  net/bridge/br_notify.c  |    2 +-
>  net/bridge/br_private.h |    4 +-
>  4 files changed, 70 insertions(+), 39 deletions(-)
> 
> diff --git a/net/bridge/br_fdb.c b/net/bridge/br_fdb.c
> index a48f5ef..1e63f76 100644
> --- a/net/bridge/br_fdb.c
> +++ b/net/bridge/br_fdb.c
> @@ -77,10 +77,26 @@ static inline void fdb_delete(struct net_bridge_fdb_entry *f)
>  	br_fdb_put(f);
>  }
>  
> -void br_fdb_changeaddr(struct net_bridge_port *p, const unsigned char *newaddr)
> +static bool another_port_has_addr(const struct net_bridge_port *p,
> +				  struct net_bridge_fdb_entry *f)
> +{
> +	struct net_bridge *br = p->br;
> +	struct net_bridge_port *op;
> +
> +	list_for_each_entry(op, &br->port_list, list) {
> +		if (op != p && is_etherdev_addr(op->dev, f->addr.addr)) {
> +			f->dst = op;
> +			return 1;
> +		}
> +	}
> +	return 0;
> +}
> +
> +void br_fdb_changeaddr(struct net_bridge_port *p, struct net_device *dev)
>  {
>  	struct net_bridge *br = p->br;
>  	int i;
> +	struct netdev_hw_addr *ha;
>  
>  	spin_lock_bh(&br->hash_lock);
>  
> @@ -92,26 +108,23 @@ void br_fdb_changeaddr(struct net_bridge_port *p, const unsigned char *newaddr)
>  
>  			f = hlist_entry(h, struct net_bridge_fdb_entry, hlist);
>  			if (f->dst == p && f->is_local) {
> -				/* maybe another port has same hw addr? */
> -				struct net_bridge_port *op;
> -				list_for_each_entry(op, &br->port_list, list) {
> -					if (op != p &&
> -					    !compare_ether_addr(op->dev->dev_addr,
> -								f->addr.addr)) {
> -						f->dst = op;
> -						goto insert;
> -					}
> -				}
> -
> -				/* delete old one */
> -				fdb_delete(f);
> -				goto insert;
> +				/*
> +				 * maybe another port has same hw addr?,
> +				 * if not then delete it
> +				 */
> +				if (!another_port_has_addr(p, f))
> +					fdb_delete(f);
>  			}
>  		}
>  	}
> - insert:
> -	/* insert new address,  may fail if invalid address or dup. */
> -	fdb_insert(br, p, newaddr);
> +
> +	/* insert device addresses, may fail if invalid address. */
> +
> +	rcu_read_lock();
> +	for_each_dev_addr(dev, ha) {
> +		fdb_insert(br, p, ha->addr);
> +	}
> +	rcu_read_unlock();
>  
>  	spin_unlock_bh(&br->hash_lock);
>  }
> @@ -189,20 +202,9 @@ void br_fdb_delete_by_port(struct net_bridge *br,
>  			 * then when one port is deleted, assign
>  			 * the local entry to other port
>  			 */
> -			if (f->is_local) {
> -				struct net_bridge_port *op;
> -				list_for_each_entry(op, &br->port_list, list) {
> -					if (op != p &&
> -					    !compare_ether_addr(op->dev->dev_addr,
> -								f->addr.addr)) {
> -						f->dst = op;
> -						goto skip_delete;
> -					}
> -				}
> -			}
> -
> -			fdb_delete(f);
> -		skip_delete: ;
> +			if (!f->is_local ||
> +			    !another_port_has_addr(p, f))
> +				fdb_delete(f);
>  		}
>  	}
>  	spin_unlock_bh(&br->hash_lock);
> @@ -338,7 +340,7 @@ static struct net_bridge_fdb_entry *fdb_create(struct hlist_head *head,
>  }
>  
>  static int fdb_insert(struct net_bridge *br, struct net_bridge_port *source,
> -		  const unsigned char *addr)
> +		      const unsigned char *addr)
>  {
>  	struct hlist_head *head = &br->hash[br_mac_hash(addr)];
>  	struct net_bridge_fdb_entry *fdb;
> @@ -366,13 +368,42 @@ static int fdb_insert(struct net_bridge *br, struct net_bridge_port *source,
>  	return 0;
>  }
>  
> +static int fdb_insert_dev(struct net_bridge *br, struct net_bridge_port *source,
> +			  struct net_device *dev)
> +{
> +	struct netdev_hw_addr *ha, *ha2;
> +	struct net_bridge_fdb_entry *fdb;
> +	struct hlist_head *head;
> +	int ret = 0;
> +
> +	rcu_read_lock();
> +	for_each_dev_addr(dev, ha) {
> +		ret = fdb_insert(br, source, ha->addr);
> +		if (ret)
> +			goto unroll;
> +	}
> +	goto unlock;
> +unroll:
> +	for_each_dev_addr(dev, ha2) {
> +		if (ha2 == ha)
> +			break;
> +		head = &br->hash[br_mac_hash(ha2->addr)];
> +		fdb = fdb_find(head, ha2->addr);
> +		if (fdb && fdb->is_local)
> +			fdb_delete(fdb);
> +	}
> +unlock:
> +	rcu_read_unlock();
> +	return ret;
> +}
> +
>  int br_fdb_insert(struct net_bridge *br, struct net_bridge_port *source,
> -		  const unsigned char *addr)
> +		  struct net_device *dev)
>  {
>  	int ret;
>  
>  	spin_lock_bh(&br->hash_lock);
> -	ret = fdb_insert(br, source, addr);
> +	ret = fdb_insert_dev(br, source, dev);
>  	spin_unlock_bh(&br->hash_lock);
>  	return ret;
>  }
> diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c
> index 8a96672..789cb30 100644
> --- a/net/bridge/br_if.c
> +++ b/net/bridge/br_if.c
> @@ -392,7 +392,7 @@ int br_add_if(struct net_bridge *br, struct net_device *dev)
>  	if (err)
>  		goto err0;
>  
> -	err = br_fdb_insert(br, p, dev->dev_addr);
> +	err = br_fdb_insert(br, p, dev);
>  	if (err)
>  		goto err1;
>  
> diff --git a/net/bridge/br_notify.c b/net/bridge/br_notify.c
> index 763a3ec..1423541 100644
> --- a/net/bridge/br_notify.c
> +++ b/net/bridge/br_notify.c
> @@ -48,7 +48,7 @@ static int br_device_event(struct notifier_block *unused, unsigned long event, v
>  
>  	case NETDEV_CHANGEADDR:
>  		spin_lock_bh(&br->lock);
> -		br_fdb_changeaddr(p, dev->dev_addr);
> +		br_fdb_changeaddr(p, dev);
>  		br_stp_recalculate_bridge_id(br);
>  		spin_unlock_bh(&br->lock);
>  		break;
> diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h
> index b6c3b71..65ffe3d 100644
> --- a/net/bridge/br_private.h
> +++ b/net/bridge/br_private.h
> @@ -148,7 +148,7 @@ extern int br_fdb_init(void);
>  extern void br_fdb_fini(void);
>  extern void br_fdb_flush(struct net_bridge *br);
>  extern void br_fdb_changeaddr(struct net_bridge_port *p,
> -			      const unsigned char *newaddr);
> +			      struct net_device *dev);
>  extern void br_fdb_cleanup(unsigned long arg);
>  extern void br_fdb_delete_by_port(struct net_bridge *br,
>  				  const struct net_bridge_port *p, int do_all);
> @@ -161,7 +161,7 @@ extern int br_fdb_fillbuf(struct net_bridge *br, void *buf,
>  			  unsigned long count, unsigned long off);
>  extern int br_fdb_insert(struct net_bridge *br,
>  			 struct net_bridge_port *source,
> -			 const unsigned char *addr);
> +			 struct net_device *dev);
>  extern void br_fdb_update(struct net_bridge *br,
>  			  struct net_bridge_port *source,
>  			  const unsigned char *addr);

Won't this all break spanning tree which expects 1:1 relationship between
address and port.

  parent reply	other threads:[~2009-05-06 19:29 UTC|newest]

Thread overview: 213+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-13 18:33 [PATCH] bonding: allow bond in mode balance-alb to work properly in bridge Jiri Pirko
2009-03-13 18:33 ` [Bridge] " Jiri Pirko
2009-03-14  5:39 ` Stephen Hemminger
2009-03-14  5:39   ` [Bridge] " Stephen Hemminger
2009-03-14  9:49   ` Jiri Pirko
2009-03-14  9:49     ` [Bridge] " Jiri Pirko
2009-03-15 23:12     ` Stephen Hemminger
2009-03-15 23:12       ` [Bridge] " Stephen Hemminger
2009-03-16 11:11       ` Jiri Pirko
2009-03-16 11:11         ` [Bridge] " Jiri Pirko
2009-03-19  6:20         ` David Miller
2009-03-19  6:20           ` [Bridge] " David Miller
2009-03-19  8:44           ` Jiri Pirko
2009-03-19  8:44             ` [Bridge] " Jiri Pirko
2009-03-19 10:21             ` David Miller
2009-03-19 10:21               ` [Bridge] " David Miller
2009-03-19 11:19               ` Jiri Pirko
2009-03-19 11:19                 ` [Bridge] " Jiri Pirko
2009-03-19  8:50           ` Patrick McHardy
2009-03-19  8:50             ` [Bridge] " Patrick McHardy
2009-03-19 16:31             ` Jiri Pirko
2009-03-19 16:31               ` [Bridge] " Jiri Pirko
2009-03-25 13:04 ` [PATCH] bonding: allow bond in mode balance-alb to work properly in bridge -try2 Jiri Pirko
2009-03-25 13:04   ` [Bridge] " Jiri Pirko
2009-03-25 13:40   ` Eric Dumazet
2009-03-25 13:40     ` [Bridge] " Eric Dumazet
2009-03-25 14:39     ` Jiri Pirko
2009-03-25 14:39       ` [Bridge] " Jiri Pirko
2009-03-25 15:19 ` [PATCH] bonding: allow bond in mode balance-alb to work properly in bridge -try3 Jiri Pirko
2009-03-25 15:19   ` [Bridge] " Jiri Pirko
2009-03-25 16:31   ` Jay Vosburgh
2009-03-25 16:31     ` [Bridge] " Jay Vosburgh
2009-03-25 17:44     ` Jiri Pirko
2009-03-25 17:44       ` [Bridge] " Jiri Pirko
2009-03-26  0:24       ` David Miller
2009-03-26  0:24         ` [Bridge] " David Miller
2009-03-26  0:34       ` Jay Vosburgh
2009-03-26  0:34         ` [Bridge] " Jay Vosburgh
2009-03-26 11:12     ` Jiri Pirko
2009-03-26 11:12       ` [Bridge] " Jiri Pirko
2009-03-26 15:52 ` [PATCH] bonding: allow bond in mode balance-alb to work properly in bridge -try4 Jiri Pirko
2009-03-26 15:52   ` [Bridge] " Jiri Pirko
2009-03-27  7:38   ` David Miller
2009-03-27  7:38     ` [Bridge] " David Miller
2009-03-27  7:46     ` Jiri Pirko
2009-03-27  7:46       ` [Bridge] " Jiri Pirko
2009-03-27  7:53     ` Patrick McHardy
2009-03-27  7:53       ` [Bridge] " Patrick McHardy
2009-03-27  8:41       ` Jiri Pirko
2009-03-27  8:41         ` [Bridge] " Jiri Pirko
2009-03-27  8:55         ` Patrick McHardy
2009-03-27  8:55           ` [Bridge] " Patrick McHardy
2009-03-27  9:47           ` Jiri Pirko
2009-03-27  9:47             ` [Bridge] " Jiri Pirko
2009-03-29 20:53       ` David Miller
2009-03-29 20:53         ` [Bridge] " David Miller
2009-03-30 12:04         ` Patrick McHardy
2009-03-30 12:04           ` [Bridge] " Patrick McHardy
2009-03-30 12:40           ` Jiri Pirko
2009-03-30 12:40             ` [Bridge] " Jiri Pirko
2009-03-30 12:47             ` Patrick McHardy
2009-03-30 12:47               ` [Bridge] " Patrick McHardy
2009-03-30 12:52               ` Jiri Pirko
2009-03-30 12:52                 ` [Bridge] " Jiri Pirko
2009-03-30 12:58                 ` Patrick McHardy
2009-03-30 12:58                   ` [Bridge] " Patrick McHardy
2009-05-26 15:17   ` [PATCH net-next] bonding: allow bond in mode balance-alb to work properly in bridge -try4.1 Jiri Pirko
2009-05-26 15:17     ` [Bridge] " Jiri Pirko
2009-05-26 16:32     ` Andy Gospodarek
2009-05-26 16:32       ` [Bridge] " Andy Gospodarek
2009-05-27  8:25       ` Jiri Pirko
2009-05-27  8:25         ` [Bridge] " Jiri Pirko
2009-05-26 16:59     ` Eric Dumazet
2009-05-26 16:59       ` [Bridge] " Eric Dumazet
2009-05-27  8:42       ` Jiri Pirko
2009-05-27  8:42         ` [Bridge] " Jiri Pirko
2009-05-27 13:53     ` [PATCH net-next] bonding: allow bond in mode balance-alb to work properly in bridge -try4.2 Jiri Pirko
2009-05-27 13:53       ` [Bridge] " Jiri Pirko
2009-05-27 14:39       ` Eric Dumazet
2009-05-27 14:39         ` [Bridge] " Eric Dumazet
2009-05-28  9:57         ` Jiri Pirko
2009-05-28  9:57           ` [Bridge] " Jiri Pirko
2009-05-28 11:05       ` [PATCH net-next] bonding: allow bond in mode balance-alb to work properly in bridge -try4.3 Jiri Pirko
2009-05-28 11:05         ` [Bridge] " Jiri Pirko
2009-05-28 11:41         ` Eric Dumazet
2009-05-28 11:41           ` [Bridge] " Eric Dumazet
2009-05-29  8:52           ` David Miller
2009-05-29  8:52             ` [Bridge] " David Miller
2009-05-28 12:11         ` Andy Gospodarek
2009-05-28 12:11           ` [Bridge] " Andy Gospodarek
2009-04-13  8:37 ` [PATCH 0/4] bonding: allow bond in mode balance-alb to work properly in bridge -try5 Jiri Pirko
2009-04-13  8:37   ` [Bridge] " Jiri Pirko
2009-04-13  8:38   ` [PATCH 1/4] net: introduce dev_mac_address_changed Jiri Pirko
2009-04-13  8:38     ` [Bridge] " Jiri Pirko
2009-04-13 14:58     ` Stephen Hemminger
2009-04-13 14:58       ` [Bridge] " Stephen Hemminger
2009-04-13  8:42   ` [PATCH 2/4] net: introduce a list of device addresses dev_addr_list Jiri Pirko
2009-04-13  8:42     ` [Bridge] " Jiri Pirko
2009-04-13 14:49     ` Stephen Hemminger
2009-04-13 14:49       ` [Bridge] " Stephen Hemminger
2009-04-13 22:54       ` David Miller
2009-04-13 22:54         ` [Bridge] " David Miller
2009-04-13 22:53     ` David Miller
2009-04-13 22:53       ` [Bridge] " David Miller
2009-04-13  8:44   ` [PATCH 3/4] net: bridge: use device address list instead of dev_addr Jiri Pirko
2009-04-13  8:44     ` [Bridge] " Jiri Pirko
2009-04-13 14:54     ` Stephen Hemminger
2009-04-13 14:54       ` [Bridge] " Stephen Hemminger
2009-04-14 10:15       ` Jiri Pirko
2009-04-14 10:15         ` [Bridge] " Jiri Pirko
2009-04-13 22:54     ` David Miller
2009-04-13 22:54       ` [Bridge] " David Miller
2009-04-13  8:46   ` [PATCH 4/4] net: bonding: add slave device addresses in mode alb Jiri Pirko
2009-04-13  8:46     ` [Bridge] " Jiri Pirko
2009-04-13 14:56     ` Stephen Hemminger
2009-04-13 14:56       ` [Bridge] " Stephen Hemminger
2009-04-15  8:17 ` [PATCH 0/3] bonding: allow bond in mode balance-alb to work properly in bridge -try6 Jiri Pirko
2009-04-15  8:17   ` [Bridge] " Jiri Pirko
2009-04-15  8:18   ` [PATCH 1/3] net: introduce a list of device addresses dev_addr_list Jiri Pirko
2009-04-15  8:18     ` [Bridge] " Jiri Pirko
2009-04-15  8:26     ` Li Zefan
2009-04-15  8:26       ` [Bridge] " Li Zefan
2009-04-15  8:29       ` Jiri Pirko
2009-04-15  8:29         ` [Bridge] " Jiri Pirko
2009-04-15  8:32       ` Jiri Pirko
2009-04-15  8:32         ` [Bridge] " Jiri Pirko
2009-04-15  9:21         ` David Miller
2009-04-15  9:21           ` [Bridge] " David Miller
2009-04-15  9:27         ` Eric Dumazet
2009-04-15  9:27           ` [Bridge] " Eric Dumazet
2009-04-15  9:31           ` David Miller
2009-04-15  9:31             ` [Bridge] " David Miller
2009-04-15 10:13             ` Patrick McHardy
2009-04-15 10:13               ` [Bridge] " Patrick McHardy
2009-04-15 10:15               ` David Miller
2009-04-15 10:15                 ` [Bridge] " David Miller
2009-04-15 10:41                 ` Patrick McHardy
2009-04-15 10:41                   ` [Bridge] " Patrick McHardy
2009-04-15 10:45                   ` David Miller
2009-04-15 10:45                     ` [Bridge] " David Miller
2009-04-15 10:47                     ` Patrick McHardy
2009-04-15 10:47                       ` [Bridge] " Patrick McHardy
2009-04-15 14:42               ` Jiri Pirko
2009-04-15 14:42                 ` [Bridge] " Jiri Pirko
2009-04-15 11:17           ` Jiri Pirko
2009-04-15 11:17             ` [Bridge] " Jiri Pirko
2009-04-15 11:22             ` Patrick McHardy
2009-04-15 11:22               ` [Bridge] " Patrick McHardy
2009-04-15 11:28               ` Jiri Pirko
2009-04-15 11:28                 ` [Bridge] " Jiri Pirko
2009-04-15 12:28             ` Eric Dumazet
2009-04-15 12:28               ` [Bridge] " Eric Dumazet
2009-04-15 18:02     ` [PATCH 1/3] net: introduce a list of device addresses dev_addr_list (v2) Jiri Pirko
2009-04-15 18:02       ` [Bridge] " Jiri Pirko
2009-04-15 18:54       ` Eric Dumazet
2009-04-15 18:54         ` [Bridge] " Eric Dumazet
2009-04-16  8:46         ` Jiri Pirko
2009-04-16  8:46           ` [Bridge] " Jiri Pirko
2009-04-17 11:57       ` [PATCH 1/3] net: introduce a list of device addresses dev_addr_list (v3) Jiri Pirko
2009-04-17 11:57         ` [Bridge] " Jiri Pirko
2009-04-17 15:33         ` Stephen Hemminger
2009-04-17 15:33           ` [Bridge] " Stephen Hemminger
2009-04-18  7:01           ` Jiri Pirko
2009-04-18  7:01             ` [Bridge] " Jiri Pirko
2009-04-18  7:35             ` Eric Dumazet
2009-04-18  7:35               ` [Bridge] " Eric Dumazet
2009-04-18  7:44               ` Jiri Pirko
2009-04-18  7:44                 ` [Bridge] " Jiri Pirko
2009-04-18  8:06                 ` Eric Dumazet
2009-04-18  8:06                   ` [Bridge] " Eric Dumazet
2009-04-18  8:58         ` [PATCH 1/3] net: introduce a list of device addresses dev_addr_list (v4) Jiri Pirko
2009-04-18  8:58           ` [Bridge] " Jiri Pirko
2009-04-20 16:11           ` Jiri Pirko
2009-04-20 16:11             ` [Bridge] " Jiri Pirko
2009-04-23  8:09             ` Jiri Pirko
2009-04-23  8:09               ` [Bridge] " Jiri Pirko
2009-04-23  8:09               ` Jiri Pirko
2009-04-23 15:58           ` [Bonding-devel] " Stephen Hemminger
2009-04-23 15:58             ` [Bridge] " Stephen Hemminger
2009-04-24 21:26             ` Jiri Pirko
2009-04-24 21:26               ` [Bridge] " Jiri Pirko
2009-05-04 11:14           ` [PATCH] net: introduce a list of device addresses dev_addr_list (v5) Jiri Pirko
2009-05-04 11:14             ` [Bridge] " Jiri Pirko
2009-05-05  4:37             ` David Miller
2009-05-05  4:37               ` [Bridge] " David Miller
2009-05-05  6:37               ` Jiri Pirko
2009-05-05  6:37                 ` [Bridge] " Jiri Pirko
2009-05-05 12:48             ` [PATCH] net: introduce a list of device addresses dev_addr_list (v6) Jiri Pirko
2009-05-05 12:48               ` [Bridge] " Jiri Pirko
2009-05-05 19:27               ` David Miller
2009-05-05 19:27                 ` [Bridge] " David Miller
2009-05-08 22:38                 ` Stephen Hemminger
2009-05-08 22:38                   ` [Bridge] " Stephen Hemminger
2009-05-08 23:00                   ` David Miller
2009-05-08 23:00                     ` [Bridge] " David Miller
2009-05-08 23:12                     ` Stephen Hemminger
2009-05-08 23:12                       ` [Bridge] " Stephen Hemminger
2009-05-08 23:25                       ` David Miller
2009-05-08 23:25                         ` [Bridge] " David Miller
2009-05-08 23:29                         ` Stephen Hemminger
2009-05-08 23:29                           ` [Bridge] " Stephen Hemminger
2009-04-15  8:21   ` [PATCH 2/3] net: bridge: use device address list instead of dev_addr Jiri Pirko
2009-04-15  8:21     ` [Bridge] " Jiri Pirko
2009-05-06 14:46     ` [PATCH net-next] net: bridge: use device address list instead of dev_addr (repost) Jiri Pirko
2009-05-06 14:46       ` [Bridge] " Jiri Pirko
2009-05-06 15:08       ` Eric Dumazet
2009-05-06 15:08         ` [Bridge] " Eric Dumazet
2009-05-06 19:26       ` Stephen Hemminger [this message]
2009-05-06 19:26         ` Stephen Hemminger
2009-05-07 22:03         ` David Miller
2009-05-07 22:03           ` [Bridge] " David Miller
2009-04-15  8:22   ` [PATCH 3/3] net: bonding: add slave device addresses in mode alb Jiri Pirko
2009-04-15  8:22     ` [Bridge] " 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=20090506122645.456d9af4@nehalam \
    --to=shemminger@linux-foundation.org \
    --cc=bonding-devel@lists.sourceforge.net \
    --cc=bridge@lists.linux-foundation.org \
    --cc=dada1@cosmosbay.com \
    --cc=davem@davemloft.net \
    --cc=fubar@us.ibm.com \
    --cc=ivecera@redhat.com \
    --cc=jgarzik@pobox.com \
    --cc=jpirko@redhat.com \
    --cc=kaber@trash.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mschmidt@redhat.com \
    --cc=netdev@vger.kernel.org \
    /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.