Now 'num_smps_outstanding' represents number of MADs on a wire, which is
duplicates by using its qmap's cl_qmap_count() function.

Signed-off-by: Sasha Khapyorsky <sas...@voltaire.com>
---
 infiniband-diags/libibnetdisc/src/internal.h  |    1 -
 infiniband-diags/libibnetdisc/src/query_smp.c |   14 ++++----------
 2 files changed, 4 insertions(+), 11 deletions(-)

diff --git a/infiniband-diags/libibnetdisc/src/internal.h 
b/infiniband-diags/libibnetdisc/src/internal.h
index 57034f9..571b2f4 100644
--- a/infiniband-diags/libibnetdisc/src/internal.h
+++ b/infiniband-diags/libibnetdisc/src/internal.h
@@ -80,7 +80,6 @@ struct smp_engine {
        ibnd_smp_t *smp_queue_tail;
        void *user_data;
        cl_qmap_t smps_on_wire;
-       int num_smps_outstanding;
        int max_smps_on_wire;
        unsigned total_smps;
 };
diff --git a/infiniband-diags/libibnetdisc/src/query_smp.c 
b/infiniband-diags/libibnetdisc/src/query_smp.c
index d38c2ef..7234844 100644
--- a/infiniband-diags/libibnetdisc/src/query_smp.c
+++ b/infiniband-diags/libibnetdisc/src/query_smp.c
@@ -100,7 +100,6 @@ static int process_smp_queue(smp_engine_t * engine)
                        free(smp);
                        return rc;
                }
-               engine->num_smps_outstanding++;
                cl_qmap_insert(&engine->smps_on_wire, (uint32_t) smp->rpc.trid,
                               (cl_map_item_t *) smp);
                engine->total_smps++;
@@ -171,7 +170,6 @@ static int process_one_recv(smp_engine_t * engine)
                return -1;
        }
 
-       engine->num_smps_outstanding--;
        rc = process_smp_queue(engine);
        if (rc)
                goto error;
@@ -199,7 +197,6 @@ void smp_engine_init(smp_engine_t * engine, struct 
ibmad_port *ibmad_port,
        engine->ibmad_port = ibmad_port;
        engine->user_data = user_data;
        cl_qmap_init(&engine->smps_on_wire);
-       engine->num_smps_outstanding = 0;
        engine->max_smps_on_wire = max_smps_on_wire;
 }
 
@@ -224,16 +221,13 @@ void smp_engine_destroy(smp_engine_t * engine)
                cl_qmap_remove_item(&engine->smps_on_wire, item);
                free(item);
        }
-
-       engine->num_smps_outstanding = 0;
 }
 
 int process_mads(smp_engine_t * engine)
 {
-       int rc = 0;
-       while (engine->num_smps_outstanding > 0)
-               while (!cl_is_qmap_empty(&engine->smps_on_wire))
-                       if ((rc = process_one_recv(engine)) != 0)
-                               return rc;
+       int rc;
+       while (!cl_is_qmap_empty(&engine->smps_on_wire))
+               if ((rc = process_one_recv(engine)) != 0)
+                       return rc;
        return 0;
 }
-- 
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

Reply via email to