From patchwork Wed Mar 8 18:55:51 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mahesh Bandewar X-Patchwork-Id: 736685 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 3vdjd94XSQz9s9c for ; Thu, 9 Mar 2017 06:04:45 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=bandewar-net.20150623.gappssmtp.com header.i=@bandewar-net.20150623.gappssmtp.com header.b="010e9jKq"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754055AbdCHTEL (ORCPT ); Wed, 8 Mar 2017 14:04:11 -0500 Received: from mail-pg0-f66.google.com ([74.125.83.66]:35119 "EHLO mail-pg0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753949AbdCHTEA (ORCPT ); Wed, 8 Mar 2017 14:04:00 -0500 Received: by mail-pg0-f66.google.com with SMTP id 187so4221882pgb.2 for ; Wed, 08 Mar 2017 11:03:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bandewar-net.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=L4p+YtawzaUf08Y1pJG6+6HaNaGwg67HTo2/4EApuF0=; b=010e9jKqc+JmgvY7EBn2jmoKmCcZ7CiGMALzRqfa+ABytZHAFtmdsxaZZD0dwAldTp +2EcpKrexi82pIor165gqQJRYopBsXMz7tA206NzT2jeumj405WnyZ+GAeD17hbnBzAL uRmI9cpHNwHOtHMKjZe03BjS1gXXUa4zmLE4pqkFtHEUv4C1tczlNAIqEzYNOzRfQTfP TMpvf1Go7Ns4iQM4I1BS9J+7yW2MqJhAM8kNjmTCaspCmr7039KUQtwVT5fmDe9ZwsSK FsK1a1cXkqoFgEPQNrorFV0PHs4ImgeGDYp7kUngXc64QBrZMn9KAZ4kplQF++dV/wOh uG8w== 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; bh=L4p+YtawzaUf08Y1pJG6+6HaNaGwg67HTo2/4EApuF0=; b=ozKYx+1X77fN4Q5s5MRWoMbohdZncWf1X6/UJyT3aj5d6Ah6HOd7TD66XJzHD+6s7U vCu92m/uyFRP9Oj8sMoFH0pveG6ZO84OQMzuI+bm8yVfg9An6AJBY8Xs0CPt9l85V7Zr ZbWIMEDHyJFr5+DVsCWpcDNR0O00ZZ9nAadj3+FfclMa7nHSrq8V17jnfntM8riQruuf N4zbWUwR/Ya/5DFVIk9im0lWCUcfrmGuC0ebhL61WCxBcY3hfkqq97871EIf77WC/Ea/ Mrzxrx6zYL3Plrfgvzvi3SexZx7p0S/RgnYzvg003hdCuJ2gQ3o83LAe2jju/32hH+dl EACA== X-Gm-Message-State: AMke39lfkXZgdzFjUCITIaJEcKyFGp3WmffMLr+wDd3O82CtTDQOfypXoCpgSSpzy4kedw== X-Received: by 10.98.86.152 with SMTP id h24mr9082175pfj.184.1488999353928; Wed, 08 Mar 2017 10:55:53 -0800 (PST) Received: from localhost ([2620:0:1000:3012:6431:729d:e1ee:a6dc]) by smtp.gmail.com with ESMTPSA id z189sm7739584pgb.3.2017.03.08.10.55.53 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Wed, 08 Mar 2017 10:55:53 -0800 (PST) From: Mahesh Bandewar To: Jay Vosburgh , Andy Gospodarek , Veaceslav Falico , Nikolay Aleksandrov , David Miller , Eric Dumazet Cc: netdev , Mahesh Bandewar , Mahesh Bandewar Subject: [PATCH next 1/5] bonding: restructure arp-monitor Date: Wed, 8 Mar 2017 10:55:51 -0800 Message-Id: <20170308185551.22934-1-mahesh@bandewar.net> X-Mailer: git-send-email 2.12.0.246.ga2ecc84866-goog Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Mahesh Bandewar In preparation to move the work-queue initialization to port creation from current port_open phase. Work-queue initialization does not make sense every time we do 'ifup/ifdown'. So moving to port creation phase. Arp monitoring work depends on the bonding mode and that is not tied to the port creation and can change anytime during the life after port creation. So this restructuring allows us to move the initialization at creation without losing the ability to arm the correct work for the mode user has selected. Signed-off-by: Mahesh Bandewar --- drivers/net/bonding/bond_main.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index 8a4ba8b88e52..619f0c65f18a 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -2575,10 +2575,8 @@ static bool bond_time_in_interval(struct bonding *bond, unsigned long last_act, * arp is transmitted to generate traffic. see activebackup_arp_monitor for * arp monitoring in active backup mode. */ -static void bond_loadbalance_arp_mon(struct work_struct *work) +static void bond_loadbalance_arp_mon(struct bonding *bond) { - struct bonding *bond = container_of(work, struct bonding, - arp_work.work); struct slave *slave, *oldcurrent; struct list_head *iter; int do_failover = 0, slave_state_changed = 0; @@ -2916,10 +2914,8 @@ static bool bond_ab_arp_probe(struct bonding *bond) return should_notify_rtnl; } -static void bond_activebackup_arp_mon(struct work_struct *work) +static void bond_activebackup_arp_mon(struct bonding *bond) { - struct bonding *bond = container_of(work, struct bonding, - arp_work.work); bool should_notify_peers = false; bool should_notify_rtnl = false; int delta_in_ticks; @@ -2972,6 +2968,17 @@ static void bond_activebackup_arp_mon(struct work_struct *work) } } +static void bond_arp_monitor(struct work_struct *work) +{ + struct bonding *bond = container_of(work, struct bonding, + arp_work.work); + + if (BOND_MODE(bond) == BOND_MODE_ACTIVEBACKUP) + bond_activebackup_arp_mon(bond); + else + bond_loadbalance_arp_mon(bond); +} + /*-------------------------- netdev event handling --------------------------*/ /* Change device name */ @@ -3228,10 +3235,7 @@ static void bond_work_init_all(struct bonding *bond) bond_resend_igmp_join_requests_delayed); INIT_DELAYED_WORK(&bond->alb_work, bond_alb_monitor); INIT_DELAYED_WORK(&bond->mii_work, bond_mii_monitor); - if (BOND_MODE(bond) == BOND_MODE_ACTIVEBACKUP) - INIT_DELAYED_WORK(&bond->arp_work, bond_activebackup_arp_mon); - else - INIT_DELAYED_WORK(&bond->arp_work, bond_loadbalance_arp_mon); + INIT_DELAYED_WORK(&bond->arp_work, bond_arp_monitor); INIT_DELAYED_WORK(&bond->ad_work, bond_3ad_state_machine_handler); INIT_DELAYED_WORK(&bond->slave_arr_work, bond_slave_arr_handler); }