On Thu, Apr 16, 2015 at 10:26:24AM -0400, Hal Rosenstock wrote: > From: Vladimir Koushnir <vladim...@mellanox.com> > Date: Thu, 16 Apr 2015 14:11:16 +0300 > > Today, process_one_recv calls umad_recv with zero timeout. > That means umad_recv will use non-blocking read() without polling, > In many cases, this causes busy loop. > > In the fix, umad_recv is invoked with -1 (infinite timeout) and the read() > will occur only when poll exits. Also, no longer need to check for > EWOULDBLOCK.
Has this been tested on broken fabrics where SMAs don't respond? I know that we should recv something (ie timed out Send) for every MAD submitted to the kernel but I seem to remember a reason we did not use a timeout. But that may have been for a previous implementation which no longer exists. I can't remember. Ira > > Signed-off-by: Vladimir Koushnir <vladim...@mellanox.com> > Signed-off-by: Hal Rosenstock <h...@mellanox.com> > --- > libibnetdisc/src/query_smp.c | 2 +- > 1 files changed, 1 insertions(+), 3 deletions(-) > > diff --git a/libibnetdisc/src/query_smp.c b/libibnetdisc/src/query_smp.c > index 28620b4..8f179e4 100644 > --- a/libibnetdisc/src/query_smp.c > +++ b/libibnetdisc/src/query_smp.c > @@ -171,9 +171,7 @@ static int process_one_recv(smp_engine_t * engine) > > /* wait for the next message */ > if ((rc = umad_recv(engine->umad_fd, umad, &length, > - 0)) < 0) { > - if (rc == -EWOULDBLOCK) > - return 0; > + -1)) < 0) { > IBND_ERROR("umad_recv failed: %d\n", rc); > return -1; > } -- 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