]> git.ipfire.org Git - thirdparty/lldpd.git/commitdiff
fix: Activate Tx fast start when there is a local change master
authorBreuninger Matthias (ETAS-ICA/XPC-Fe3) <matthias.breuninger@etas.com>
Mon, 22 Jun 2026 10:27:13 +0000 (12:27 +0200)
committerVincent Bernat <vincent@bernat.ch>
Mon, 22 Jun 2026 17:15:32 +0000 (19:15 +0200)
TX fast start shall also be initiated when something locally changes.
See IEEE802.1ab section 9.2.7.8, which specifies to re-initialize the variable `txFast` on a local change, to make sure that neighbors receive our changes.

src/daemon/lldpd.c

index d20f12057594061e7175a62e38bf6ba0ec66365a..1b0a2f84bd22b71410f76dce995a7a4c4a5d2e00 100644 (file)
@@ -414,6 +414,13 @@ lldpd_reset_timer(struct lldpd *cfg)
                        log_debug("localchassis",
                            "change detected for port %s, resetting its timer",
                            hardware->h_ifname);
                        log_debug("localchassis",
                            "change detected for port %s, resetting its timer",
                            hardware->h_ifname);
+                       /* Activate fast start on TX packet change (see IEEE802.1ab-2016 #9.2.7.8) */
+                       if (hardware->h_cfg->g_config.c_enable_fast_start) {
+                               log_debug("localchassis",
+                                   "%s: entering fast start due to local port change",
+                                   hardware->h_ifname);
+                               hardware->h_tx_fast = hardware->h_cfg->g_config.c_tx_fast_init;
+                       }
                        hardware->h_ifindex_changed = 0;
                        levent_schedule_pdu(hardware);
                }
                        hardware->h_ifindex_changed = 0;
                        levent_schedule_pdu(hardware);
                }