From patchwork Mon Jan 26 06:17:00 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Toppins X-Patchwork-Id: 432661 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 224A61402B4 for ; Mon, 26 Jan 2015 17:20:31 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752945AbbAZGUZ (ORCPT ); Mon, 26 Jan 2015 01:20:25 -0500 Received: from mail-qc0-f169.google.com ([209.85.216.169]:64401 "EHLO mail-qc0-f169.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752810AbbAZGUS (ORCPT ); Mon, 26 Jan 2015 01:20:18 -0500 Received: by mail-qc0-f169.google.com with SMTP id b13so5678539qcw.0 for ; Sun, 25 Jan 2015 22:20:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cumulusnetworks.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Nt7PRDa3OHJC1Yb0hZT/H0SxBkLr73iEyjlXnjkA3Qw=; b=eqiLxw3YkM7UuHfSO3Gvs7KgGS8H90jEf69MDEUWjrHrJoF70fVPpaLQUacBVSnfox dRFSugoJriX694aVYRmPlzDhEoCx8+S/pDJdSZB80mgUFyFn5myPKqbkkmfUVykrljl4 IUsTD2+dTWzobtXCOFjX6TY2XhoW9Ee0On5c4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Nt7PRDa3OHJC1Yb0hZT/H0SxBkLr73iEyjlXnjkA3Qw=; b=S5ZkbQ9LLflrG1T/CIy17LGSFKlXcdxqkpm570+7mE6dDMWNKNbB5q2DElVprWvzLK JizOeUa8c1jHo9mu03Uoku2JkUcsVLr4FaKHobSdhZjYC5zNuBIQ8GwmQihcquHp5rLA 5U5TX5PpCt7oYJX3ogrIUD0XUMv64pWQsf+as9tYc+CFGSkwYg/epRp0tl7o/eMNdJDs 7dbwUBWVuvPBI/R6vC+W+bjyR/UPxU5QymswKuPX/EhX5moCWhwrBOByhw8owxKm+UiC ZKIRemdpATYRUhnKuw+bzPLumy0++uK5DfDZfs88IDJfHjOnjLoqtwmFcjlsdT5Ghs4K fSFg== X-Gm-Message-State: ALoCoQn4oPjq481DfumD5/k0r8lNu8+2IhAAxUZaAhdnSGWlppYcxyfFORS+WHm71Xz0E1PBYk5q X-Received: by 10.140.89.177 with SMTP id v46mr36161402qgd.58.1422253218240; Sun, 25 Jan 2015 22:20:18 -0800 (PST) Received: from debian-devel.instigatornetwork.net (cpe-173-095-150-122.nc.res.rr.com. [173.95.150.122]) by mx.google.com with ESMTPSA id r9sm5530610qac.27.2015.01.25.22.20.17 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 25 Jan 2015 22:20:17 -0800 (PST) From: Jonathan Toppins To: Jay Vosburgh , Veaceslav Falico , Andy Gospodarek Cc: netdev@vger.kernel.org, Satish Ashok , Andy Gospodarek Subject: [PATCH net-next v2 4/5] bonding: fix LACP PDU not sent on slave port sometimes Date: Mon, 26 Jan 2015 01:17:00 -0500 Message-Id: <1422253021-3798-5-git-send-email-jtoppins@cumulusnetworks.com> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1422253021-3798-1-git-send-email-jtoppins@cumulusnetworks.com> References: <1422253021-3798-1-git-send-email-jtoppins@cumulusnetworks.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Satish Ashok When a slave is added to a bond and it is not in full duplex mode, AD_PORT_LACP_ENABLED flag is cleared, due to this LACP PDU is not sent on slave. When the duplex is changed to full, the flag needs to be set to send LACP PDU. Cc: Andy Gospodarek Reviewed-by: Nikolay Aleksandrov Signed-off-by: Satish Ashok Signed-off-by: Jonathan Toppins Signed-off-by: Jay Vosburgh --- drivers/net/bonding/bond_3ad.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/net/bonding/bond_3ad.c b/drivers/net/bonding/bond_3ad.c index e3c96b2..cfc4a9c 100644 --- a/drivers/net/bonding/bond_3ad.c +++ b/drivers/net/bonding/bond_3ad.c @@ -2219,8 +2219,10 @@ static int bond_3ad_rx_indication(struct lacpdu *lacpdu, struct slave *slave, switch (lacpdu->subtype) { case AD_TYPE_LACPDU: ret = RX_HANDLER_CONSUMED; - netdev_dbg(slave->bond->dev, "Received LACPDU on port %d\n", - port->actor_port_number); + netdev_dbg(slave->bond->dev, + "Received LACPDU on port %d slave %s\n", + port->actor_port_number, + slave->dev->name); /* Protect against concurrent state machines */ spin_lock(&slave->bond->mode_lock); ad_rx_machine(lacpdu, port); @@ -2312,7 +2314,10 @@ void bond_3ad_adapter_duplex_changed(struct slave *slave) port->actor_admin_port_key &= ~AD_DUPLEX_KEY_MASKS; port->actor_oper_port_key = port->actor_admin_port_key |= __get_duplex(port); - netdev_dbg(slave->bond->dev, "Port %d changed duplex\n", port->actor_port_number); + netdev_dbg(slave->bond->dev, "Port %d slave %s changed duplex\n", + port->actor_port_number, slave->dev->name); + if (port->actor_oper_port_key & AD_DUPLEX_KEY_MASKS) + port->sm_vars |= AD_PORT_LACP_ENABLED; /* there is no need to reselect a new aggregator, just signal the * state machines to reinitialize */