Hey Sasha,
A slight tweak to the patch. Support diffing lids and node descriptions
on remote ports (previously it diffed only "local" lids and node
descriptions). Also add appropriate manpage notes.
Al
On Tue, 2010-04-20 at 15:30 -0700, Al Chu wrote:
> Hey Sasha,
>
> This patch supports diffing node descriptions on remote ports
> (previously diffing of just the "local" node description was supported).
>
> Al
>
> email message attachment
> > -------- Forwarded Message --------
> > From: Albert Chu <[email protected]>
> > Subject: [PATCH] support diffing nodedesc on remoteports in
> > ibnetdiscover
> > Date: Tue, 20 Apr 2010 15:09:59 -0700
> >
> > Signed-off-by: Albert Chu <[email protected]>
> > ---
> > infiniband-diags/src/ibnetdiscover.c | 11 +++++++++++
> > 1 files changed, 11 insertions(+), 0 deletions(-)
> >
> > diff --git a/infiniband-diags/src/ibnetdiscover.c
> > b/infiniband-diags/src/ibnetdiscover.c
> > index 57f9625..eeb1b9f 100644
> > --- a/infiniband-diags/src/ibnetdiscover.c
> > +++ b/infiniband-diags/src/ibnetdiscover.c
> > @@ -720,6 +720,17 @@ static void diff_ports(ibnd_node_t * fabric1_node,
> > ibnd_node_t * fabric2_node,
> > fabric2_out++;
> > }
> >
> > + if (data->diff_flags & DIFF_FLAG_PORT_CONNECTION
> > + && data->diff_flags & DIFF_FLAG_NODE_DESCRIPTION
> > + && fabric1_port && fabric2_port
> > + && fabric1_port->remoteport && fabric2_port->remoteport
> > + && memcmp(fabric1_port->remoteport->node->nodedesc,
> > + fabric2_port->remoteport->node->nodedesc,
> > + IB_SMP_DATA_SIZE)) {
> > + fabric1_out++;
> > + fabric2_out++;
> > + }
> > +
> > if (fabric1_out) {
> > diff_iter_out_header(fabric1_node, data,
> > out_header_flag);
--
Albert Chu
[email protected]
Computer Scientist
High Performance Systems Division
Lawrence Livermore National Laboratory
--- Begin Message ---
Signed-off-by: Albert Chu <[email protected]>
---
infiniband-diags/man/ibnetdiscover.8 | 5 ++++-
infiniband-diags/src/ibnetdiscover.c | 20 ++++++++++++++++++++
2 files changed, 24 insertions(+), 1 deletions(-)
diff --git a/infiniband-diags/man/ibnetdiscover.8
b/infiniband-diags/man/ibnetdiscover.8
index 76cfbc8..3beb70b 100644
--- a/infiniband-diags/man/ibnetdiscover.8
+++ b/infiniband-diags/man/ibnetdiscover.8
@@ -71,7 +71,10 @@ are: \fIsw\fR = switches, \fIca\fR = channel adapters,
\fIrouter\fR = routers,
\fIport\fR = port connections, \fIlid\fR = lids, \fInodedesc\fR = node
descriptions. Note that \fIport\fR, \fIlid\fR, and \fInodedesc\fR are
checked only for the node types that are specified (e.g. \fIsw\fR,
-\fIca\fR, \fIrouter\fR).
+\fIca\fR, \fIrouter\fR). If \fIport\fR is specified alongside \fIlid\fR
+or \fInodedesc\fR, remote port lids and node descriptions will also be
compared.
+
+
.TP
\fB\-p\fR, \fB\-\-ports\fR
Obtain a ports report which is a
diff --git a/infiniband-diags/src/ibnetdiscover.c
b/infiniband-diags/src/ibnetdiscover.c
index 57f9625..23e6dd4 100644
--- a/infiniband-diags/src/ibnetdiscover.c
+++ b/infiniband-diags/src/ibnetdiscover.c
@@ -720,6 +720,26 @@ static void diff_ports(ibnd_node_t * fabric1_node,
ibnd_node_t * fabric2_node,
fabric2_out++;
}
+ if (data->diff_flags & DIFF_FLAG_PORT_CONNECTION
+ && data->diff_flags & DIFF_FLAG_NODE_DESCRIPTION
+ && fabric1_port && fabric2_port
+ && fabric1_port->remoteport && fabric2_port->remoteport
+ && memcmp(fabric1_port->remoteport->node->nodedesc,
+ fabric2_port->remoteport->node->nodedesc,
+ IB_SMP_DATA_SIZE)) {
+ fabric1_out++;
+ fabric2_out++;
+ }
+
+ if (data->diff_flags & DIFF_FLAG_PORT_CONNECTION
+ && data->diff_flags & DIFF_FLAG_LID
+ && fabric1_port && fabric2_port
+ && fabric1_port->remoteport && fabric2_port->remoteport
+ && fabric1_port->remoteport->base_lid !=
fabric2_port->remoteport->base_lid) {
+ fabric1_out++;
+ fabric2_out++;
+ }
+
if (fabric1_out) {
diff_iter_out_header(fabric1_node, data,
out_header_flag);
--
1.5.4.5
--- End Message ---