diff options
| author | Peter Korsgaard <jacmet@sunsite.dk> | 2011-04-25 21:45:41 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2011-04-28 16:35:44 -0400 |
| commit | b3b270054b80e6195b1d2b2ce082239911261839 (patch) | |
| tree | abdebb8715a776d8ac9d8093ab84ffd8a2970f50 /net/dsa | |
| parent | 68972efa657040f891c7eda07c7da8c8dd576788 (diff) | |
dsa/mv88e6131: fix unknown multicast/broadcast forwarding on mv88e6085
The 88e6085 has a few differences from the other devices in the port
control registers, causing unknown multicast/broadcast packets to get
dropped when using the standard port setup.
At the same time update kconfig to clarify that the mv88e6085 is now
supported.
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
Acked-by: Lennert Buytenhek <buytenh@wantstofly.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/dsa')
| -rw-r--r-- | net/dsa/Kconfig | 4 | ||||
| -rw-r--r-- | net/dsa/mv88e6131.c | 26 |
2 files changed, 23 insertions, 7 deletions
diff --git a/net/dsa/Kconfig b/net/dsa/Kconfig index 87bb5f4de0e..c53ded2a98d 100644 --- a/net/dsa/Kconfig +++ b/net/dsa/Kconfig | |||
| @@ -41,12 +41,12 @@ config NET_DSA_MV88E6XXX_NEED_PPU | |||
| 41 | default n | 41 | default n |
| 42 | 42 | ||
| 43 | config NET_DSA_MV88E6131 | 43 | config NET_DSA_MV88E6131 |
| 44 | bool "Marvell 88E6095/6095F/6131 ethernet switch chip support" | 44 | bool "Marvell 88E6085/6095/6095F/6131 ethernet switch chip support" |
| 45 | select NET_DSA_MV88E6XXX | 45 | select NET_DSA_MV88E6XXX |
| 46 | select NET_DSA_MV88E6XXX_NEED_PPU | 46 | select NET_DSA_MV88E6XXX_NEED_PPU |
| 47 | select NET_DSA_TAG_DSA | 47 | select NET_DSA_TAG_DSA |
| 48 | ---help--- | 48 | ---help--- |
| 49 | This enables support for the Marvell 88E6095/6095F/6131 | 49 | This enables support for the Marvell 88E6085/6095/6095F/6131 |
| 50 | ethernet switch chips. | 50 | ethernet switch chips. |
| 51 | 51 | ||
| 52 | config NET_DSA_MV88E6123_61_65 | 52 | config NET_DSA_MV88E6123_61_65 |
diff --git a/net/dsa/mv88e6131.c b/net/dsa/mv88e6131.c index 3da418894ef..45f7411e90b 100644 --- a/net/dsa/mv88e6131.c +++ b/net/dsa/mv88e6131.c | |||
| @@ -207,8 +207,15 @@ static int mv88e6131_setup_port(struct dsa_switch *ds, int p) | |||
| 207 | * mode, but do not enable forwarding of unknown unicasts. | 207 | * mode, but do not enable forwarding of unknown unicasts. |
| 208 | */ | 208 | */ |
| 209 | val = 0x0433; | 209 | val = 0x0433; |
| 210 | if (p == dsa_upstream_port(ds)) | 210 | if (p == dsa_upstream_port(ds)) { |
| 211 | val |= 0x0104; | 211 | val |= 0x0104; |
| 212 | /* | ||
| 213 | * On 6085, unknown multicast forward is controlled | ||
| 214 | * here rather than in Port Control 2 register. | ||
| 215 | */ | ||
| 216 | if (ps->id == ID_6085) | ||
| 217 | val |= 0x0008; | ||
| 218 | } | ||
| 212 | if (ds->dsa_port_mask & (1 << p)) | 219 | if (ds->dsa_port_mask & (1 << p)) |
| 213 | val |= 0x0100; | 220 | val |= 0x0100; |
| 214 | REG_WRITE(addr, 0x04, val); | 221 | REG_WRITE(addr, 0x04, val); |
| @@ -251,10 +258,19 @@ static int mv88e6131_setup_port(struct dsa_switch *ds, int p) | |||
| 251 | * If this is the upstream port for this switch, enable | 258 | * If this is the upstream port for this switch, enable |
| 252 | * forwarding of unknown multicast addresses. | 259 | * forwarding of unknown multicast addresses. |
| 253 | */ | 260 | */ |
| 254 | val = 0x0080 | dsa_upstream_port(ds); | 261 | if (ps->id == ID_6085) |
| 255 | if (p == dsa_upstream_port(ds)) | 262 | /* |
| 256 | val |= 0x0040; | 263 | * on 6085, bits 3:0 are reserved, bit 6 control ARP |
| 257 | REG_WRITE(addr, 0x08, val); | 264 | * mirroring, and multicast forward is handled in |
| 265 | * Port Control register. | ||
| 266 | */ | ||
| 267 | REG_WRITE(addr, 0x08, 0x0080); | ||
| 268 | else { | ||
| 269 | val = 0x0080 | dsa_upstream_port(ds); | ||
| 270 | if (p == dsa_upstream_port(ds)) | ||
| 271 | val |= 0x0040; | ||
| 272 | REG_WRITE(addr, 0x08, val); | ||
| 273 | } | ||
| 258 | 274 | ||
| 259 | /* | 275 | /* |
| 260 | * Rate Control: disable ingress rate limiting. | 276 | * Rate Control: disable ingress rate limiting. |
