From patchwork Mon Feb 17 13:39:16 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Veaceslav Falico X-Patchwork-Id: 320976 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 076712C00D1 for ; Tue, 18 Feb 2014 00:44:53 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753414AbaBQNou (ORCPT ); Mon, 17 Feb 2014 08:44:50 -0500 Received: from mx1.redhat.com ([209.132.183.28]:16172 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753370AbaBQNor (ORCPT ); Mon, 17 Feb 2014 08:44:47 -0500 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1HDiRq9007967 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 17 Feb 2014 08:44:27 -0500 Received: from darkmag.usersys.redhat.com (dhcp-27-102.brq.redhat.com [10.34.27.102]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1HDiCZM025700; Mon, 17 Feb 2014 08:44:25 -0500 From: Veaceslav Falico To: netdev@vger.kernel.org Cc: Veaceslav Falico , Rob Landley , "David S. Miller" , Nikolay Aleksandrov , Ding Tianhong , Neil Horman Subject: [PATCH v3 net-next 07/12] bonding: use the new options to correctly set last_arp_rx Date: Mon, 17 Feb 2014 14:39:16 +0100 Message-Id: <1392644361-8510-8-git-send-email-vfalico@redhat.com> In-Reply-To: <1392644361-8510-1-git-send-email-vfalico@redhat.com> References: <1392644361-8510-1-git-send-email-vfalico@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Now that the options are in place - arp_validate can be set to receive all the traffic or only arp packets to verify if the slave is up, when the slave isn't validated. CC: Rob Landley CC: "David S. Miller" CC: Nikolay Aleksandrov CC: Ding Tianhong CC: Neil Horman Signed-off-by: Veaceslav Falico --- drivers/net/bonding/bond_main.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index 257ee7f..3fe81cd 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -2255,15 +2255,16 @@ int bond_arp_rcv(const struct sk_buff *skb, struct bonding *bond, struct arphdr *arp = (struct arphdr *)skb->data; unsigned char *arp_ptr; __be32 sip, tip; - int alen; + int alen, is_arp = skb->protocol == __cpu_to_be16(ETH_P_ARP); - slave->last_arp_rx = jiffies; - - if (skb->protocol != __cpu_to_be16(ETH_P_ARP)) + if (!slave_do_arp_validate(bond, slave)) { + if ((slave_do_arp_validate_only(bond, slave) && is_arp) || + !slave_do_arp_validate_only(bond, slave)) + slave->last_arp_rx = jiffies; return RX_HANDLER_ANOTHER; - - if (!slave_do_arp_validate(bond, slave)) - goto out_unlock; + } else if (!is_arp) { + return RX_HANDLER_ANOTHER; + } alen = arp_hdr_len(bond->dev);