brctl showstp Shows Carrier Down Ports as Blocking

Issue

brctl showstp shows ports that are admin up/carrier down as blocking:

cumulus@switch$ sudo brctl show bridge
bridge  name bridge id     STP enabled  interfaces
bridge  8000.c45444bcfc8a  yes          swp1

cumulus@switch$ ip l sh swp1
28: swp1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast master bridge state DOWN mode DEFAULT qlen 500 
link/ether c4:54:44:bc:fc:8a brd ff:ff:ff:ff:ff:ff
 cumulus@switch$ sudo brctl showstp bridge
 ...
 swp1 (1)
 port id 8001 state blocking
 ...

Environment

  • Cumulus Linux, all versions

Resolution

Use mstpctl showportdetail BRIDGE PORT, which more accurately reflects the port state as Disabled/discarding.

cumulus@switch$ sudo mstpctl showportdetail bridge swp1
 bridge:swp1 
 CIST info enabled no role Disabled
 port id 8.001 state discarding
 ...