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 <ch...@llnl.gov>
> > Subject: [PATCH] support diffing nodedesc on remoteports in
> > ibnetdiscover
> > Date: Tue, 20 Apr 2010 15:09:59 -0700
> > 
> > Signed-off-by: Albert Chu <ch...@llnl.gov>
> > ---
> >  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
ch...@llnl.gov
Computer Scientist
High Performance Systems Division
Lawrence Livermore National Laboratory
--- Begin Message ---
Signed-off-by: Albert Chu <ch...@llnl.gov>
---
 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 ---

Reply via email to