Bug 517384 - OVS bridge network not being detected as a bridge network, causing tray widget to show disconnected icon for it instead of something more appropriate
Summary: OVS bridge network not being detected as a bridge network, causing tray widge...
Status: RESOLVED FIXED
Alias: None
Product: plasmashell
Classification: Plasma
Component: Networks widget (other bugs)
Version First Reported In: 6.6.2
Platform: Arch Linux Linux
: NOR normal
Target Milestone: 1.0
Assignee: Plasma Bugs List
URL:
Keywords: regression
Depends on:
Blocks:
 
Reported: 2026-03-10 10:46 UTC by i.serocco
Modified: 2026-06-11 14:45 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed/Implemented In: 6.7.0
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description i.serocco 2026-03-10 10:46:58 UTC
SUMMARY

OVS Bridge
Network tray icon on the KDE panel incorrectly shows a disconnection state when using a OVS bridge via nmcli.

Linux Bridge
If you pull out the cable, it doesn't show the disconnection state.

STEPS TO REPRODUCE
OVS Bridge
1)
export NET_DEV="enp4s0"
export NM_NAME="Wired connection 1"
sudo nmcli con add type ovs-bridge conn.interface ovs-bridge con-name ovs-bridge
sudo nmcli con add type ovs-port conn.interface port-ovs-bridge master ovs-bridge con-name ovs-bridge-port
sudo nmcli con add type ovs-interface slave-type ovs-port conn.interface ovs-bridge master ovs-bridge-port con-name ovs-bridge-int
sudo nmcli con add type ovs-port conn.interface ovs-port-eth master ovs-bridge con-name ovs-port-eth
sudo nmcli con add type ethernet conn.interface "${NET_DEV}" master ovs-port-eth con-name ovs-port-eth-int
sudo nmcli con modify ovs-bridge-int ipv4.method disabled ipv6.method disabled
sudo nmcli con modify ovs-bridge-int ipv4.method static ipv4.address "192.168.1.2/24" ipv4.gateway "192.168.1.1"  ipv4.dns "8.8.8.8"
sudo nmcli con modify ovs-bridge-int 802-3-ethernet.mtu 9000
sudo nmcli con modify ovs-port-eth-int 802-3-ethernet.mtu 9000
sudo nmcli con down "${NM_NAME}"
sudo nmcli con up ovs-port-eth-int
sudo nmcli con up ovs-bridge-int
sudo nmcli con modify "${NM_NAME}" ipv4.method disabled ipv6.method disabled
sudo nmcli con delete "${NM_NAME}"

2. Upgrade from Plasma to 6.6.2.
3. Notice the network tray icon showing a disconnection state

Linux Bridge
1. Follow the Arch Wiki guide: https://wiki.archlinux.org/title/Network_bridge#With_NetworkManager_2
2. Upgrade from Plasma 6.6.2.
3. Notice the network tray icon showing a connection state.
4. Pull out the cable, tray icon doesn't show the disconnection state.

OBSERVED RESULT
The network tray icon on the KDE panel shows an unexpected disconnection icon for OVS bridge.
The network tray icon on the KDE panel doesn't show the disconnection state when pull out the cable for Linux bridge.

EXPECTED RESULT
The network tray icon should show a connected state, as it did correctly in Plasma 6.5.5.

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: Arch Linux
KDE Plasma Version: 6.6.2
KDE Frameworks Version: 6.23.0
Qt Version: 6.10.2
Comment 1 Bug Janitor Service 2026-03-10 11:20:02 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-nm/-/merge_requests/540
Comment 2 i.serocco 2026-03-10 11:31:13 UTC
When the cable is disconnected, the network bridge does not disappear. Because of this, we do not see the disconnection status. The wired connection exists in the linux network bridge (or OVS bridge), and checking it in the 'setDisconnectedIcon' section seems reasonable
Comment 3 Nate Graham 2026-03-10 16:28:27 UTC
When I follow your steps, I get a bridge network without connectivity. Therefore the icon I'm expecting is a "limited connectivity" icon, not a "disconnected" icon. That's the bug I can reproduce.

In connectionIcon.cpp, it's hitting the fallback to show a disconnected icon right above "// Ignore other devices (bond/team etc.)" So the reason why the widget shows a disconnected icon is because plasma-nm doesn't know what kind of device this connection is. There's handling for NetworkManager::Device::Bridge types but apparently the connection isn't being detected as that.

I'm not a networking expert, but clearly you are and you're also competent at programming. Would you be willing to look into why this bridge network isn't being detected as a bridge network? If we fix that, I suspect everything will just start working as expected.
Comment 4 i.serocco 2026-03-10 16:49:12 UTC
            } else if (type == NetworkManager::Device::Bridge) {
                // TODO: use a not-yet created bridge-specific network icon here
                setConnectionIcon(QStringLiteral("network-wired-activated"));
                setConnectionTooltipIcon(QStringLiteral("network-wired-activated"));
            } else if (type == NetworkManager::Device::OvsBridge) {
                setConnectionIcon(QStringLiteral("network-wired-activated"));
                setConnectionTooltipIcon(QStringLiteral("network-wired-activated"));
            }

Not resolve problem. When we get the "connected" status and unplug the cable, the "disconnected" status doesn't appear.
Comment 5 i.serocco 2026-03-11 09:41:20 UTC
A live recording that reproduces the bug (Linux bridge)
https://www.youtube.com/watch?v=JXW4W0cW8So

Example command for *Linux bridge*
export NET_DEV="eth1"
export NM_NAME="Wired connection 1"
sudo nmcli con add ifname br0 type bridge con-name br0
sudo nmcli con add type bridge-slave ifname "${NET_DEV}" master br0 con-name br0-slave-"${NET_DEV}"
sudo ip link show dev br0
sudo ip link show dev "${NET_DEV}"
sudo nmcli con modify br0 ipv4.method disabled ipv6.method disabled
sudo nmcli con modify br0 ipv4.method static ipv4.address "192.168.1.2/24" ipv4.gateway "192.168.1.1"  ipv4.dns "8.8.8.8"
sudo nmcli con modify br0-slave-"${NET_DEV}" 802-3-ethernet.mtu 9000
sudo nmcli con modify br0 bridge.stp no
sudo nmcli con down "${NM_NAME}"
sudo nmcli con up br0

If we add code
            } else if (type == NetworkManager::Device::OvsBridge) {
                setConnectionIcon(QStringLiteral("network-wired-activated"));
                setConnectionTooltipIcon(QStringLiteral("network-wired-activated"));
            }
we will see the same for *OVS bridge*
Comment 6 Bug Janitor Service 2026-05-16 13:56:10 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-nm/-/merge_requests/568
Comment 7 i.serocco 2026-05-28 04:45:42 UTC
I rebase my branch. Please check and merge https://invent.kde.org/plasma/plasma-nm/-/merge_requests/568
Comment 8 Nate Graham 2026-05-28 20:11:47 UTC
Git commit 0c02f8388f4cb7f60cd32740534c4c7ecb566c03 by Nate Graham, on behalf of Ivan Perevalov.
Committed on 28/05/2026 at 20:11.
Pushed by ngraham into branch 'master'.

Fix bridge disconnect icon and add OvsBridge support

Pulling the cable from a bridge slave port left the tray icon stuck on
`network-wired-activated`, because NetworkManager keeps the bridge connection
active even after physical link loss. The old code unconditionally set the
activated icon for bridge devices. Fix and additions

Fix this by explicitly handling `NetworkManager::Device::OvsBridge` network
types and checking for the existence of any ethernet carriers; no carriers
means no network means disconnected icon.

M  +21   -7    libs/connectionicon.cpp
M  +1    -0    libs/connectionicon.h

https://invent.kde.org/plasma/plasma-nm/-/commit/0c02f8388f4cb7f60cd32740534c4c7ecb566c03
Comment 9 Nate Graham 2026-05-28 20:24:43 UTC
Git commit 7dcbce9c5dec58297f2ecb83f81dcb86b17cafa6 by Nate Graham.
Committed on 28/05/2026 at 20:14.
Pushed by ngraham into branch 'Plasma/6.7'.

Fix bridge disconnect icon and add OvsBridge support

Pulling the cable from a bridge slave port left the tray icon stuck on
`network-wired-activated`, because NetworkManager keeps the bridge connection
active even after physical link loss. The old code unconditionally set the
activated icon for bridge devices. Fix and additions

Fix this by explicitly handling `NetworkManager::Device::OvsBridge` network
types and checking for the existence of any ethernet carriers; no carriers
means no network means disconnected icon.


(cherry picked from commit 0c02f8388f4cb7f60cd32740534c4c7ecb566c03)

72ea3c09 Fix bridge disconnect icon and add OvsBridge support

Co-authored-by: Ivan Perevalov <i.serocco@gmail.com>

M  +21   -7    libs/connectionicon.cpp
M  +1    -0    libs/connectionicon.h

https://invent.kde.org/plasma/plasma-nm/-/commit/7dcbce9c5dec58297f2ecb83f81dcb86b17cafa6
Comment 10 Nate Graham 2026-06-11 14:45:16 UTC
Git commit 8ed56480b0b75799279789824831f3d600c22c88 by Nate Graham.
Committed on 11/06/2026 at 14:31.
Pushed by ngraham into branch 'Plasma/6.6'.

Fix bridge disconnect icon and add OvsBridge support

Pulling the cable from a bridge slave port left the tray icon stuck on
`network-wired-activated`, because NetworkManager keeps the bridge connection
active even after physical link loss. The old code unconditionally set the
activated icon for bridge devices. Fix and additions

Fix this by explicitly handling `NetworkManager::Device::OvsBridge` network
types and checking for the existence of any ethernet carriers; no carriers
means no network means disconnected icon.


(cherry picked from commit 0c02f8388f4cb7f60cd32740534c4c7ecb566c03)

72ea3c09 Fix bridge disconnect icon and add OvsBridge support

Co-authored-by: Ivan Perevalov <i.serocco@gmail.com>

M  +21   -7    libs/connectionicon.cpp
M  +1    -0    libs/connectionicon.h

https://invent.kde.org/plasma/plasma-nm/-/commit/8ed56480b0b75799279789824831f3d600c22c88