Signed-off-by: Jim Foraker <forak...@llnl.gov> --- include/infiniband/mad.h | 2 ++ src/libibmad.map | 2 ++ src/mad_internal.h | 1 + src/smp.c | 12 ++++++++++++ 4 files changed, 17 insertions(+), 0 deletions(-)
diff --git a/include/infiniband/mad.h b/include/infiniband/mad.h index 5d62307..278b9bc 100644 --- a/include/infiniband/mad.h +++ b/include/infiniband/mad.h @@ -1489,6 +1489,8 @@ MAD_EXPORT uint8_t *smp_set_status_via(void *data, ib_portid_t * portid, unsigned attrid, unsigned mod, unsigned timeout, int *rstatus, const struct ibmad_port *srcport); +MAD_EXPORT void smp_mkey_set(struct ibmad_port *srcport, uint64_t mkey); +MAD_EXPORT uint64_t smp_mkey_get(const struct ibmad_port *srcport); /* cc.c */ MAD_EXPORT void *cc_query_status_via(void *rcvbuf, ib_portid_t * portid, diff --git a/src/libibmad.map b/src/libibmad.map index 7c7587b..a4d4418 100644 --- a/src/libibmad.map +++ b/src/libibmad.map @@ -146,5 +146,7 @@ IBMAD_1.3 { mad_dump_port_ext_speeds_counters; cc_query_status_via; cc_config_status_via; + smp_mkey_get; + smp_mkey_set; local: *; }; diff --git a/src/mad_internal.h b/src/mad_internal.h index 3c32d10..5deac27 100644 --- a/src/mad_internal.h +++ b/src/mad_internal.h @@ -40,6 +40,7 @@ struct ibmad_port { int port_id; /* file descriptor returned by umad_open() */ int class_agents[MAX_CLASS]; /* class2agent mapper */ int timeout, retries; + uint64_t smp_mkey; }; extern struct ibmad_port *ibmp; diff --git a/src/smp.c b/src/smp.c index a337663..14c74ed 100644 --- a/src/smp.c +++ b/src/smp.c @@ -46,6 +46,16 @@ #undef DEBUG #define DEBUG if (ibdebug) IBWARN +void smp_mkey_set(struct ibmad_port *srcport, uint64_t mkey) +{ + srcport->smp_mkey = mkey; +} + +uint64_t smp_mkey_get(const struct ibmad_port *srcport) +{ + return srcport->smp_mkey; +} + uint8_t *smp_set_status_via(void *data, ib_portid_t * portid, unsigned attrid, unsigned mod, unsigned timeout, int *rstatus, const struct ibmad_port *srcport) @@ -67,6 +77,7 @@ uint8_t *smp_set_status_via(void *data, ib_portid_t * portid, unsigned attrid, rpc.timeout = timeout; rpc.datasz = IB_SMP_DATA_SIZE; rpc.dataoffs = IB_SMP_DATA_OFFS; + rpc.mkey = srcport->smp_mkey; portid->sl = 0; portid->qp = 0; @@ -105,6 +116,7 @@ uint8_t *smp_query_status_via(void *rcvbuf, ib_portid_t * portid, rpc.timeout = timeout; rpc.datasz = IB_SMP_DATA_SIZE; rpc.dataoffs = IB_SMP_DATA_OFFS; + rpc.mkey = srcport->smp_mkey; if ((portid->lid <= 0) || (portid->drpath.drslid == 0xffff) || -- 1.7.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