From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr0-f193.google.com (mail-wr0-f193.google.com [209.85.128.193]) by dpdk.org (Postfix) with ESMTP id 44E271B270 for ; Mon, 30 Oct 2017 16:38:02 +0100 (CET) Received: by mail-wr0-f193.google.com with SMTP id o44so13034492wrf.11 for ; Mon, 30 Oct 2017 08:38:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=qWYAvUGoYpPaHvv2bcy1AtKxdXPY1xqrgQT5cx02msk=; b=FmcOQTcp68jpsJhj/lQ3qQyyZzEH8sV/QOjkPJYTZdxsDa3YtFLMfsmgnlee7rUH7Z tiqqLX4LlxSMF3yLhFPGyXx29V/D0H9FPNx1F7bD9d46SPI+SlWdFWov3zoTywLHLuAL i8WGTeAlHfSrNFY4INXlMw5sbhO+Tstq0vwQUtsERlrFB6VS4ckKRb91JtKstnMwd+Sc bgfKTUC5jqSlhDz6qaOBl64j8cJp0190+d25mtyT9f0t/1xTV/8lPlFO+rZad0yLgbCP WaHv0olTYJ9sMzsYBywg/niAZWrhD9FtM1B0+2qMkm2wNJAsouLMnwmFpWXfu+Qsf7pk Rb4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=qWYAvUGoYpPaHvv2bcy1AtKxdXPY1xqrgQT5cx02msk=; b=PX+I/5nIl1kKru3ZOfEyJhjsTlmGM46RmzTsVy5uDHIK3qiTXDnjerREC5HH2+Q38J rwJxJS0PFHqLxUkO7cTYCx14iz/0gsnyv5FRTy4U4rkV9oNTivrad8fpzyijJMZEDSMX 1dmYAdSaoQISG0k5DREsd6RFHCffAHlHVlygmEsr/0swww+cyPdKB6MyYUYds/xJrTTC vbAcUrhNR9ohGYJMyKQS8SaQUfP9f7unK2GMfXA1eP5v30bwrn+wS+QbnyESJ2cC2kOv ifRiksoGc8MkLNSyJjh5MGRnLzL/9pHhpPd326l4jfC0IITUzDtlK9siKTAqUCk/awRY NE6w== X-Gm-Message-State: AMCzsaXhIhTWCxQKqoA6wVcph4S2XRLDq+P9SHk8jeCAo//6yw0Ck+af /Byd9pwIQT3LcnoA0PKq2QuqRQeqi9g= X-Google-Smtp-Source: ABhQp+QO5MfcRAQCmb/W3H+EugKMh2uGOCQWzIiB6Bhx7JFJutNc/5CdJfcGAI7MYSnxy9HOeT7PDQ== X-Received: by 10.223.129.198 with SMTP id 64mr7574399wra.59.1509377881979; Mon, 30 Oct 2017 08:38:01 -0700 (PDT) Received: from localhost ([2a00:23c5:bef3:400:4a51:b7ff:fe0b:4749]) by smtp.gmail.com with ESMTPSA id k105sm13263457wrc.90.2017.10.30.08.38.01 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 30 Oct 2017 08:38:01 -0700 (PDT) From: luca.boccassi@gmail.com To: Declan Doherty Cc: dpdk stable Date: Mon, 30 Oct 2017 15:34:50 +0000 Message-Id: <20171030153511.13322-47-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171030153511.13322-1-luca.boccassi@gmail.com> References: <20171030153511.13322-1-luca.boccassi@gmail.com> Subject: [dpdk-stable] patch 'net/bonding: fix LACP slave deactivate behavioral' has been queued to LTS release 16.11.4 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Oct 2017 15:38:02 -0000 Hi, FYI, your patch has been queued to LTS release 16.11.4 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 11/01/17. So please shout if anyone has objections. Thanks. Kind regards, Luca Boccassi --- >>From b0e03642711c7b7c036150df75845ef4edc96574 Mon Sep 17 00:00:00 2001 From: Declan Doherty Date: Fri, 6 Oct 2017 10:21:12 +0100 Subject: [PATCH] net/bonding: fix LACP slave deactivate behavioral [ upstream commit 5840f427120c8e5c5d8557fe67da056a20f18888 ] During a link down event of a port participating in a LACP 802.3ad bond the current behavior can cause all ports to be deselected and temporarily stop all traffic on the bond, causing unexpected traffic loss across all ports and not just the port which was affected by the link down event. Fixes: 46fb43683679 ("bond: add mode 4") Signed-off-by: Declan Doherty --- drivers/net/bonding/rte_eth_bond_8023ad.c | 41 +++++++++++++------------------ 1 file changed, 17 insertions(+), 24 deletions(-) diff --git a/drivers/net/bonding/rte_eth_bond_8023ad.c b/drivers/net/bonding/rte_eth_bond_8023ad.c index b4a1e7271..8081981c7 100644 --- a/drivers/net/bonding/rte_eth_bond_8023ad.c +++ b/drivers/net/bonding/rte_eth_bond_8023ad.c @@ -934,37 +934,30 @@ bond_mode_8023ad_activate_slave(struct rte_eth_dev *bond_dev, uint8_t slave_id) } int -bond_mode_8023ad_deactivate_slave(struct rte_eth_dev *bond_dev, +bond_mode_8023ad_deactivate_slave(struct rte_eth_dev *bond_dev __rte_unused, uint8_t slave_id) { - struct bond_dev_private *internals = bond_dev->data->dev_private; void *pkt = NULL; - struct port *port; - uint8_t i; - - /* Given slave must be in active list */ - RTE_ASSERT(find_slave_by_id(internals->active_slaves, - internals->active_slave_count, slave_id) < internals->active_slave_count); - - /* Exclude slave from transmit policy. If this slave is an aggregator - * make all aggregated slaves unselected to force selection logic - * to select suitable aggregator for this port. */ - for (i = 0; i < internals->active_slave_count; i++) { - port = &mode_8023ad_ports[internals->active_slaves[i]]; - if (port->aggregator_port_id != slave_id) - continue; - - port->selected = UNSELECTED; - - /* Use default aggregator */ - port->aggregator_port_id = internals->active_slaves[i]; - } + struct port *port = NULL; + uint8_t old_partner_state; port = &mode_8023ad_ports[slave_id]; + + ACTOR_STATE_CLR(port, AGGREGATION); port->selected = UNSELECTED; - port->actor_state &= ~(STATE_SYNCHRONIZATION | STATE_DISTRIBUTING | - STATE_COLLECTING); + old_partner_state = port->partner_state; + record_default(port); + + /* If partner timeout state changes then disable timer */ + if (!((old_partner_state ^ port->partner_state) & + STATE_LACP_SHORT_TIMEOUT)) + timer_cancel(&port->current_while_timer); + + PARTNER_STATE_CLR(port, AGGREGATION); + ACTOR_STATE_CLR(port, EXPIRED); + + /* flush rx/tx rings */ while (rte_ring_dequeue(port->rx_ring, &pkt) == 0) rte_pktmbuf_free((struct rte_mbuf *)pkt); -- 2.11.0