From patchwork Sun Nov 28 01:15:35 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxim Levitsky X-Patchwork-Id: 73314 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 38060B70CD for ; Sun, 28 Nov 2010 12:16:03 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753612Ab0K1BPz (ORCPT ); Sat, 27 Nov 2010 20:15:55 -0500 Received: from mail-bw0-f46.google.com ([209.85.214.46]:55574 "EHLO mail-bw0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753510Ab0K1BPx (ORCPT ); Sat, 27 Nov 2010 20:15:53 -0500 Received: by mail-bw0-f46.google.com with SMTP id 15so2883308bwz.19 for ; Sat, 27 Nov 2010 17:15:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:from:to:cc:subject:date :message-id:x-mailer:in-reply-to:references; bh=GV6Le0qlCNo/28qQMsJSG+JEopZ0TmLEnsDkznmWz74=; b=odbGS2Qn8Rbeh9mTEcKq1/Rwc+RU1myKWBMWMGECavB1F05uQMlljsIgs1lvVNquzu esjczaSNh2WlV+is2l7V7Gt1yBl+ynCQmN34r+6i9d+esjDevKoE9cOBGxKTsasMqFqL k+8RsKigR1zeUyYS+ktc6u/9AYsM8Il/4hcmU= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; b=qw+M+Nojw1V+j4dKBUPDPRqb/pt8pW0+fVeRi8va9rjVEsDU8BrFn8+cL7hbW8x5+L ALLd+Z8piIufIczKhIi5ZxyzRBgGIdb2sCfq/ABkk4ezzRv+Lk5EG3RzFD3ZOeWhxbMu 4X2D00BhW5aqOoix8RrAdMN2Q6SdlThyCse0Q= Received: by 10.204.100.17 with SMTP id w17mr3366792bkn.43.1290906952497; Sat, 27 Nov 2010 17:15:52 -0800 (PST) Received: from maxim-laptop ([77.125.106.90]) by mx.google.com with ESMTPS id g8sm1231117bkg.23.2010.11.27.17.15.50 (version=SSLv3 cipher=RC4-MD5); Sat, 27 Nov 2010 17:15:51 -0800 (PST) From: Maxim Levitsky To: linux1394-devel Cc: Stefan Richter , netdev@vger.kernel.org, Maxim Levitsky Subject: [PATCH 4/5] firewire: net: invalidate ARP entries for removed nodes. Date: Sun, 28 Nov 2010 03:15:35 +0200 Message-Id: <1290906936-14472-5-git-send-email-maximlevitsky@gmail.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1290906936-14472-1-git-send-email-maximlevitsky@gmail.com> References: <1290906936-14472-1-git-send-email-maximlevitsky@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This allows to be able to connect to nodes that disappered from the bus and after some time appeared again. Signed-off-by: Maxim Levitsky --- drivers/firewire/net.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) diff --git a/drivers/firewire/net.c b/drivers/firewire/net.c index 1a467a9..d422519 100644 --- a/drivers/firewire/net.c +++ b/drivers/firewire/net.c @@ -189,6 +189,7 @@ struct fwnet_peer { struct fwnet_device *dev; u64 guid; u64 fifo; + __be32 ip; /* guarded by dev->lock */ struct list_head pd_list; /* received partial datagrams */ @@ -568,6 +569,8 @@ static int fwnet_finish_incoming_packet(struct net_device *net, peer->speed = sspd; if (peer->max_payload > max_payload) peer->max_payload = max_payload; + + peer->ip = arp1394->sip; } spin_unlock_irqrestore(&dev->lock, flags); @@ -1443,6 +1446,7 @@ static int fwnet_add_peer(struct fwnet_device *dev, peer->dev = dev; peer->guid = (u64)device->config_rom[3] << 32 | device->config_rom[4]; peer->fifo = FWNET_NO_FIFO_ADDR; + peer->ip = 0; INIT_LIST_HEAD(&peer->pd_list); peer->pdg_size = 0; peer->datagram_label = 0; @@ -1558,6 +1562,9 @@ static int fwnet_remove(struct device *_dev) mutex_lock(&fwnet_device_mutex); + if (dev->netdev && peer->ip) + arp_invalidate(dev->netdev, peer->ip); + fwnet_remove_peer(peer); if (list_empty(&dev->peer_list)) {