bcm63xx: switch to b53 and swconfig

Switch to using the B53 switch driver where appropriate.

Use a non-tagged default config where it isn't confirmed to be
working.

Remove the switch configuration in preinit as the switch will now
be configured by the driver  to use port isolation to prevent leakage
between lan and wan.

While at it, also provide a switch config for Neufbox 6.

Signed-off-by: Jonas Gorski <jogo@openwrt.org>

SVN-Revision: 35307
This commit is contained in:
Jonas Gorski 2013-01-23 10:12:40 +00:00
parent 17d51121a6
commit 8411e5c06e
26 changed files with 265 additions and 63 deletions

View file

@ -15,7 +15,7 @@ include $(INCLUDE_DIR)/package.mk
define KernelPackage/switch
SUBMENU:=Other modules
DEPENDS:=@TARGET_brcm47xx||TARGET_brcm63xx
DEPENDS:=@TARGET_brcm47xx
TITLE:=Switch drivers
FILES:= \
$(PKG_BUILD_DIR)/switch-core.ko \

View file

@ -14,40 +14,88 @@ ucidef_set_interface_loopback
case "$board_name" in
96328avng |\
96328A-1241N |\
96328A-1441N1 |\
963281TAN |\
963281T_TEF |\
96348A-122 |\
96348W3 |\
96358-502V |\
CT6373-1 |\
AW4339U |\
CPVA642 |\
CT536_CT5621 |\
D-4P-W |\
"F@ST2604" |\
HW556* |\
NB6 |\
SPW303V |\
SPW500V |\
V2110 |\
96348W3)
SPW500V)
ucidef_set_interface_lan "eth0"
;;
AW4139)
96338GW |\
96338W |\
96338W2_E7T |\
96348A-122 |\
96348W3 |\
CPVA642 |\
CT536_CT5621 |\
CT6373-1 |\
D-4P-W |\
"F@ST2604" |\
RTA1320_16M |\
RTA770BW |\
V2110)
ucidef_set_interface_lan "eth0"
ucidef_add_switch "eth0" "1" "1"
ucidef_add_switch_vlan "eth0" "1" "0 1 2 3 4 5"
;;
96348GW |\
96348GW-10 |\
96348GW-11 |\
96348GW-A |\
96358VW |\
96358VW2 |\
AGPF-S0 |\
"CPVA502+" |\
DV201AMR |\
DWV-S0 |\
"F@ST2404" |\
HW553 |\
MAGIC |\
RTA1025W_16 |\
V2500V_BB)
ucidef_set_interfaces_lan_wan "eth1" "eth0"
ucidef_add_switch "eth1" "1" "1"
ucidef_add_switch_vlan "eth1" "1" "0 1 2 3 4 5"
;;
AW4139 |\
HW556*)
ucidef_set_interface_lan "eth0.1"
ucidef_add_switch "eth0" "1" "1"
ucidef_add_switch_vlan "eth0" "1" "0 1 2 3 4 5t"
;;
NB4-* |\
DVG3810BN)
ucidef_set_interfaces_lan_wan "eth1.1" "eth0"
ucidef_add_switch "eth1" "1" "1"
ucidef_add_switch_vlan "eth1" "1" "0 1 2 3 4 5t"
;;
96328avng |\
96328A-1241N |\
96328A-1441N1 |\
963281TAN |\
963281T_TEF |\
96368MVNgr)
ucidef_set_interface_lan "eth0.1"
ucidef_add_switch "eth0" "1" "1"
ucidef_add_switch_vlan "eth0" "1" "0 1 2 3 8t"
;;
96368MVWG)
ucidef_set_interface_lan "eth0.1"
ucidef_add_switch "eth0" "1" "1"
ucidef_add_switch_vlan "eth0" "1" "1 2 4 5 8t"
;;
NB6)
ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"
ucidef_add_switch "switch0" "1" "1"
ucidef_add_switch_vlan "switch0" "1" "1 2 3 4 9t"
ucidef_add_switch_vlan "switch0" "2" "0 9t"
;;
*)
ucidef_set_interfaces_lan_wan "eth1" "eth0"
;;

View file

@ -13,7 +13,7 @@ brcm63xx_has_reset_button=""
brcm63xx_detect() {
board_name=$(awk 'BEGIN{FS="[ \t:/]+"} /system type/ {print $4}' /proc/cpuinfo)
if [ "$board_name" = "96358VW" ] && [ -e /proc/switch/eth1/enable ]; then
if [ "$board_name" = "96358VW" ] && [ -n "$(swconfig dev eth1 help 2>/dev/null)" ]; then
board_name="DVAG3810BN"
fi

View file

@ -1,11 +1,6 @@
#!/bin/sh
failsafe_ip() {
[ -d "/proc/switch/$ifname" ] && {
ifconfig "$ifname" 0.0.0.0 down
echo "0 1 2 3 4 ${cpu_port:-5u*}" > "/proc/switch/$ifname/vlan/0/ports"
}
[ -n "$pi_ifname" ] && grep -q "$pi_ifname" /proc/net/dev && {
ifconfig $pi_ifname $pi_ip netmask $pi_netmask broadcast $pi_broadcast up
}

View file

@ -16,29 +16,12 @@ preinit_ip_deconfig() {
ifconfig $pi_ifname 0.0.0.0 down
}
fi
[ -d "/proc/switch/$ifname" ] && {
echo 1 > "/proc/switch/$ifname/reset"
echo "0 1 2 3 4 ${cpu_port:-5u*}" > "/proc/switch/$ifname/vlan/0/ports"
}
}
preinit_net_echo() {
preinit_ip
[ -d "/proc/switch/$ifname" ] && {
echo 1 > "/proc/switch/$ifname/reset"
# this would be easier if we blasted the message across all ports
# but we don't want packets leaking across interfaces
for port in $(seq 0 4); do {
echo "$port ${cpu_port:-5u*}" > "/proc/switch/$ifname/vlan/0/ports"
port_net_echo $1
}; done
echo "0 ${cpu_port:-5u*}" > "/proc/switch/$ifname/vlan/0/ports"
} || port_net_echo $1
port_net_echo $1
}

View file

@ -8,6 +8,11 @@ CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
CONFIG_AUDIT=y
CONFIG_AUDIT_GENERIC=y
CONFIG_B53=y
CONFIG_B53_MMAP_DRIVER=y
CONFIG_B53_PHY_DRIVER=y
CONFIG_B53_PHY_FIXUP=y
CONFIG_B53_SPI_DRIVER=y
CONFIG_BCM63XX=y
CONFIG_BCM63XX_CPU_6328=y
CONFIG_BCM63XX_CPU_6338=y

View file

@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -512,6 +512,54 @@ static struct board_info __initdata boar
@@ -512,6 +512,56 @@ static struct board_info __initdata boar
.has_ohci0 = 1,
};
@ -14,6 +14,8 @@
+ .has_uart0 = 1,
+
+ .enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },

View file

@ -22,7 +22,7 @@
static struct board_info board;
/*
@@ -709,6 +717,586 @@ static struct board_info __initdata boar
@@ -709,6 +717,596 @@ static struct board_info __initdata boar
.has_ohci0 = 1,
};
@ -77,6 +77,8 @@
+ },
+
+ .enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },
@ -188,6 +190,8 @@
+ },
+
+ .enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },
@ -299,6 +303,8 @@
+ },
+
+ .enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },
@ -410,6 +416,8 @@
+ },
+
+ .enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },
@ -516,6 +524,8 @@
+ },
+
+ .enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },

View file

@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -183,6 +183,38 @@ static struct board_info __initdata boar
@@ -183,6 +183,40 @@ static struct board_info __initdata boar
},
},
};
@ -12,6 +12,8 @@
+ .has_enet0 = 1,
+
+ .enet0 = {
+ .has_phy = 1,
+ .phy_id = 0,
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },

View file

@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -706,6 +706,96 @@ static struct board_info __initdata boar
@@ -706,6 +706,98 @@ static struct board_info __initdata boar
},
};
@ -13,6 +13,8 @@
+ .has_pci = 1,
+
+ .enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },

View file

@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -840,6 +840,59 @@ static struct board_info __initdata boar
@@ -840,6 +840,61 @@ static struct board_info __initdata boar
.has_ohci0 = 1,
};
@ -14,6 +14,8 @@
+ .has_pci = 1,
+
+ .enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },

View file

@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -767,6 +767,76 @@ static struct board_info __initdata boar
@@ -767,6 +767,78 @@ static struct board_info __initdata boar
},
},
};
@ -20,6 +20,8 @@
+ },
+ .enet1 = {
+ /* it has BP_ENET_EXTERNAL_PHY */
+ .has_phy = 1,
+ .phy_id = 0,
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },

View file

@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -1709,6 +1709,80 @@ static struct board_info __initdata boar
@@ -1709,6 +1709,82 @@ static struct board_info __initdata boar
.spis = nb4_spi_devices,
.num_spis = ARRAY_SIZE(nb4_spi_devices),
};
@ -21,6 +21,8 @@
+ },
+
+ .enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },

View file

@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -215,6 +215,43 @@ static struct board_info __initdata boar
@@ -215,6 +215,45 @@ static struct board_info __initdata boar
},
},
};
@ -13,6 +13,8 @@
+ .has_enet0 = 1,
+
+ .enet0 = {
+ .has_phy = 1,
+ .phy_id = 0,
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },

View file

@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -874,6 +874,63 @@ static struct board_info __initdata boar
@@ -874,6 +874,65 @@ static struct board_info __initdata boar
},
},
};
@ -19,6 +19,8 @@
+ .use_internal_phy = 1,
+ },
+ .enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },

View file

@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -438,6 +438,62 @@ static struct board_info __initdata boar
@@ -438,6 +438,64 @@ static struct board_info __initdata boar
},
};
@ -15,6 +15,8 @@
+ .has_pci = 1,
+
+ .enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },

View file

@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -494,6 +494,49 @@ static struct board_info __initdata boar
@@ -494,6 +494,51 @@ static struct board_info __initdata boar
};
@ -14,6 +14,8 @@
+ .has_pci = 1,
+
+ .enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },

View file

@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -537,6 +537,67 @@ static struct board_info __initdata boar
@@ -537,6 +537,69 @@ static struct board_info __initdata boar
},
};
@ -13,6 +13,8 @@
+ .has_pci = 1,
+
+ .enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },

View file

@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -1092,6 +1092,44 @@ static struct board_info __initdata boar
@@ -1092,6 +1092,46 @@ static struct board_info __initdata boar
},
},
};
@ -19,6 +19,8 @@
+ .use_internal_phy = 1,
+ },
+ .enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },

View file

@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -1337,6 +1337,57 @@ static struct board_info __initdata boar
@@ -1337,6 +1337,59 @@ static struct board_info __initdata boar
},
};
@ -14,6 +14,8 @@
+ .has_pci = 1,
+
+ .enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },

View file

@ -14,7 +14,7 @@
static struct board_info board;
/*
@@ -2264,6 +2271,111 @@ static struct board_info __initdata boar
@@ -2264,6 +2271,113 @@ static struct board_info __initdata boar
.num_spis = ARRAY_SIZE(nb4_spi_devices),
};
@ -64,6 +64,8 @@
+
+ .has_enet1 = 1,
+ .enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },

View file

@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -2515,6 +2515,71 @@ static struct board_info __initdata boar
@@ -2515,6 +2515,73 @@ static struct board_info __initdata boar
},
}
};
@ -23,6 +23,8 @@
+ },
+
+ .enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },

View file

@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -1013,6 +1013,55 @@ static struct board_info __initdata boar
@@ -1013,6 +1013,57 @@ static struct board_info __initdata boar
.has_ehci0 = 1,
};
@ -14,6 +14,8 @@
+
+ .has_enet1 = 1,
+ .enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },

View file

@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -738,6 +738,53 @@ static struct board_info __initdata boar
@@ -738,6 +738,55 @@ static struct board_info __initdata boar
.has_uart0 = 1,
};
@ -14,6 +14,8 @@
+ .has_enet0 = 1,
+
+ .enet0 = {
+ .has_phy = 1,
+ .phy_id = 0,
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },

View file

@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -2923,6 +2923,366 @@ static struct board_info __initdata boar
@@ -2923,6 +2923,374 @@ static struct board_info __initdata boar
},
};
@ -22,6 +22,8 @@
+
+ .has_enet1 = 1,
+ .enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },
@ -112,6 +114,8 @@
+
+ .has_enet1 = 1,
+ .enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },
@ -203,6 +207,8 @@
+
+ .has_enet1 = 1,
+ .enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },
@ -294,6 +300,8 @@
+
+ .has_enet1 = 1,
+ .enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },

View file

@ -0,0 +1,119 @@
--- linux-3.6.11/arch/mips/bcm63xx/boards/board_bcm963xx.c.orig 2013-01-05 21:18:15.153079713 +0100
+++ linux-3.6.11/arch/mips/bcm63xx/boards/board_bcm963xx.c 2013-01-05 21:18:27.899285369 +0100
@@ -583,6 +583,8 @@
.has_uart0 = 1,
.has_enet0 = 1,
.enet0 = {
+ .has_phy = 1,
+ .phy_id = 0,
.force_speed_100 = 1,
.force_duplex_full = 1,
},
@@ -626,6 +628,8 @@
.has_uart0 = 1,
.has_enet0 = 1,
.enet0 = {
+ .has_phy = 1,
+ .phy_id = 0,
.force_speed_100 = 1,
.force_duplex_full = 1,
},
@@ -857,6 +861,8 @@
.use_internal_phy = 1,
},
.enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
.force_speed_100 = 1,
.force_duplex_full = 1,
},
@@ -929,6 +935,8 @@
},
.enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
.force_speed_100 = 1,
.force_duplex_full = 1,
},
@@ -1158,6 +1166,8 @@
.use_internal_phy = 1,
},
.enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
.force_speed_100 = 1,
.force_duplex_full = 1,
},
@@ -1333,6 +1343,8 @@
},
.enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
.force_speed_100 = 1,
.force_duplex_full = 1,
},
@@ -1407,6 +1419,8 @@
.use_internal_phy = 1,
},
.enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
.force_speed_100 = 1,
.force_duplex_full = 1,
},
@@ -1428,6 +1442,8 @@
.use_internal_phy = 1,
},
.enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
.force_speed_100 = 1,
.force_duplex_full = 1,
},
@@ -1447,6 +1463,8 @@
.use_internal_phy = 1,
},
.enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
.force_speed_100 = 1,
.force_duplex_full = 1,
},
@@ -1822,6 +1840,8 @@
},
.enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
.force_speed_100 = 1,
.force_duplex_full = 1,
},
@@ -1874,6 +1894,8 @@
},
.enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
.force_speed_100 = 1,
.force_duplex_full = 1,
},
@@ -2014,6 +2036,8 @@
},
.enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
.force_speed_100 = 1,
.force_duplex_full = 1,
},
@@ -2131,6 +2155,8 @@
},
.enet1 = {
+ .has_phy = 1,
+ .phy_id = 0,
.force_speed_100 = 1,
.force_duplex_full = 1,
},