From patchwork Mon Apr 26 21:39:40 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Al Chu X-Patchwork-Id: 95208 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter.kernel.org (8.14.3/8.14.3) with ESMTP id o3QLdfM4004799 for ; Mon, 26 Apr 2010 21:39:42 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754988Ab0DZVjm (ORCPT ); Mon, 26 Apr 2010 17:39:42 -0400 Received: from nspiron-1.llnl.gov ([128.115.41.81]:28847 "EHLO nspiron-1.llnl.gov" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754402Ab0DZVjl (ORCPT ); Mon, 26 Apr 2010 17:39:41 -0400 X-Attachments: 0002-support-diffcheck-in-iblinkinfo.patch Received: from auk31.llnl.gov (HELO [134.9.93.159]) ([134.9.93.159]) by nspiron-1.llnl.gov with ESMTP; 26 Apr 2010 14:39:41 -0700 Subject: [infiniband-diags] [2/4] support --diffcheck in iblinkinfo From: Al Chu To: Sasha Khapyorsky Cc: "linux-rdma@vger.kernel.org" Date: Mon, 26 Apr 2010 14:39:40 -0700 Message-Id: <1272317980.29737.48.camel@auk31.llnl.gov> Mime-Version: 1.0 X-Mailer: Evolution 2.12.3 (2.12.3-19.el5) 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.3 (demeter.kernel.org [140.211.167.41]); Mon, 26 Apr 2010 21:39:43 +0000 (UTC) diff --git a/infiniband-diags/man/iblinkinfo.8 b/infiniband-diags/man/iblinkinfo.8 index b91afbd..431ab0e 100644 --- a/infiniband-diags/man/iblinkinfo.8 +++ b/infiniband-diags/man/iblinkinfo.8 @@ -58,6 +58,11 @@ output will be displayed showing differences between the old and current fabric links. See .B ibnetdiscover for information on caching ibnetdiscover output. +.TP +\fB\-\-diffcheck\fR +Specify what diff checks should be done in the \fB\-\-diff\fR option above. +Comma separate multiple diff check key(s). The available diff checks +are:\fIport\fR = port connections, \fIstate\fR = port state. .SH AUTHOR .TP diff --git a/infiniband-diags/src/iblinkinfo.c b/infiniband-diags/src/iblinkinfo.c index c6092f9..a4a8e49 100644 --- a/infiniband-diags/src/iblinkinfo.c +++ b/infiniband-diags/src/iblinkinfo.c @@ -400,6 +400,8 @@ int diff_switch(ibnd_node_t * node, ibnd_fabric_t * orig_fabric, static int process_opt(void *context, int ch, char *optarg) { struct ibnd_config *cfg = context; + char *p; + switch (ch) { case 1: node_name_map_file = strdup(optarg); @@ -410,6 +412,22 @@ static int process_opt(void *context, int ch, char *optarg) case 3: diff_cache_file = strdup(optarg); break; + case 4: + diffcheck_flags = 0; + p = strtok(optarg, ","); + while (p) { + if (!strcasecmp(p, "port")) + diffcheck_flags |= DIFF_FLAG_PORT_CONNECTION; + else if (!strcasecmp(p, "state")) + diffcheck_flags |= DIFF_FLAG_PORT_STATE; + else { + fprintf(stderr, "invalid diff check key: %s\n", + p); + return -1; + } + p = strtok(NULL, ","); + } + break; case 'S': guid_str = optarg; guid = (uint64_t) strtoull(guid_str, 0, 0); @@ -480,6 +498,8 @@ int main(int argc, char **argv) "filename of ibnetdiscover cache to load"}, {"diff", 3, 1, "", "filename of ibnetdiscover cache to diff"}, + {"diffcheck", 4, 1, "", + "specify checks to execute for --diff"}, {"outstanding_smps", 'o', 1, NULL, "specify the number of outstanding SMP's which should be " "issued during the scan"},