Message ID | 17EC94B0A072C34B8DCF0D30AD16044A0296FEF5@BPXM09GP.gisp.nec.co.jp |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
On Thu, Jul 20, 2017 at 1:20 AM, Kosuke Tatsukawa <tatsu@ab.jp.nec.com> wrote: > balance-alb mode used to have transmit dynamic load balancing feature > enabled by default. However, transmit dynamic load balancing no longer > works in balance-alb after commit 8b426dc54cf4 ("bonding: remove > hardcoded value"). > > Both balance-tlb and balance-alb use the function bond_do_alb_xmit() to > send packets. This function uses the parameter tlb_dynamic_lb. > tlb_dynamic_lb used to have the default value of 1 for balance-alb, but > now the value is set to 0 except in balance-tlb. > > Re-enable transmit dyanmic load balancing by initializing tlb_dynamic_lb > for balance-alb similar to balance-tlb. > > Signed-off-by: Kosuke Tatsukawa <tatsu@ab.jp.nec.com> > Cc: stable@vger.kernel.org You probably should add: Fixes: 8b426dc54cf4 ("bonding: remove hardcoded value"). Otherwise this looks reasonable to me. Acked-by: Andy Gospodarek <andy@greyhouse.net> > --- > drivers/net/bonding/bond_main.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c > index 14ff622..181839d 100644 > --- a/drivers/net/bonding/bond_main.c > +++ b/drivers/net/bonding/bond_main.c > @@ -4596,7 +4596,7 @@ static int bond_check_params(struct bond_params *params) > } > ad_user_port_key = valptr->value; > > - if (bond_mode == BOND_MODE_TLB) { > + if ((bond_mode == BOND_MODE_TLB) || (bond_mode == BOND_MODE_ALB)) { > bond_opt_initstr(&newval, "default"); > valptr = bond_opt_parse(bond_opt_get(BOND_OPT_TLB_DYNAMIC_LB), > &newval); >
From: Kosuke Tatsukawa <tatsu@ab.jp.nec.com> Date: Thu, 20 Jul 2017 05:20:40 +0000 > balance-alb mode used to have transmit dynamic load balancing feature > enabled by default. However, transmit dynamic load balancing no longer > works in balance-alb after commit 8b426dc54cf4 ("bonding: remove > hardcoded value"). > > Both balance-tlb and balance-alb use the function bond_do_alb_xmit() to > send packets. This function uses the parameter tlb_dynamic_lb. > tlb_dynamic_lb used to have the default value of 1 for balance-alb, but > now the value is set to 0 except in balance-tlb. > > Re-enable transmit dyanmic load balancing by initializing tlb_dynamic_lb > for balance-alb similar to balance-tlb. > > Signed-off-by: Kosuke Tatsukawa <tatsu@ab.jp.nec.com> Applied and queued up for -stable, thanks. Andy, thanks for the Fixes: tag.
Reinis Rozitis reported that tlb_dynamic_lb was still 0 in balance-alb mode even when using linux-4.12.10 kernels, which includes this patch. It turned out that my previous patch only fixed the case when balance-alb mode was specified as bonding module parameter, and not when balance-alb mode was set using /sys/class/net/*/bonding/mode (the most common usage). In the latter case, tlb_dynamic_lb was set up according to the default mode of the bonding interface, which happens to be balance-rr. I'll send another patch to address this case. In the meantime, a workaround for this issue is to specify balance-tlb mode as a module parameter for bonding. This will change the value of tlb_balance_lb to 1, and make balance-alb work like pre-4.12 kernels. Best regards. > balance-alb mode used to have transmit dynamic load balancing feature > enabled by default. However, transmit dynamic load balancing no longer > works in balance-alb after commit 8b426dc54cf4 ("bonding: remove > hardcoded value"). > > Both balance-tlb and balance-alb use the function bond_do_alb_xmit() to > send packets. This function uses the parameter tlb_dynamic_lb. > tlb_dynamic_lb used to have the default value of 1 for balance-alb, but > now the value is set to 0 except in balance-tlb. > > Re-enable transmit dyanmic load balancing by initializing tlb_dynamic_lb > for balance-alb similar to balance-tlb. > > Signed-off-by: Kosuke Tatsukawa <tatsu@ab.jp.nec.com> > Cc: stable@vger.kernel.org > --- > drivers/net/bonding/bond_main.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c > index 14ff622..181839d 100644 > --- a/drivers/net/bonding/bond_main.c > +++ b/drivers/net/bonding/bond_main.c > @@ -4596,7 +4596,7 @@ static int bond_check_params(struct bond_params *params) > } > ad_user_port_key = valptr->value; > > - if (bond_mode == BOND_MODE_TLB) { > + if ((bond_mode == BOND_MODE_TLB) || (bond_mode == BOND_MODE_ALB)) { > bond_opt_initstr(&newval, "default"); > valptr = bond_opt_parse(bond_opt_get(BOND_OPT_TLB_DYNAMIC_LB), > &newval); --- Kosuke TATSUKAWA | 1st Platform Software Division | NEC Solution Innovators | tatsu@ab.jp.nec.com
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index 14ff622..181839d 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -4596,7 +4596,7 @@ static int bond_check_params(struct bond_params *params) } ad_user_port_key = valptr->value; - if (bond_mode == BOND_MODE_TLB) { + if ((bond_mode == BOND_MODE_TLB) || (bond_mode == BOND_MODE_ALB)) { bond_opt_initstr(&newval, "default"); valptr = bond_opt_parse(bond_opt_get(BOND_OPT_TLB_DYNAMIC_LB), &newval);
balance-alb mode used to have transmit dynamic load balancing feature enabled by default. However, transmit dynamic load balancing no longer works in balance-alb after commit 8b426dc54cf4 ("bonding: remove hardcoded value"). Both balance-tlb and balance-alb use the function bond_do_alb_xmit() to send packets. This function uses the parameter tlb_dynamic_lb. tlb_dynamic_lb used to have the default value of 1 for balance-alb, but now the value is set to 0 except in balance-tlb. Re-enable transmit dyanmic load balancing by initializing tlb_dynamic_lb for balance-alb similar to balance-tlb. Signed-off-by: Kosuke Tatsukawa <tatsu@ab.jp.nec.com> Cc: stable@vger.kernel.org --- drivers/net/bonding/bond_main.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)