]> git.baikalelectronics.ru Git - kernel.git/commit
net: dsa: bcm_sf2: add HW bridging support
authorFlorian Fainelli <f.fainelli@gmail.com>
Tue, 24 Feb 2015 21:15:34 +0000 (13:15 -0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 25 Feb 2015 22:03:38 +0000 (17:03 -0500)
commit2601ef76c1dcabdb0bdca524bbc4c12f5997e8d0
treed0a46201df407c4719abade5cd44bcb86041b195
parenta0c33a0f2a2dd6a4524293a4edd2cd57a663e1f4
net: dsa: bcm_sf2: add HW bridging support

Implement the bridge join, leave and set_stp callbacks by making that
we do the following:

- when a port joins the bridge, all existing ports in the bridge get
  their VLAN control register updated with that joining port
- the joining port is including all existing bridge ports in its own
  VLAN control register

The leave operation is fairly similar, special care must be taken to
make sure that port leaving the bridging is not removing itself from its
own VLAN control register.

Since the various BR_* states apply directly to our HW semantics, we
just need to translate these constants into their corresponding HW
settings, and voila!

We make sure to trigger a fast-ageing process for ports that are
joining/leaving the bridge and transition from incompatible states, this
is equivalent to triggering an ARL flush for that port.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/bcm_sf2.c
drivers/net/dsa/bcm_sf2.h
drivers/net/dsa/bcm_sf2_regs.h