From patchwork Thu May 12 16:14:43 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Netes X-Patchwork-Id: 780472 X-Patchwork-Delegate: alexne@voltaire.com Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter2.kernel.org (8.14.4/8.14.3) with ESMTP id p4CGEsav021253 for ; Thu, 12 May 2011 16:14:55 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757908Ab1ELQOw (ORCPT ); Thu, 12 May 2011 12:14:52 -0400 Received: from mail.mellanox.co.il ([194.90.237.43]:50508 "EHLO mellanox.co.il" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1757820Ab1ELQOw (ORCPT ); Thu, 12 May 2011 12:14:52 -0400 Received: from Internal Mail-Server by MTLPINE2 (envelope-from alexne@mellanox.com) with SMTP; 12 May 2011 19:14:48 +0300 Received: from MTRCASDAG01.mtl.com (172.25.0.174) by MTLCAS01.mtl.com (10.0.8.71) with Microsoft SMTP Server (TLS) id 14.1.270.1; Thu, 12 May 2011 19:14:48 +0300 Received: from localhost (172.25.6.157) by MTRCASDAG01.mtl.com (172.25.0.174) with Microsoft SMTP Server (TLS) id 14.1.270.1; Thu, 12 May 2011 19:14:49 +0300 Date: Thu, 12 May 2011 19:14:43 +0300 From: Alex Netes To: Subject: [PATCH 1/1] Initiate heavy sweep in MFTSubnSet fails during idle time process Message-ID: <20110512161443.GC22389@calypso.voltaire.com> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-Originating-IP: [172.25.6.157] Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter2.kernel.org [140.211.167.43]); Thu, 12 May 2011 16:14:55 +0000 (UTC) MFTSubnSet failed MADs may leave temporary MC loops in the fabric. In order to eliminate this faulty state as quick as possible it's a good thing to initiate a heavy sweep immediately and to wait for the next light sweep. Signed-off-by: Alex Netes --- opensm/osm_state_mgr.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) diff --git a/opensm/osm_state_mgr.c b/opensm/osm_state_mgr.c index dd308f2..aa71b03 100644 --- a/opensm/osm_state_mgr.c +++ b/opensm/osm_state_mgr.c @@ -1434,6 +1434,13 @@ static void do_process_mgrp_queue(osm_sm_t * sm) osm_mcast_mgr_process(sm); wait_for_pending_transactions(&sm->p_subn->p_osm->stats); } + + /* if one or more MFTSubnSet MADs fails + * during idle process time initiate heavy sweep */ + if (sm->p_subn->force_heavy_sweep + || sm->p_subn->subnet_initialization_error) + osm_sm_signal(sm, OSM_SIGNAL_SWEEP); + } void osm_state_mgr_process(IN osm_sm_t * sm, IN osm_signal_t signal)