I am doing some testing of openwrt'd wireless access points, using madwifi-ng'd atheros radios. In the test configuration, I have three devices in a triangle, each has wds links to the other two devices. The ath0 interface is in ap mode, ath1 is a wds link to one device, and ath2 is a wds link to the other device. All three interfaces (and an ethernet interface) are in a bridge (br-lan) with STP on. The weird thing is that STP doesn't seem to ever block ports. The same firmware is on all three devices, a 2.6.23.1 kernel built from a r9512 checkout of openwrt's SVN repository. If I sniff the wds interfaces (ath1 and ath2) with tcpdump, I see STP packets, e.g.: <timestamp> STP 802.1d, Config, Flags [none], bridge-id 8000.<macaddr> where ath1 and ath2 show the STP packets with the local bridge-id, and ath1 *also* shows STP packets from the bridge-id of the bridge on the other side of the ath1 wds link. ath2 does not show a second bridge-id. The network is not completely stable. It gets out of whack occasionally (under not-fully-characterized conditions) and doesn't come back by itself, requiring strategic (random) power cycling until it works again. Clues? device 10.11.63.4: $ brctl show bridge name bridge id STP enabled interfaces br-lan 8000.00095bf7938d yes eth0.0 ath0 ath1 ath2 $ brctl showstp br-lan br-lan bridge id 8000.00095bf7938d designated root 8000.00095bf7938d root port 0 path cost 0 max age 20.00 bridge max age 50.00 hello time 2.00 bridge hello time 5.00 forward delay 0.00 bridge forward delay 0.00 ageing time 300.00 hello timer 1.26 tcn timer 0.00 topology change timer 0.00 gc timer 0.26 flags eth0.0 (1) port id 8001 state forwarding designated root 8000.00095bf7938d path cost 100 designated bridge 8000.00095bf7938d message age timer 0.00 designated port 8001 forward delay timer 0.00 designated cost 0 hold timer 0.25 flags ath0 (2) port id 8002 state forwarding designated root 8000.00095bf7938d path cost 100 designated bridge 8000.00095bf7938d message age timer 0.00 designated port 8002 forward delay timer 0.00 designated cost 0 hold timer 0.24 flags ath1 (3) port id 8003 state forwarding designated root 8000.00095bf7938d path cost 100 designated bridge 8000.00095bf7938d message age timer 0.00 designated port 8003 forward delay timer 0.00 designated cost 0 hold timer 0.23 flags ath2 (4) port id 8004 state forwarding designated root 8000.00095bf7938d path cost 100 designated bridge 8000.00095bf7938d message age timer 0.00 designated port 8004 forward delay timer 0.00 designated cost 0 hold timer 0.22 flags device 10.11.63.5: $ brctl show bridge name 8000.000fb50e69e9 yes eth0.0 ath0 ath1 ath2 $ brctl showstp br-lan br-lan bridge id 8000.000fb50e69e9 designated root 8000.000fb50e69e9 root port 0 path cost 0 max age 20.00 bridge max age 50.00 hello time 2.00 bridge hello time 5.00 forward delay 0.00 bridge forward delay 0.00 ageing time 300.00 hello timer 1.68 tcn timer 0.00 topology change timer 0.00 gc timer 0.68 flags eth0.0 (1) port id 8001 state forwarding designated root 8000.000fb50e69e9 path cost 100 designated bridge 8000.000fb50e69e9 message age timer 0.00 designated port 8001 forward delay timer 0.00 designated cost 0 hold timer 0.66 flags ath0 (2) port id 8002 state forwarding designated root 8000.000fb50e69e9 path cost 100 designated bridge 8000.000fb50e69e9 message age timer 0.00 designated port 8002 forward delay timer 0.00 designated cost 0 hold timer 0.66 flags ath1 (3) port id 8003 state forwarding designated root 8000.000fb50e69e9 path cost 100 designated bridge 8000.000fb50e69e9 message age timer 0.00 designated port 8003 forward delay timer 0.00 designated cost 0 hold timer 0.65 flags ath2 (4) port id 8004 state forwarding designated root 8000.000fb50e69e9 path cost 100 designated bridge 8000.000fb50e69e9 message age timer 0.00 designated port 8004 forward delay timer 0.00 designated cost 0 hold timer 0.64 flags device 10.11.63.6: $ brctl show bridge name bridge id STP enabled interfaces br-lan 8000.000fb50e4fc4 yes eth0.0 ath0 ath1 ath2 $ brctl showstp br-lan br-lan bridge id 8000.000fb50e4fc4 designated root 8000.000fb50e4fc4 root port 0 path cost 0 max age 20.00 bridge max age 50.00 hello time 2.00 bridge hello time 5.00 forward delay 0.00 bridge forward delay 0.00 ageing time 300.00 hello timer 1.81 tcn timer 0.00 topology change timer 0.00 gc timer 0.81 flags eth0.0 (1) port id 8001 state forwarding designated root 8000.000fb50e4fc4 path cost 100 designated bridge 8000.000fb50e4fc4 message age timer 0.00 designated port 8001 forward delay timer 0.00 designated cost 0 hold timer 0.79 flags ath0 (2) port id 8002 state forwarding designated root 8000.000fb50e4fc4 path cost 100 designated bridge 8000.000fb50e4fc4 message age timer 0.00 designated port 8002 forward delay timer 0.00 designated cost 0 hold timer 0.78 flags ath1 (3) port id 8003 state forwarding designated root 8000.000fb50e4fc4 path cost 100 designated bridge 8000.000fb50e4fc4 message age timer 0.00 designated port 8003 forward delay timer 0.00 designated cost 0 hold timer 0.76 flags ath2 (4) port id 8004 state forwarding designated root 8000.000fb50e4fc4 path cost 100 designated bridge 8000.000fb50e4fc4 message age timer 0.00 designated port 8004 forward delay timer 0.00 designated cost 0 hold timer 0.76 flags -- Russell Senior ``I have nine fingers; you have ten.'' seniorr@aracnet.com