Decrease outstanding MADs counter before calling process_smp_queue() and smp receive callback, so that there will be room available for sending more MADs. This fixes 'ibnetdiscover -o 1' (max outstanding SMPs on a wire = 1) bug.
Signed-off-by: Sasha Khapyorsky <sas...@voltaire.com> --- infiniband-diags/libibnetdisc/src/query_smp.c | 5 ++--- 1 files changed, 2 insertions(+), 3 deletions(-) diff --git a/infiniband-diags/libibnetdisc/src/query_smp.c b/infiniband-diags/libibnetdisc/src/query_smp.c index 08e3ef7..3d10977 100644 --- a/infiniband-diags/libibnetdisc/src/query_smp.c +++ b/infiniband-diags/libibnetdisc/src/query_smp.c @@ -160,8 +160,6 @@ static int process_one_recv(smp_engine_t * engine) return -1; } - rc = process_smp_queue(engine); - mad = umad_get_mad(umad); trid = (uint32_t) mad_get_field64(mad, 0, IB_MAD_TRID_F); @@ -171,6 +169,8 @@ static int process_one_recv(smp_engine_t * engine) return -1; } + engine->num_smps_outstanding--; + rc = process_smp_queue(engine); if (rc) goto error; @@ -187,7 +187,6 @@ static int process_one_recv(smp_engine_t * engine) error: free(smp); - engine->num_smps_outstanding--; return rc; } -- 1.7.0.4 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html