Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4bcfbec3 authored by Mahesh Bandewar's avatar Mahesh Bandewar Committed by Greg Kroah-Hartman
Browse files

bonding: pair enable_port with slave_arr_updates



[ Upstream commit 23de0d7b6f0e3f9a6283a882594c479949da1120 ]

When 803.2ad mode enables a participating port, it should update
the slave-array. I have observed that the member links are participating
and are part of the active aggregator while the traffic is egressing via
only one member link (in a case where two links are participating). Via
kprobes I discovered that slave-arr has only one link added while
the other participating link wasn't part of the slave-arr.

I couldn't see what caused that situation but the simple code-walk
through provided me hints that the enable_port wasn't always associated
with the slave-array update.

Fixes: ee637714 ("bonding: Simplify the xmit function for modes that use xmit_hash")
Signed-off-by: default avatarMahesh Bandewar <maheshb@google.com>
Acked-by: default avatarJay Vosburgh <jay.vosburgh@canonical.com>
Link: https://lore.kernel.org/r/20220207222901.1795287-1-maheshb@google.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent e432f25c
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1013,8 +1013,8 @@ static void ad_mux_machine(struct port *port, bool *update_slave_arr)
				if (port->aggregator &&
				    port->aggregator->is_active &&
				    !__port_is_enabled(port)) {

					__enable_port(port);
					*update_slave_arr = true;
				}
			}
			break;
@@ -1770,6 +1770,7 @@ static void ad_agg_selection_logic(struct aggregator *agg,
			     port = port->next_port_in_aggregator) {
				__enable_port(port);
			}
			*update_slave_arr = true;
		}
	}