[ovs-dev] [bridge 14/15] bridge: Avoid flushing entire MAC learning table for common operations.

Ben Pfaff blp at nicira.com
Tue Mar 22 16:57:55 UTC 2011


On Mon, Mar 21, 2011 at 04:19:01PM -0700, Ethan Jackson wrote:
> On Mon, Mar 21, 2011 at 10:59 AM, Ben Pfaff <blp at nicira.com> wrote:
> > This commit breaks flushing the MAC table out of bridge_flush(). ?Instead,
> > each caller is now responsible for flushing the MAC table if it is
> > necessary. ?In a few cases, no flushing was necessary, so those callers
> > were not modified. ?In the case of removing a port or modifying its VLAN
> > assignments, it is necessary to expire all of the MAC learning entries
> > associated with that port, so this commit does that. ?Finally, some
> > operations do require a MAC learning flush but they are rare enough that
> > in my opinion it's not worth taking care to avoid a MAC table flush.
...
> > ?/* Bridge unixctl user interface functions. */
> > @@ -1519,7 +1518,7 @@ bridge_unixctl_fdb_show(struct unixctl_conn *conn,
> > ? ? LIST_FOR_EACH (e, lru_node, &br->ml->lrus) {
> > ? ? ? ? struct port *port = e->port.p;
> > ? ? ? ? ds_put_format(&ds, "%5d ?%4d ?"ETH_ADDR_FMT" ?%3d\n",
> > - ? ? ? ? ? ? ? ? ? ? ?port_get_an_iface(br->ports[port])->dp_ifidx,
> > + ? ? ? ? ? ? ? ? ? ? ?port_get_an_iface(port)->dp_ifidx,
> > ? ? ? ? ? ? ? ? ? ? ? e->vlan, ETH_ADDR_ARGS(e->mac), mac_entry_age(e));
> > ? ? }
> 
> This may have belonged in a previous commit as well.

Yes, thanks.  I moved it over there.



More information about the dev mailing list