]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: hsr: hsr_slave: Fix the promiscuous mode in offload mode
authorRavi Gunasekaran <r-gunasekaran@ti.com>
Fri, 22 Mar 2024 10:04:47 +0000 (15:34 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 19 Sep 2025 14:30:00 +0000 (16:30 +0200)
commit b11c81731c810efe592e510bb0110e0db6877419 upstream.

commit e748d0fd66ab ("net: hsr: Disable promiscuous mode in
offload mode") disables promiscuous mode of slave devices
while creating an HSR interface. But while deleting the
HSR interface, it does not take care of it. It decreases the
promiscuous mode count, which eventually enables promiscuous
mode on the slave devices when creating HSR interface again.

Fix this by not decrementing the promiscuous mode count while
deleting the HSR interface when offload is enabled.

Fixes: e748d0fd66ab ("net: hsr: Disable promiscuous mode in offload mode")
Signed-off-by: Ravi Gunasekaran <r-gunasekaran@ti.com>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Link: https://lore.kernel.org/r/20240322100447.27615-1-r-gunasekaran@ti.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/hsr/hsr_slave.c

index 52302a054613363cb3cc2ed99bc06956269448ff..b8230faa567f77a3dccdcd1278541955b8b283db 100644 (file)
@@ -226,7 +226,8 @@ void hsr_del_port(struct hsr_port *port)
                netdev_update_features(master->dev);
                dev_set_mtu(master->dev, hsr_get_max_mtu(hsr));
                netdev_rx_handler_unregister(port->dev);
-               dev_set_promiscuity(port->dev, -1);
+               if (!port->hsr->fwd_offloaded)
+                       dev_set_promiscuity(port->dev, -1);
                netdev_upper_dev_unlink(port->dev, master->dev);
        }