2016-08-16 13:47 GMT+02:00 Jiri Pirko <jiri@resnulli.us>:
>However for a multi-lacp config, using the up_delay for the same purpose is
>an ugly hack. What there should be is a setting like
>runner.agg_select_delay that guarantees a link with a higher prio gets time
>to settle before actually being used.

That could be implemented. Feel free to send a patch.

Turns out I really do need to implement this or switch back to a stacked config, because up_delay is basically ignored by the lacp runner and a port switch happens as soon as the new port is up. Here's how this looks like in the logs (up_delay set to 90s):

Aug 17 13:36:56 vc1n3 teamd[5175]: enp17s0f0: Changed port state: "disabled" -> "expired"
Aug 17 13:36:56 vc1n3 kernel: bnx2 0000:11:00.0 enp17s0f0: NIC Copper Link is Up, 1000 Mbps full duplex
Aug 17 13:36:56 vc1n3 kernel:
Aug 17 13:36:57 vc1n3 teamd[5175]: enp17s0f0: Changed port state: "expired" -> "current"
Aug 17 13:36:59 vc1n3 kernel: igb 0000:06:00.0 eno2: igb: eno2 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
Aug 17 13:36:59 vc1n3 teamd[5175]: eno2: Changed port state: "disabled" -> "expired"
Aug 17 13:36:59 vc1n3 teamd[5175]: eno2: Changed port state: "expired" -> "current"
Aug 17 13:36:59 vc1n3 kernel: igb 0000:06:00.1 eno3: igb: eno3 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
Aug 17 13:36:59 vc1n3 teamd[5175]: eno3: Changed port state: "disabled" -> "expired"
Aug 17 13:36:59 vc1n3 teamd[5175]: eno3: Changed port state: "expired" -> "current"
Aug 17 13:37:07 vc1n3 teamd[5175]: eno2: Changed port state: "current" -> "expired"
Aug 17 13:37:07 vc1n3 teamd[5175]: eno2: Changed port state: "expired" -> "current"
Aug 17 13:37:07 vc1n3 teamd[5175]: eno3: Changed port state: "current" -> "expired"
Aug 17 13:37:07 vc1n3 teamd[5175]: eno3: Changed port state: "expired" -> "current"
Aug 17 13:38:26 vc1n3 teamd[5175]: enp17s0f0: ethtool-link went up.
Aug 17 13:38:29 vc1n3 teamd[5175]: eno2: ethtool-link went up.
Aug 17 13:38:29 vc1n3 teamd[5175]: eno3: ethtool-link went up.