From: Ira Weiny <wei...@llnl.gov> Date: Thu, 6 Aug 2009 15:27:30 -0700 Subject: [PATCH] libibmad: make accessors function for retry values used in libibmad
In addition use this function to determine the retries used throughout the library. Signed-off-by: Ira Weiny <wei...@llnl.gov> --- libibmad/include/infiniband/mad.h | 1 + libibmad/src/libibmad.map | 1 + libibmad/src/mad.c | 5 +++++ libibmad/src/mad_internal.h | 1 + libibmad/src/rpc.c | 12 +++--------- 5 files changed, 11 insertions(+), 9 deletions(-) diff --git a/libibmad/include/infiniband/mad.h b/libibmad/include/infiniband/mad.h index c5d73d5..0d0dcf1 100644 --- a/libibmad/include/infiniband/mad.h +++ b/libibmad/include/infiniband/mad.h @@ -804,6 +804,7 @@ MAD_EXPORT void mad_rpc_set_timeout(struct ibmad_port *port, int timeout); MAD_EXPORT int mad_rpc_class_agent(struct ibmad_port *srcport, int cls); MAD_EXPORT int mad_get_timeout(struct ibmad_port *srcport, int override_ms); +MAD_EXPORT int mad_get_retries(struct ibmad_port *srcport); /* register.c */ diff --git a/libibmad/src/libibmad.map b/libibmad/src/libibmad.map index a8605b5..b9a890c 100644 --- a/libibmad/src/libibmad.map +++ b/libibmad/src/libibmad.map @@ -71,6 +71,7 @@ IBMAD_1.3 { mad_rpc_set_retries; mad_rpc_set_timeout; mad_get_timeout; + mad_get_retries; madrpc; madrpc_def_timeout; madrpc_init; diff --git a/libibmad/src/mad.c b/libibmad/src/mad.c index bc64a0f..7192dd6 100644 --- a/libibmad/src/mad.c +++ b/libibmad/src/mad.c @@ -70,6 +70,11 @@ int mad_get_timeout(struct ibmad_port *srcport, int override_ms) srcport->timeout ? srcport->timeout : madrpc_timeout); } +int mad_get_retries(struct ibmad_port *srcport) +{ + return (srcport->retries ? srcport->retries : madrpc_retries); +} + void *mad_encode(void *buf, ib_rpc_t * rpc, ib_dr_path_t * drpath, void *data) { int is_resp = rpc->method & IB_MAD_RESPONSE; diff --git a/libibmad/src/mad_internal.h b/libibmad/src/mad_internal.h index 7a16a46..475adfc 100644 --- a/libibmad/src/mad_internal.h +++ b/libibmad/src/mad_internal.h @@ -44,5 +44,6 @@ struct ibmad_port { extern struct ibmad_port *ibmp; extern int madrpc_timeout; +extern int madrpc_retries; #endif /* _MAD_INTERNAL_H_ */ diff --git a/libibmad/src/rpc.c b/libibmad/src/rpc.c index bb83114..b5e4441 100644 --- a/libibmad/src/rpc.c +++ b/libibmad/src/rpc.c @@ -53,9 +53,9 @@ struct ibmad_port *ibmp = &mad_port; static int iberrs; +int madrpc_retries = MAD_DEF_RETRIES; int madrpc_timeout = MAD_DEF_TIMEOUT_MS; -static int madrpc_retries = MAD_DEF_RETRIES; static void *save_mad; static int save_mad_len = 256; @@ -211,7 +211,6 @@ void *mad_rpc(const struct ibmad_port *port, ib_rpc_t * rpc, { int status, len; uint8_t sndbuf[1024], rcvbuf[1024], *mad; - int retries; int redirect = 1; while (redirect) { @@ -221,12 +220,10 @@ void *mad_rpc(const struct ibmad_port *port, ib_rpc_t * rpc, if ((len = mad_build_pkt(sndbuf, rpc, dport, 0, payload)) < 0) return NULL; - retries = port->retries ? port->retries : madrpc_retries; - if ((len = _do_madrpc(port->port_id, sndbuf, rcvbuf, port->class_agents[rpc->mgtclass], len, mad_get_timeout(port, rpc->timeout), - retries)) < 0) { + mad_get_retries(port))) < 0) { IBWARN("_do_madrpc failed; dport (%s)", portid2str(dport)); return NULL; } @@ -267,7 +264,6 @@ void *mad_rpc_rmpp(const struct ibmad_port *port, ib_rpc_t * rpc, { int status, len; uint8_t sndbuf[1024], rcvbuf[1024], *mad; - int retries; memset(sndbuf, 0, umad_size() + IB_MAD_SIZE); @@ -276,12 +272,10 @@ void *mad_rpc_rmpp(const struct ibmad_port *port, ib_rpc_t * rpc, if ((len = mad_build_pkt(sndbuf, rpc, dport, rmpp, data)) < 0) return NULL; - retries = port->retries ? port->retries : madrpc_retries; - if ((len = _do_madrpc(port->port_id, sndbuf, rcvbuf, port->class_agents[rpc->mgtclass], len, mad_get_timeout(port, rpc->timeout), - retries)) < 0) { + mad_get_retries(port))) < 0) { IBWARN("_do_madrpc failed; dport (%s)", portid2str(dport)); return NULL; } -- 1.5.4.5 _______________________________________________ general mailing list general@lists.openfabrics.org http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general