From patchwork Tue Nov 6 12:14:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Meng Koon Lim X-Patchwork-Id: 10670221 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 20FCD14E2 for ; Tue, 6 Nov 2018 12:14:38 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 11EF82A3FF for ; Tue, 6 Nov 2018 12:14:38 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 107112A406; Tue, 6 Nov 2018 12:14:38 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.4 required=2.0 tests=BAYES_00,FREEMAIL_FROM, MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI,SUBJ_OBFU_PUNCT_FEW,SUBJ_OBFU_PUNCT_MANY autolearn=ham version=3.3.1 Received: from bastion.fedoraproject.org (bastion01.fedoraproject.org [209.132.181.2]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id AF7142A40F for ; Tue, 6 Nov 2018 12:14:37 +0000 (UTC) Received: from mailman01.phx2.fedoraproject.org (mailman01.phx2.fedoraproject.org [10.5.126.36]) by bastion01.phx2.fedoraproject.org (Postfix) with ESMTP id E6324641C755; Tue, 6 Nov 2018 12:14:36 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 bastion01.phx2.fedoraproject.org E6324641C755 Received: from mailman01.phx2.fedoraproject.org (localhost [IPv6:::1]) by mailman01.phx2.fedoraproject.org (Postfix) with ESMTP id DD2F225379284; Tue, 6 Nov 2018 12:14:36 +0000 (UTC) Received: by mailman01.phx2.fedoraproject.org (Postfix, from userid 991) id 8572725379284; Tue, 6 Nov 2018 12:14:31 +0000 (UTC) Received: from smtp-mm-ib01.fedoraproject.org (smtp-mm-ib01.vpn.fedoraproject.org [192.168.1.83]) by mailman01.phx2.fedoraproject.org (Postfix) with ESMTP id AC67625379281 for ; Tue, 6 Nov 2018 12:14:26 +0000 (UTC) Received: from 8c8590b355e5.ant.amazon.com (unknown [118.200.90.214]) by smtp-mm-ib01.fedoraproject.org (Postfix) with ESMTP id 19B96605D18B for ; Tue, 6 Nov 2018 12:14:26 +0000 (UTC) Received: by 8c8590b355e5.ant.amazon.com (Postfix, from userid 587976549) id 89BD413808DB; Tue, 6 Nov 2018 20:14:16 +0800 (+08) From: Meng Koon Lim To: libteam@lists.fedorahosted.org Subject: [patch libteam] teamd/teamd_runner_lacp:PORT_STATE_DEFAULTED use 0x02 Date: Tue, 6 Nov 2018 20:14:09 +0800 Message-Id: <20181106121409.37130-1-mengkoon@live.com> X-Mailer: git-send-email 2.14.3 (Apple Git-98) Message-ID-Hash: J5UFRVY7AMAMEVGELZXR3INXU7NNXLGS X-Message-ID-Hash: J5UFRVY7AMAMEVGELZXR3INXU7NNXLGS X-MailFrom: menglim@8c8590b355e5.ant.amazon.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: Meng Koon Lim , jiri@resnulli.us X-Mailman-Version: 3.1.1 Precedence: list List-Id: Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Virus-Scanned: ClamAV using ClamSMTP if new state is PORT_STATE_DEFAULTED, set lacp_port->partner.state to 0x02 This ensures LACPDU is sent to update the far side when local port transitions from default to current Currently, local port moves from default to current without sending LACPDU until 30sec later. This causes traffic disruption because far side has not completed negotiation Using 0x02 also cause LACPDU to be sent every 1 sec as long as port remains in defaulted state and LACP mode used is "active" Signed-off-by: Meng Koon Lim --- teamd/teamd_runner_lacp.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/teamd/teamd_runner_lacp.c b/teamd/teamd_runner_lacp.c index 7b8f0a7..555aa06 100644 --- a/teamd/teamd_runner_lacp.c +++ b/teamd/teamd_runner_lacp.c @@ -965,7 +965,12 @@ static int lacp_port_set_state(struct lacp_port *lacp_port, case PORT_STATE_DEFAULTED: teamd_loop_callback_disable(lacp_port->ctx, LACP_TIMEOUT_CB_NAME, lacp_port); - /* fall through */ + memset(&lacp_port->partner, 0, sizeof(lacp_port->partner)); + lacp_port->partner.state |= INFO_STATE_LACP_TIMEOUT; + err = lacp_port_partner_update(lacp_port); + if (err) + return err; + break; case PORT_STATE_DISABLED: memset(&lacp_port->partner, 0, sizeof(lacp_port->partner)); err = lacp_port_partner_update(lacp_port);