linux-yocto/drivers
Hangbin Liu ac511b5dd8 bonding: send LACPDUs periodically in passive mode after receiving partner's LACPDU
[ Upstream commit 0599640a21e98f0d6a3e9ff85c0a687c90a8103b ]

When `lacp_active` is set to `off`, the bond operates in passive mode, meaning
it only "speaks when spoken to." However, the current kernel implementation
only sends an LACPDU in response when the partner's state changes.

As a result, once LACP negotiation succeeds, the actor stops sending LACPDUs
until the partner times out and sends an "expired" LACPDU. This causes
continuous LACP state flapping.

According to IEEE 802.1AX-2014, 6.4.13 Periodic Transmission machine. The
values of Partner_Oper_Port_State.LACP_Activity and
Actor_Oper_Port_State.LACP_Activity determine whether periodic transmissions
take place. If either or both parameters are set to Active LACP, then periodic
transmissions occur; if both are set to Passive LACP, then periodic
transmissions do not occur.

To comply with this, we remove the `!bond->params.lacp_active` check in
`ad_periodic_machine()`. Instead, we initialize the actor's port's
`LACP_STATE_LACP_ACTIVITY` state based on `lacp_active` setting.

Additionally, we avoid setting the partner's state to
`LACP_STATE_LACP_ACTIVITY` in the EXPIRED state, since we should not assume
the partner is active by default.

This ensures that in passive mode, the bond starts sending periodic LACPDUs
after receiving one from the partner, and avoids flapping due to inactivity.

Fixes: 3a755cd8b7 ("bonding: add new option lacp_active")
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Link: https://patch.msgid.link/20250815062000.22220-3-liuhangbin@gmail.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2025-08-28 16:26:18 +02:00
..
accessibility
acpi ACPI: pfr_update: Fix the driver update version check 2025-08-28 16:26:09 +02:00
amba
android
ata ata: Fix SATA_MOBILE_LPM_POLICY description in Kconfig 2025-08-28 16:26:12 +02:00
atm atm: idt77252: Add missing dma_map_error() 2025-07-17 18:32:13 +02:00
auxdisplay auxdisplay: charlcd: Partially revert "Move hwidth and bwidth to struct hd44780_common" 2025-06-04 14:40:07 +02:00
base PM: runtime: Clear power.needs_force_resume in pm_runtime_reinit() 2025-08-28 16:25:53 +02:00
bcma
block drbd: add missing kref_get in handle_write_conflicts 2025-08-28 16:25:51 +02:00
bluetooth Bluetooth: btusb: QCA: Fix downloading wrong NVM for WCN6855 GF variant without board ID 2025-07-24 08:51:52 +02:00
bus bus: mhi: host: Detect events pointing to unexpected TREs 2025-08-28 16:26:05 +02:00
cdrom
char ipmi: Fix strcpy source and destination the same 2025-08-28 16:26:02 +02:00
clk clk: sunxi-ng: v3s: Fix de clock definition 2025-08-15 12:05:03 +02:00
clocksource clocksource: mips-gic-timer: Enable counter when CPUs start 2025-06-04 14:40:12 +02:00
comedi comedi: Fix use of uninitialized memory in do_insn_ioctl() and do_insnlist_ioctl() 2025-08-28 16:26:14 +02:00
connector
counter counter: interrupt-cnt: Protect enable/disable OPs with mutex 2025-06-27 11:07:16 +01:00
cpufreq cpufreq: armada-8k: Fix off by one in armada_8k_cpufreq_free_table() 2025-08-28 16:26:05 +02:00
cpuidle cpuidle: menu: Avoid discarding useful information 2025-06-04 14:40:11 +02:00
crypto crypto: qat - fix ring to service map for QAT GEN4 2025-08-28 16:26:12 +02:00
cxl
dax
dca
devfreq PM / devfreq: governor: Replace sscanf() with kstrtoul() in set_freq_store() 2025-08-28 16:25:52 +02:00
dio
dma dmaengine: stm32-dma: configure next sg only if there are more than 2 sgs 2025-08-28 16:26:00 +02:00
dma-buf dma-buf: fix timeout handling in dma_resv_wait_timeout v2 2025-07-10 15:59:53 +02:00
edac EDAC/synopsys: Clear the ECC counters on init 2025-08-28 16:25:52 +02:00
eisa
extcon
firewire
firmware firmware: arm_scmi: Ensure that the message-id supports fastchannel 2025-07-06 10:58:04 +02:00
fpga fpga: zynq_fpga: Fix the wrong usage of dma_map_sgtable() 2025-08-28 16:26:14 +02:00
fsi
gnss
gpio gpio: tps65912: check the return value of regmap_update_bits() 2025-08-28 16:25:53 +02:00
gpu drm/amd/display: Add null pointer check in mod_hdcp_hdcp1_create_session() 2025-08-28 16:26:17 +02:00
greybus
hid HID: apple: avoid setting up battery timer for devices without battery 2025-08-28 16:26:05 +02:00
hsi HSI: ssi_protocol: Fix use after free vulnerability in ssi_protocol Driver Due to Race Condition 2025-04-25 10:43:47 +02:00
hte
hv Drivers: hv: vmbus: Add utility function for querying ring size 2025-07-06 10:57:58 +02:00
hwmon hwmon: (gsc-hwmon) fix fan pwm setpoint show functions 2025-08-28 16:26:07 +02:00
hwspinlock
hwtracing coresight: Only check bottom two claim bits 2025-07-06 10:57:55 +02:00
i2c i2c: Force DLL0945 touchpad i2c freq to 100khz 2025-08-28 16:26:01 +02:00
i3c i3c: master: Initialize ret in i3c_i2c_notifier_call() 2025-08-28 16:26:01 +02:00
idle
iio iio: temperature: maxim_thermocouple: use DMA-safe buffer for spi_read() 2025-08-28 16:26:16 +02:00
infiniband RDMA/bnxt_re: Fix to initialize the PBL array 2025-08-28 16:26:17 +02:00
input Input: gpio-keys - fix a sleep while atomic with PREEMPT_RT 2025-08-15 12:04:45 +02:00
interconnect interconnect: qcom: sc8180x: specify num_nodes 2025-08-15 12:04:55 +02:00
iommu iommu/amd: Avoid stack buffer overflow from kernel cmdline 2025-08-28 16:26:17 +02:00
ipack
irqchip irqchip: Build IMX_MU_MSI only on ARM 2025-08-15 12:05:10 +02:00
isdn
leds leds: leds-lp50xx: Handle reg to get correct multi_index 2025-08-28 16:26:00 +02:00
macintosh
mailbox mailbox: Not protect module_put with spin_lock_irqsave 2025-07-06 10:57:54 +02:00
mcb mcb: fix a double free bug in chameleon_parse_gdd() 2025-05-02 07:46:57 +02:00
md dm-table: fix checking for rq stackable devices 2025-08-28 16:26:01 +02:00
media media: venus: Fix OOB read due to missing payload bound check 2025-08-28 16:26:11 +02:00
memory memory: omap-gpmc: drop no compatible check 2025-04-10 14:33:39 +02:00
memstick memstick: Fix deadlock by moving removing flag earlier 2025-08-28 16:26:13 +02:00
message
mfd mfd: max14577: Fix wakeup source leaks on device unbind 2025-07-06 10:57:54 +02:00
misc misc: rtsx: usb: Ensure mmc child device is active when card is present 2025-08-28 16:26:03 +02:00
mmc mmc: sdhci-pci-gli: GL9763e: Mask the replay timer timeout of AER 2025-08-28 16:26:16 +02:00
most most: core: Drop device reference after usage in get_channel() 2025-08-28 16:26:14 +02:00
mtd mtd: rawnand: renesas: Add missing check after DMA map 2025-08-28 16:26:07 +02:00
mux
net bonding: send LACPDUs periodically in passive mode after receiving partner's LACPDU 2025-08-28 16:26:18 +02:00
nfc
ntb ntb_hw_amd: Add NTB PCI ID for new gen CPU 2025-05-02 07:47:04 +02:00
nubus
nvdimm libnvdimm/labels: Fix divide error in nd_label_data_init() 2025-06-04 14:40:04 +02:00
nvme nvme: fix misaccounting of nvme-mpath inflight I/O 2025-07-24 08:51:52 +02:00
nvmem nvmem: layouts: u-boot-env: remove crc32 endianness conversion 2025-07-24 08:51:55 +02:00
of of: module: add buffer overflow check in of_modalias() 2025-05-02 07:47:08 +02:00
opp
parisc
parport
pci PCI: rockchip: Set Target Link Speed to 5.0 GT/s before retraining 2025-08-28 16:26:15 +02:00
pcmcia
peci
perf perf/arm-cmn: Initialise cmn->cpu earlier 2025-06-04 14:40:25 +02:00
phy phy: tegra: xusb: Fix unbalanced regulator disable in UTMI PHY mode 2025-07-24 08:51:47 +02:00
pinctrl pinctrl: stm32: Manage irq affinity settings 2025-08-28 16:26:00 +02:00
platform platform/chrome: cros_ec: Unregister notifier in cros_ec_unregister() 2025-08-28 16:26:11 +02:00
pnp
power power: supply: max14577: Handle NULL pdata when CONFIG_OF is not set 2025-08-15 12:05:01 +02:00
powercap powercap: dtpm_cpu: Fix NULL pointer dereference in get_pd_power_uw() 2025-08-15 12:04:54 +02:00
pps pps: clients: gpio: fix interrupt handling order in remove path 2025-08-28 16:25:53 +02:00
ps3
ptp ptp: Use ratelimite for freerun error message 2025-08-28 16:25:58 +02:00
pwm pwm: mediatek: Fix duty and period setting 2025-08-28 16:26:07 +02:00
rapidio drivers/rapidio/rio_cm.c: prevent possible heap overwrite 2025-06-27 11:07:36 +01:00
ras
regulator regulator: core: fix NULL dereference on unbind due to stale coupling data 2025-08-15 12:04:45 +02:00
remoteproc remoteproc: imx_rproc: skip clock enable when M-core is managed by the SCU 2025-08-28 16:25:52 +02:00
reset reset: brcmstb: Enable reset drivers for ARCH_BCM2835 2025-08-28 16:25:53 +02:00
rpmsg rpmsg: qcom_smd: Fix uninitialized return variable in __qcom_smd_send() 2025-06-27 11:07:15 +01:00
rtc rtc: ds1307: remove clear of oscillator stop flag (OSF) in probe 2025-08-28 16:26:03 +02:00
s390 s390/sclp: Fix SCCB present check 2025-08-28 16:26:13 +02:00
sbus
scsi scsi: qla4xxx: Prevent a potential error pointer dereference 2025-08-28 16:26:17 +02:00
sh
siox
slimbus
soc soc: qcom: mdt_loader: Ensure we don't read past the ELF header 2025-08-28 16:26:15 +02:00
soundwire soundwire: stream: restore params when prepare ports fail 2025-08-15 12:05:04 +02:00
spi spi: spi-fsl-dspi: Clear completion counter before initiating transfer 2025-07-10 15:59:47 +02:00
spmi
ssb
staging media: imx: fix a potential memory leak in imx_media_csc_scaler_device_init() 2025-08-28 16:26:08 +02:00
target scsi: target: core: Generate correct identifiers for PR OUT transport IDs 2025-08-28 16:26:02 +02:00
tc
tee tee: Prevent size calculation wraparound on 32-bit kernels 2025-06-27 11:07:36 +01:00
thermal thermal: sysfs: Return ENODATA instead of EAGAIN for reads 2025-08-28 16:25:53 +02:00
thunderbolt thunderbolt: Fix copy+paste error in match_service_id() 2025-08-28 16:26:04 +02:00
tty vt: defkeymap: Map keycodes above 127 to K_HOLE 2025-08-28 16:26:05 +02:00
ufs scsi: ufs: exynos: Fix programming of HCI_UTRL_NEXUS_TYPE 2025-08-28 16:26:15 +02:00
uio uio_hv_generic: Align ring size to system page 2025-07-06 10:57:58 +02:00
usb usb: dwc3: Remove WARN_ON for device endpoint command timeouts 2025-08-28 16:26:15 +02:00
vdpa vdpa/mlx5: Fix oversized null mkey longer than 32bit 2025-04-25 10:43:40 +02:00
vfio vfio/mlx5: fix possible overflow in tracking max message size 2025-08-28 16:26:02 +02:00
vhost vhost/vsock: Avoid allocating arbitrarily-sized SKBs 2025-08-28 16:26:07 +02:00
video Revert "vgacon: Add check for vc_origin address range in vgacon_scroll()" 2025-08-28 16:26:05 +02:00
virt fix locking in efi_secret_unlink() 2025-08-28 16:25:51 +02:00
virtio virtio_ring: Fix data race by tagging event_triggered as racy for KCSAN 2025-06-04 14:40:01 +02:00
vlynq
w1
watchdog watchdog: iTCO_wdt: Report error if timeout configuration fails 2025-08-28 16:25:59 +02:00
xen xen/gntdev: remove struct gntdev_copy_batch from stack 2025-08-15 12:04:58 +02:00
zorro
Kconfig
Makefile