Message ID | 20140102064415.GA4568@r-ufm96.mtr.labs.mlnx (mailing list archive) |
---|---|
State | Accepted, archived |
Delegated to: | Ira Weiny |
Headers | show |
> -----Original Message----- > From: Dan Ben Yosef [mailto:danby@mellanox.com] > Sent: Wednesday, January 01, 2014 10:44 PM > Subject: [PATCH infiniband-diags] libibnetdisc/ibnetdisc.c: improve log > information to stdout > > Write to stdout the route-path when smp returns with status error. As part of a library this will affect many tools outputs and perhaps subsequently any scripts written against those tools. Is this really a requirement or simply a "nice to have"? Ira > > Signed-off-by: Dan Ben Yosef <danby@mellanox.com> > --- > libibnetdisc/src/internal.h | 10 +++++++--- > libibnetdisc/src/query_smp.c | 6 ++++++ > 2 files changed, 13 insertions(+), 3 deletions(-) > > diff --git a/libibnetdisc/src/internal.h b/libibnetdisc/src/internal.h index > 1ccd29c..47b2a4c 100644 > --- a/libibnetdisc/src/internal.h > +++ b/libibnetdisc/src/internal.h > @@ -42,12 +42,16 @@ > #include <complib/cl_qmap.h> > #include <glib.h> > > +#define IBND_ERROR(fmt, ...) \ > + fprintf(stderr, "%s:%u; " fmt, __FILE__, __LINE__, ## > __VA_ARGS__) > + > +#define IBND_INFO(fmt, ...) \ > + printf("%s:%u; " fmt, __FILE__, __LINE__, ## > __VA_ARGS__); > + > #define IBND_DEBUG(fmt, ...) \ > if (ibdebug) { \ > - printf("%s:%u; " fmt, __FILE__, __LINE__, ## > __VA_ARGS__); \ > + IBND_INFO(fmt,## __VA_ARGS__); \ > } > -#define IBND_ERROR(fmt, ...) \ > - fprintf(stderr, "%s:%u; " fmt, __FILE__, __LINE__, ## > __VA_ARGS__) > > /* HASH table defines */ > #define HASHGUID(guid) ((uint32_t)(((uint32_t)(guid) * 101) ^ > ((uint32_t)((guid) >> 32) * 103))) diff --git a/libibnetdisc/src/query_smp.c > b/libibnetdisc/src/query_smp.c index 28620b4..ac4984e 100644 > --- a/libibnetdisc/src/query_smp.c > +++ b/libibnetdisc/src/query_smp.c > @@ -192,6 +192,9 @@ static int process_one_recv(smp_engine_t * engine) > goto error; > > if ((status = umad_status(umad))) { > + IBND_INFO("umad (%s Attr 0x%x:%u) bad status %d; %s\n", > + portid2str(&smp->path), smp->rpc.attr.id, > + smp->rpc.attr.mod, status, strerror(status)); > IBND_ERROR("umad (%s Attr 0x%x:%u) bad status %d; > %s\n", > portid2str(&smp->path), smp->rpc.attr.id, > smp->rpc.attr.mod, status, strerror(status)); @@ - > 199,6 +202,9 @@ static int process_one_recv(smp_engine_t * engine) > rc = mlnx_ext_port_info_err(engine, smp, mad, > smp->cb_data); > } else if ((status = mad_get_field(mad, 0, IB_DRSMP_STATUS_F))) { > + IBND_INFO("mad (%s Attr 0x%x:%u) bad status 0x%x\n", > + portid2str(&smp->path), smp->rpc.attr.id, > + smp->rpc.attr.mod, status); > IBND_ERROR("mad (%s Attr 0x%x:%u) bad status 0x%x\n", > portid2str(&smp->path), smp->rpc.attr.id, > smp->rpc.attr.mod, status); > -- > 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 15:37 Sun 12 Jan , Weiny, Ira wrote: > > -----Original Message----- > > From: Dan Ben Yosef [mailto:danby@mellanox.com] > > Sent: Wednesday, January 01, 2014 10:44 PM > > Subject: [PATCH infiniband-diags] libibnetdisc/ibnetdisc.c: improve log > > information to stdout > > > > Write to stdout the route-path when smp returns with status error. > > As part of a library this will affect many tools outputs and perhaps subsequently any scripts written against those tools. > > Is this really a requirement or simply a "nice to have"? That was a customer request to get the query path to stdout when getting an error. This way when getting smp error they could see DR path to the node in stdout. -- Dan > > Ira > > > > > Signed-off-by: Dan Ben Yosef <danby@mellanox.com> > > --- > > libibnetdisc/src/internal.h | 10 +++++++--- > > libibnetdisc/src/query_smp.c | 6 ++++++ > > 2 files changed, 13 insertions(+), 3 deletions(-) > > > > diff --git a/libibnetdisc/src/internal.h b/libibnetdisc/src/internal.h index > > 1ccd29c..47b2a4c 100644 > > --- a/libibnetdisc/src/internal.h > > +++ b/libibnetdisc/src/internal.h > > @@ -42,12 +42,16 @@ > > #include <complib/cl_qmap.h> > > #include <glib.h> > > > > +#define IBND_ERROR(fmt, ...) \ > > + fprintf(stderr, "%s:%u; " fmt, __FILE__, __LINE__, ## > > __VA_ARGS__) > > + > > +#define IBND_INFO(fmt, ...) \ > > + printf("%s:%u; " fmt, __FILE__, __LINE__, ## > > __VA_ARGS__); > > + > > #define IBND_DEBUG(fmt, ...) \ > > if (ibdebug) { \ > > - printf("%s:%u; " fmt, __FILE__, __LINE__, ## > > __VA_ARGS__); \ > > + IBND_INFO(fmt,## __VA_ARGS__); \ > > } > > -#define IBND_ERROR(fmt, ...) \ > > - fprintf(stderr, "%s:%u; " fmt, __FILE__, __LINE__, ## > > __VA_ARGS__) > > > > /* HASH table defines */ > > #define HASHGUID(guid) ((uint32_t)(((uint32_t)(guid) * 101) ^ > > ((uint32_t)((guid) >> 32) * 103))) diff --git a/libibnetdisc/src/query_smp.c > > b/libibnetdisc/src/query_smp.c index 28620b4..ac4984e 100644 > > --- a/libibnetdisc/src/query_smp.c > > +++ b/libibnetdisc/src/query_smp.c > > @@ -192,6 +192,9 @@ static int process_one_recv(smp_engine_t * engine) > > goto error; > > > > if ((status = umad_status(umad))) { > > + IBND_INFO("umad (%s Attr 0x%x:%u) bad status %d; %s\n", > > + portid2str(&smp->path), smp->rpc.attr.id, > > + smp->rpc.attr.mod, status, strerror(status)); > > IBND_ERROR("umad (%s Attr 0x%x:%u) bad status %d; > > %s\n", > > portid2str(&smp->path), smp->rpc.attr.id, > > smp->rpc.attr.mod, status, strerror(status)); @@ - > > 199,6 +202,9 @@ static int process_one_recv(smp_engine_t * engine) > > rc = mlnx_ext_port_info_err(engine, smp, mad, > > smp->cb_data); > > } else if ((status = mad_get_field(mad, 0, IB_DRSMP_STATUS_F))) { > > + IBND_INFO("mad (%s Attr 0x%x:%u) bad status 0x%x\n", > > + portid2str(&smp->path), smp->rpc.attr.id, > > + smp->rpc.attr.mod, status); > > IBND_ERROR("mad (%s Attr 0x%x:%u) bad status 0x%x\n", > > portid2str(&smp->path), smp->rpc.attr.id, > > smp->rpc.attr.mod, status); > > -- > > 1.7.1 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-rdma" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
> -----Original Message----- > From: Dan Ben Yosef [mailto:danby@mellanox.com] > Sent: Sunday, January 19, 2014 12:20 AM > To: Weiny, Ira > Cc: linux-rdma@vger.kernel.org > Subject: Re: [PATCH infiniband-diags] libibnetdisc/ibnetdisc.c: improve log > information to stdout > > On 15:37 Sun 12 Jan , Weiny, Ira wrote: > > > -----Original Message----- > > > From: Dan Ben Yosef [mailto:danby@mellanox.com] > > > Sent: Wednesday, January 01, 2014 10:44 PM > > > Subject: [PATCH infiniband-diags] libibnetdisc/ibnetdisc.c: improve > > > log information to stdout > > > > > > Write to stdout the route-path when smp returns with status error. > > > > As part of a library this will affect many tools outputs and perhaps > subsequently any scripts written against those tools. > > > > Is this really a requirement or simply a "nice to have"? > That was a customer request to get the query path to stdout when getting an > error. > > This way when getting smp error they could see DR path to the node in > stdout. I think this is ok, applied thanks, Ira > > -- Dan > > > > > Ira > > > > > > > > Signed-off-by: Dan Ben Yosef <danby@mellanox.com> > > > --- > > > libibnetdisc/src/internal.h | 10 +++++++--- > > > libibnetdisc/src/query_smp.c | 6 ++++++ > > > 2 files changed, 13 insertions(+), 3 deletions(-) > > > > > > diff --git a/libibnetdisc/src/internal.h > > > b/libibnetdisc/src/internal.h index 1ccd29c..47b2a4c 100644 > > > --- a/libibnetdisc/src/internal.h > > > +++ b/libibnetdisc/src/internal.h > > > @@ -42,12 +42,16 @@ > > > #include <complib/cl_qmap.h> > > > #include <glib.h> > > > > > > +#define IBND_ERROR(fmt, ...) \ > > > + fprintf(stderr, "%s:%u; " fmt, __FILE__, __LINE__, ## > > > __VA_ARGS__) > > > + > > > +#define IBND_INFO(fmt, ...) \ > > > + printf("%s:%u; " fmt, __FILE__, __LINE__, ## > > > __VA_ARGS__); > > > + > > > #define IBND_DEBUG(fmt, ...) \ > > > if (ibdebug) { \ > > > - printf("%s:%u; " fmt, __FILE__, __LINE__, ## > > > __VA_ARGS__); \ > > > + IBND_INFO(fmt,## __VA_ARGS__); \ > > > } > > > -#define IBND_ERROR(fmt, ...) \ > > > - fprintf(stderr, "%s:%u; " fmt, __FILE__, __LINE__, ## > > > __VA_ARGS__) > > > > > > /* HASH table defines */ > > > #define HASHGUID(guid) ((uint32_t)(((uint32_t)(guid) * 101) ^ > > > ((uint32_t)((guid) >> 32) * 103))) diff --git > > > a/libibnetdisc/src/query_smp.c b/libibnetdisc/src/query_smp.c index > > > 28620b4..ac4984e 100644 > > > --- a/libibnetdisc/src/query_smp.c > > > +++ b/libibnetdisc/src/query_smp.c > > > @@ -192,6 +192,9 @@ static int process_one_recv(smp_engine_t * > engine) > > > goto error; > > > > > > if ((status = umad_status(umad))) { > > > + IBND_INFO("umad (%s Attr 0x%x:%u) bad status %d; %s\n", > > > + portid2str(&smp->path), smp->rpc.attr.id, > > > + smp->rpc.attr.mod, status, strerror(status)); > > > IBND_ERROR("umad (%s Attr 0x%x:%u) bad status %d; > %s\n", > > > portid2str(&smp->path), smp->rpc.attr.id, > > > smp->rpc.attr.mod, status, strerror(status)); @@ - > > > 199,6 +202,9 @@ static int process_one_recv(smp_engine_t * engine) > > > rc = mlnx_ext_port_info_err(engine, smp, mad, > > > smp->cb_data); > > > } else if ((status = mad_get_field(mad, 0, IB_DRSMP_STATUS_F))) { > > > + IBND_INFO("mad (%s Attr 0x%x:%u) bad status 0x%x\n", > > > + portid2str(&smp->path), smp->rpc.attr.id, > > > + smp->rpc.attr.mod, status); > > > IBND_ERROR("mad (%s Attr 0x%x:%u) bad status 0x%x\n", > > > portid2str(&smp->path), smp->rpc.attr.id, > > > smp->rpc.attr.mod, status); > > > -- > > > 1.7.1 > > > > -- > > To unsubscribe from this list: send the line "unsubscribe linux-rdma" > > in the body of a message to majordomo@vger.kernel.org More > majordomo > > info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 1/24/2014 8:20 PM, Weiny, Ira wrote: >> -----Original Message----- >> From: Dan Ben Yosef [mailto:danby@mellanox.com] >> Sent: Sunday, January 19, 2014 12:20 AM >> To: Weiny, Ira >> Cc: linux-rdma@vger.kernel.org >> Subject: Re: [PATCH infiniband-diags] libibnetdisc/ibnetdisc.c: improve log >> information to stdout >> >> On 15:37 Sun 12 Jan , Weiny, Ira wrote: >>>> -----Original Message----- >>>> From: Dan Ben Yosef [mailto:danby@mellanox.com] >>>> Sent: Wednesday, January 01, 2014 10:44 PM >>>> Subject: [PATCH infiniband-diags] libibnetdisc/ibnetdisc.c: improve >>>> log information to stdout >>>> >>>> Write to stdout the route-path when smp returns with status error. >>> >>> As part of a library this will affect many tools outputs and perhaps >> subsequently any scripts written against those tools. >>> >>> Is this really a requirement or simply a "nice to have"? >> That was a customer request to get the query path to stdout when getting an >> error. >> >> This way when getting smp error they could see DR path to the node in >> stdout. > > I think this is ok, Doesn't this change the ibnetdiscover output file format when such errors are encountered ? If so, what happens in terms of tools which parse this ? Should IBND_INFO output be prepended with "# " as that would be safer in terms of sticking within current output file definition and provides such feature ? -- Hal > applied thanks, > Ira > >> >> -- Dan >> >>> >>> Ira >>> >>>> >>>> Signed-off-by: Dan Ben Yosef <danby@mellanox.com> >>>> --- >>>> libibnetdisc/src/internal.h | 10 +++++++--- >>>> libibnetdisc/src/query_smp.c | 6 ++++++ >>>> 2 files changed, 13 insertions(+), 3 deletions(-) >>>> >>>> diff --git a/libibnetdisc/src/internal.h >>>> b/libibnetdisc/src/internal.h index 1ccd29c..47b2a4c 100644 >>>> --- a/libibnetdisc/src/internal.h >>>> +++ b/libibnetdisc/src/internal.h >>>> @@ -42,12 +42,16 @@ >>>> #include <complib/cl_qmap.h> >>>> #include <glib.h> >>>> >>>> +#define IBND_ERROR(fmt, ...) \ >>>> + fprintf(stderr, "%s:%u; " fmt, __FILE__, __LINE__, ## >>>> __VA_ARGS__) >>>> + >>>> +#define IBND_INFO(fmt, ...) \ >>>> + printf("%s:%u; " fmt, __FILE__, __LINE__, ## >>>> __VA_ARGS__); >>>> + >>>> #define IBND_DEBUG(fmt, ...) \ >>>> if (ibdebug) { \ >>>> - printf("%s:%u; " fmt, __FILE__, __LINE__, ## >>>> __VA_ARGS__); \ >>>> + IBND_INFO(fmt,## __VA_ARGS__); \ >>>> } >>>> -#define IBND_ERROR(fmt, ...) \ >>>> - fprintf(stderr, "%s:%u; " fmt, __FILE__, __LINE__, ## >>>> __VA_ARGS__) >>>> >>>> /* HASH table defines */ >>>> #define HASHGUID(guid) ((uint32_t)(((uint32_t)(guid) * 101) ^ >>>> ((uint32_t)((guid) >> 32) * 103))) diff --git >>>> a/libibnetdisc/src/query_smp.c b/libibnetdisc/src/query_smp.c index >>>> 28620b4..ac4984e 100644 >>>> --- a/libibnetdisc/src/query_smp.c >>>> +++ b/libibnetdisc/src/query_smp.c >>>> @@ -192,6 +192,9 @@ static int process_one_recv(smp_engine_t * >> engine) >>>> goto error; >>>> >>>> if ((status = umad_status(umad))) { >>>> + IBND_INFO("umad (%s Attr 0x%x:%u) bad status %d; %s\n", >>>> + portid2str(&smp->path), smp->rpc.attr.id, >>>> + smp->rpc.attr.mod, status, strerror(status)); >>>> IBND_ERROR("umad (%s Attr 0x%x:%u) bad status %d; >> %s\n", >>>> portid2str(&smp->path), smp->rpc.attr.id, >>>> smp->rpc.attr.mod, status, strerror(status)); @@ - >>>> 199,6 +202,9 @@ static int process_one_recv(smp_engine_t * engine) >>>> rc = mlnx_ext_port_info_err(engine, smp, mad, >>>> smp->cb_data); >>>> } else if ((status = mad_get_field(mad, 0, IB_DRSMP_STATUS_F))) { >>>> + IBND_INFO("mad (%s Attr 0x%x:%u) bad status 0x%x\n", >>>> + portid2str(&smp->path), smp->rpc.attr.id, >>>> + smp->rpc.attr.mod, status); >>>> IBND_ERROR("mad (%s Attr 0x%x:%u) bad status 0x%x\n", >>>> portid2str(&smp->path), smp->rpc.attr.id, >>>> smp->rpc.attr.mod, status); >>>> -- >>>> 1.7.1 >>> >>> -- >>> To unsubscribe from this list: send the line "unsubscribe linux-rdma" >>> in the body of a message to majordomo@vger.kernel.org More >> majordomo >>> info at http://vger.kernel.org/majordomo-info.html > -- > To unsubscribe from this list: send the line "unsubscribe linux-rdma" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
> >>> > >>> As part of a library this will affect many tools outputs and perhaps > >> subsequently any scripts written against those tools. > >>> > >>> Is this really a requirement or simply a "nice to have"? > >> That was a customer request to get the query path to stdout when > >> getting an error. > >> > >> This way when getting smp error they could see DR path to the node in > >> stdout. > > > > I think this is ok, > > Doesn't this change the ibnetdiscover output file format when such errors > are encountered ? yes > > If so, what happens in terms of tools which parse this ? They may break. > > Should IBND_INFO output be prepended with "# " as that would be safer in > terms of sticking within current output file definition and provides such > feature ? At first, I thought this would be a good compromise but I looked back before libibnetdisc was created and I see no indication that "# " prefixed errors in ibnetdiscover back then. It appears that all errors have always gone to stderr AFAICS. I understand the issues with users not seeing any indication of error in their output. But this really is a mistake and I should not have accepted this patch as submitted. I'm sorry Dan, I'm reverting the patch and re-releasing for the upcoming OFED. I think there are 2 solutions for this. 1) users can direct stderr to stdout to capture all the output 2) I'd be open to a patch which adds an option to the library to allow the user to add error output to stdout. Sorry for the confusion, Ira > > -- Hal > > > applied thanks, > > Ira > > > >> > >> -- Dan > >> > >>> > >>> Ira > >>> > >>>> > >>>> Signed-off-by: Dan Ben Yosef <danby@mellanox.com> > >>>> --- > >>>> libibnetdisc/src/internal.h | 10 +++++++--- > >>>> libibnetdisc/src/query_smp.c | 6 ++++++ > >>>> 2 files changed, 13 insertions(+), 3 deletions(-) > >>>> > >>>> diff --git a/libibnetdisc/src/internal.h > >>>> b/libibnetdisc/src/internal.h index 1ccd29c..47b2a4c 100644 > >>>> --- a/libibnetdisc/src/internal.h > >>>> +++ b/libibnetdisc/src/internal.h > >>>> @@ -42,12 +42,16 @@ > >>>> #include <complib/cl_qmap.h> > >>>> #include <glib.h> > >>>> > >>>> +#define IBND_ERROR(fmt, ...) \ > >>>> + fprintf(stderr, "%s:%u; " fmt, __FILE__, __LINE__, ## > >>>> __VA_ARGS__) > >>>> + > >>>> +#define IBND_INFO(fmt, ...) \ > >>>> + printf("%s:%u; " fmt, __FILE__, __LINE__, ## > >>>> __VA_ARGS__); > >>>> + > >>>> #define IBND_DEBUG(fmt, ...) \ > >>>> if (ibdebug) { \ > >>>> - printf("%s:%u; " fmt, __FILE__, __LINE__, ## > >>>> __VA_ARGS__); \ > >>>> + IBND_INFO(fmt,## __VA_ARGS__); \ > >>>> } > >>>> -#define IBND_ERROR(fmt, ...) \ > >>>> - fprintf(stderr, "%s:%u; " fmt, __FILE__, __LINE__, ## > >>>> __VA_ARGS__) > >>>> > >>>> /* HASH table defines */ > >>>> #define HASHGUID(guid) ((uint32_t)(((uint32_t)(guid) * 101) ^ > >>>> ((uint32_t)((guid) >> 32) * 103))) diff --git > >>>> a/libibnetdisc/src/query_smp.c b/libibnetdisc/src/query_smp.c index > >>>> 28620b4..ac4984e 100644 > >>>> --- a/libibnetdisc/src/query_smp.c > >>>> +++ b/libibnetdisc/src/query_smp.c > >>>> @@ -192,6 +192,9 @@ static int process_one_recv(smp_engine_t * > >> engine) > >>>> goto error; > >>>> > >>>> if ((status = umad_status(umad))) { > >>>> + IBND_INFO("umad (%s Attr 0x%x:%u) bad status %d; %s\n", > >>>> + portid2str(&smp->path), smp->rpc.attr.id, > >>>> + smp->rpc.attr.mod, status, strerror(status)); > >>>> IBND_ERROR("umad (%s Attr 0x%x:%u) bad status %d; > >> %s\n", > >>>> portid2str(&smp->path), smp->rpc.attr.id, > >>>> smp->rpc.attr.mod, status, strerror(status)); @@ - > >>>> 199,6 +202,9 @@ static int process_one_recv(smp_engine_t * engine) > >>>> rc = mlnx_ext_port_info_err(engine, smp, mad, > >>>> smp->cb_data); > >>>> } else if ((status = mad_get_field(mad, 0, IB_DRSMP_STATUS_F))) { > >>>> + IBND_INFO("mad (%s Attr 0x%x:%u) bad status 0x%x\n", > >>>> + portid2str(&smp->path), smp->rpc.attr.id, > >>>> + smp->rpc.attr.mod, status); > >>>> IBND_ERROR("mad (%s Attr 0x%x:%u) bad status 0x%x\n", > >>>> portid2str(&smp->path), smp->rpc.attr.id, > >>>> smp->rpc.attr.mod, status); > >>>> -- > >>>> 1.7.1 > >>> > >>> -- > >>> To unsubscribe from this list: send the line "unsubscribe linux-rdma" > >>> in the body of a message to majordomo@vger.kernel.org More > >> majordomo > >>> info at http://vger.kernel.org/majordomo-info.html > > -- > > To unsubscribe from this list: send the line "unsubscribe linux-rdma" > > in the body of a message to majordomo@vger.kernel.org More > majordomo > > info at http://vger.kernel.org/majordomo-info.html > > -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/libibnetdisc/src/internal.h b/libibnetdisc/src/internal.h index 1ccd29c..47b2a4c 100644 --- a/libibnetdisc/src/internal.h +++ b/libibnetdisc/src/internal.h @@ -42,12 +42,16 @@ #include <complib/cl_qmap.h> #include <glib.h> +#define IBND_ERROR(fmt, ...) \ + fprintf(stderr, "%s:%u; " fmt, __FILE__, __LINE__, ## __VA_ARGS__) + +#define IBND_INFO(fmt, ...) \ + printf("%s:%u; " fmt, __FILE__, __LINE__, ## __VA_ARGS__); + #define IBND_DEBUG(fmt, ...) \ if (ibdebug) { \ - printf("%s:%u; " fmt, __FILE__, __LINE__, ## __VA_ARGS__); \ + IBND_INFO(fmt,## __VA_ARGS__); \ } -#define IBND_ERROR(fmt, ...) \ - fprintf(stderr, "%s:%u; " fmt, __FILE__, __LINE__, ## __VA_ARGS__) /* HASH table defines */ #define HASHGUID(guid) ((uint32_t)(((uint32_t)(guid) * 101) ^ ((uint32_t)((guid) >> 32) * 103))) diff --git a/libibnetdisc/src/query_smp.c b/libibnetdisc/src/query_smp.c index 28620b4..ac4984e 100644 --- a/libibnetdisc/src/query_smp.c +++ b/libibnetdisc/src/query_smp.c @@ -192,6 +192,9 @@ static int process_one_recv(smp_engine_t * engine) goto error; if ((status = umad_status(umad))) { + IBND_INFO("umad (%s Attr 0x%x:%u) bad status %d; %s\n", + portid2str(&smp->path), smp->rpc.attr.id, + smp->rpc.attr.mod, status, strerror(status)); IBND_ERROR("umad (%s Attr 0x%x:%u) bad status %d; %s\n", portid2str(&smp->path), smp->rpc.attr.id, smp->rpc.attr.mod, status, strerror(status)); @@ -199,6 +202,9 @@ static int process_one_recv(smp_engine_t * engine) rc = mlnx_ext_port_info_err(engine, smp, mad, smp->cb_data); } else if ((status = mad_get_field(mad, 0, IB_DRSMP_STATUS_F))) { + IBND_INFO("mad (%s Attr 0x%x:%u) bad status 0x%x\n", + portid2str(&smp->path), smp->rpc.attr.id, + smp->rpc.attr.mod, status); IBND_ERROR("mad (%s Attr 0x%x:%u) bad status 0x%x\n", portid2str(&smp->path), smp->rpc.attr.id, smp->rpc.attr.mod, status);
Write to stdout the route-path when smp returns with status error. Signed-off-by: Dan Ben Yosef <danby@mellanox.com> --- libibnetdisc/src/internal.h | 10 +++++++--- libibnetdisc/src/query_smp.c | 6 ++++++ 2 files changed, 13 insertions(+), 3 deletions(-)