From patchwork Wed Feb 22 01:08:22 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mahesh Bandewar X-Patchwork-Id: 730849 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 3vSfPt39gBz9s7C for ; Wed, 22 Feb 2017 12:08:34 +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="KAqD9fyy"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753517AbdBVBI3 (ORCPT ); Tue, 21 Feb 2017 20:08:29 -0500 Received: from mail-pg0-f66.google.com ([74.125.83.66]:33097 "EHLO mail-pg0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753345AbdBVBI0 (ORCPT ); Tue, 21 Feb 2017 20:08:26 -0500 Received: by mail-pg0-f66.google.com with SMTP id 5so20835121pgj.0 for ; Tue, 21 Feb 2017 17:08:26 -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=5Nw+4hintV5p10c10I8keK2EPLCfV6/MEOWyGwARaGc=; b=KAqD9fyyvn12NUvCF0su3kAZdXxcghY5SJnzxYqmIz6CHMavZ/Vwdy4jx0JCCIWo3Z YUpTJr1sTjq0R3PGQsTiow7b5M/BSMj9pjcd+AeyD+rUBlBEXgduAaLWlxYhT/9myHuC rhFwpVG56uPySTvYmnJkzKrgMlV5mz2VOkuHGciEP0Z1EmWfF/DL/yz3YMoSaAGqtt8m vN6s5nOXl2Pd++KTXoKlAWvvG5fVwAumw4usq5RvFP7e6OBe+AkLyK7MHDacSmPCC8Yn Ndwv0Z643rh1yxqeapJHtG9MF5V5PTHLNyzkJ0AiJlEXNcdX746vo25vj0To4de44PtK rumQ== 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=5Nw+4hintV5p10c10I8keK2EPLCfV6/MEOWyGwARaGc=; b=C//pdv980q8Uk0FXXuANDGysfy+t60op5ODYi/pdbvcmRHOfvchheTgjroHPiPCImn TMBEbfwmB++ZK6QQ4Bmp35g2o816e0OP4QyURRVQHf1KOTolTOOkglsCPjx+dqN+PTpP A+FtOPnNZgutJYLjhwR3/YfpVaieaKPtOLOby7BMrqMC2Lb4CbhdCkD8R1/C4oogMzdo 3gokZD3qqsFk9L6xGj10wYqCbAZD6wla89yr/IzWqb5CJtGF0NdQvWNoL2O176+B0lGP TxjviqCLCQYCqwrEYncgC2wE2NX7/K3aQWeEraPCJx/M2n37yADky5YFdJmv2auBpBd2 7tQg== X-Gm-Message-State: AMke39mTcxLnNnTQSwYQiISxUF4FO06s3vLSr69OZWMs/e1btxQ9SMwyCl4LGuq3Vuxo4w== X-Received: by 10.99.217.17 with SMTP id r17mr38594694pgg.140.1487725705507; Tue, 21 Feb 2017 17:08:25 -0800 (PST) Received: from localhost ([2620:0:1000:3012:2026:4ec6:c66e:5600]) by smtp.gmail.com with ESMTPSA id l72sm21641667pfi.93.2017.02.21.17.08.24 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Tue, 21 Feb 2017 17:08:24 -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/4] bonding: restructure arp-monitor Date: Tue, 21 Feb 2017 17:08:22 -0800 Message-Id: <20170222010822.9746-1-mahesh@bandewar.net> X-Mailer: git-send-email 2.11.0.483.g087da7b7c-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 6321f12630c8..4e03807bb0d6 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); }