| From 2d2142471313e69e2ca78a067db18608af4ea13c Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 21 Dec 2021 12:13:45 +0100 |
| Subject: bonding: fix ad_actor_system option setting to default |
| |
| From: Fernando Fernandez Mancera <ffmancera@riseup.net> |
| |
| [ Upstream commit 1c15b05baea71a5ff98235783e3e4ad227760876 ] |
| |
| When 802.3ad bond mode is configured the ad_actor_system option is set to |
| "00:00:00:00:00:00". But when trying to set the all-zeroes MAC as actors' |
| system address it was failing with EINVAL. |
| |
| An all-zeroes ethernet address is valid, only multicast addresses are not |
| valid values. |
| |
| Fixes: 171a42c38c6e ("bonding: add netlink support for sys prio, actor sys mac, and port key") |
| Signed-off-by: Fernando Fernandez Mancera <ffmancera@riseup.net> |
| Acked-by: Jay Vosburgh <jay.vosburgh@canonical.com> |
| Link: https://lore.kernel.org/r/20211221111345.2462-1-ffmancera@riseup.net |
| Signed-off-by: Jakub Kicinski <kuba@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| Documentation/networking/bonding.txt | 11 ++++++----- |
| drivers/net/bonding/bond_options.c | 2 +- |
| 2 files changed, 7 insertions(+), 6 deletions(-) |
| |
| diff --git a/Documentation/networking/bonding.txt b/Documentation/networking/bonding.txt |
| index 57f52cdce32e4..07b53b2b13df8 100644 |
| --- a/Documentation/networking/bonding.txt |
| +++ b/Documentation/networking/bonding.txt |
| @@ -191,11 +191,12 @@ ad_actor_sys_prio |
| ad_actor_system |
| |
| In an AD system, this specifies the mac-address for the actor in |
| - protocol packet exchanges (LACPDUs). The value cannot be NULL or |
| - multicast. It is preferred to have the local-admin bit set for this |
| - mac but driver does not enforce it. If the value is not given then |
| - system defaults to using the masters' mac address as actors' system |
| - address. |
| + protocol packet exchanges (LACPDUs). The value cannot be a multicast |
| + address. If the all-zeroes MAC is specified, bonding will internally |
| + use the MAC of the bond itself. It is preferred to have the |
| + local-admin bit set for this mac but driver does not enforce it. If |
| + the value is not given then system defaults to using the masters' |
| + mac address as actors' system address. |
| |
| This parameter has effect only in 802.3ad mode and is available through |
| SysFs interface. |
| diff --git a/drivers/net/bonding/bond_options.c b/drivers/net/bonding/bond_options.c |
| index 258cb3999b0e3..5c6a962363096 100644 |
| --- a/drivers/net/bonding/bond_options.c |
| +++ b/drivers/net/bonding/bond_options.c |
| @@ -1408,7 +1408,7 @@ static int bond_option_ad_actor_system_set(struct bonding *bond, |
| mac = (u8 *)&newval->value; |
| } |
| |
| - if (!is_valid_ether_addr(mac)) |
| + if (is_multicast_ether_addr(mac)) |
| goto err; |
| |
| netdev_info(bond->dev, "Setting ad_actor_system to %pM\n", mac); |
| -- |
| 2.34.1 |
| |