On 9/12/25 12:16, Pradyumn Rahar wrote:
NetworkManager uses 0 to indicate that the option `arp_missed_max`
is in unset state as this option is not compatible with 802.3AD,
balance-tlb and balance-alb modes.
This causes kernel to report errors like this:
kernel: backend0: option arp_missed_max: invalid value (0)
kernel: backend0: option arp_missed_max: allowed values 1 - 255
NetworkManager[1766]: <error> [1757489103.9525] platform-linux: sysctl: failed to set 'bonding/arp_missed_max' to '0': (22) Invalid argument
NetworkManager[1766]: <warn> [1757489103.9525] device (backend0): failed to set bonding attribute 'arp_missed_max' to '0'
when NetworkManager tries to set this value to 0
Signed-off-by: Pradyumn Rahar <pradyumn.rahar@xxxxxxxxxx>
---
drivers/net/bonding/bond_options.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/bonding/bond_options.c b/drivers/net/bonding/bond_options.c
index 3b6f815c55ff..243fde3caecd 100644
--- a/drivers/net/bonding/bond_options.c
+++ b/drivers/net/bonding/bond_options.c
@@ -230,7 +230,7 @@ static const struct bond_opt_value bond_ad_user_port_key_tbl[] = {
};
static const struct bond_opt_value bond_missed_max_tbl[] = {
- { "minval", 1, BOND_VALFLAG_MIN},
+ { "minval", 0, BOND_VALFLAG_MIN},
{ "maxval", 255, BOND_VALFLAG_MAX},
{ "default", 2, BOND_VALFLAG_DEFAULT},
{ NULL, -1, 0},
This sounds like a problem in NetworkManager, why not fix it?
The kernel code is correct and there are many other options which don't make sense in these
modes, we're not going to add new states to them just to accommodate broken user-space code.
The option's definition clearly states:
.unsuppmodes = BIT(BOND_MODE_8023AD) | BIT(BOND_MODE_TLB) |
BIT(BOND_MODE_ALB)
Cheers,
Nik