On 2/13/2013 5:21 PM, Ira Weiny wrote:
> Due to the fact there is no corresponding patch to the diags I assume this is 
> something you want to support other uses of libibmad?

It's in out of tree apps.

> As this changes the API could you update libibmad.ver as well.

I thought that this is done once right before the new release is cut.
Otherwise, there is the possibility of too many version updates.

-- Hal

> Ira
> 
> On Thu, 31 Jan 2013 01:43:42 -0500
> Hal Rosenstock <[email protected]> wrote:
> 
>> Add ib_node_query_via routine similar to ib_path_query_via
>>
>> Signed-off-by: Hal Rosenstock <[email protected]>
>> ---
>> diff --git a/include/infiniband/mad.h b/include/infiniband/mad.h
>> index 0694dc4..02b2353 100644
>> --- a/include/infiniband/mad.h
>> +++ b/include/infiniband/mad.h
>> @@ -65,6 +65,7 @@ BEGIN_C_DECLS
>>  #define IB_PC_DATA_SZ               (IB_MAD_SIZE - IB_PC_DATA_OFFS)
>>  #define IB_SA_MCM_RECSZ             53
>>  #define IB_SA_PR_RECSZ              64
>> +#define IB_SA_NR_RECSZ              108
>>  #define IB_SA_GIR_RECSZ             72
>>  #define IB_BM_DATA_OFFS             64
>>  #define IB_BM_DATA_SZ               (IB_MAD_SIZE - IB_BM_DATA_OFFS)
>> @@ -1519,6 +1542,9 @@ MAD_EXPORT int ib_path_query_via(const struct 
>> ibmad_port *srcport,
>>                               ibmad_gid_t srcgid, ibmad_gid_t destgid,
>>                               ib_portid_t * sm_id, void *buf);
>>      /* returns lid */
>> +MAD_EXPORT int ib_node_query_via(const struct ibmad_port *srcport,
>> +                             uint64_t guid, ib_portid_t * sm_id,
>> +                             void *buf);
>>  
>>  /* resolve.c */
>>  MAD_EXPORT int ib_resolve_smlid(ib_portid_t * sm_id, int timeout) 
>> DEPRECATED;
>> diff --git a/src/libibmad.map b/src/libibmad.map
>> index a4d4418..3f92885 100644
>> --- a/src/libibmad.map
>> +++ b/src/libibmad.map
>> @@ -148,5 +148,6 @@ IBMAD_1.3 {
>>              cc_config_status_via;
>>              smp_mkey_get;
>>              smp_mkey_set;
>> +            ib_node_query_via;
>>      local: *;
>>  };
>> diff --git a/src/sa.c b/src/sa.c
>> index a9a93cc..352ed9f 100644
>> --- a/src/sa.c
>> +++ b/src/sa.c
>> @@ -145,3 +145,47 @@ int ib_path_query(ibmad_gid_t srcgid, ibmad_gid_t 
>> destgid, ib_portid_t * sm_id,
>>  {
>>      return ib_path_query_via(ibmp, srcgid, destgid, sm_id, buf);
>>  }
>> +
>> +/* NodeRecord */
>> +#define IB_NR_COMPMASK_LID                          (1ull<<0)
>> +#define IB_NR_COMPMASK_RESERVED1                    (1ull<<1)
>> +#define IB_NR_COMPMASK_BASEVERSION                  (1ull<<2)
>> +#define IB_NR_COMPMASK_CLASSVERSION                 (1ull<<3)
>> +#define IB_NR_COMPMASK_NODETYPE                             (1ull<<4)
>> +#define IB_NR_COMPMASK_NUMPORTS                             (1ull<<5)
>> +#define IB_NR_COMPMASK_SYSIMAGEGUID                 (1ull<<6)
>> +#define IB_NR_COMPMASK_NODEGUID                             (1ull<<7)
>> +#define IB_NR_COMPMASK_PORTGUID                             (1ull<<8)
>> +#define IB_NR_COMPMASK_PARTCAP                              (1ull<<9)
>> +#define IB_NR_COMPMASK_DEVID                                (1ull<<10)
>> +#define IB_NR_COMPMASK_REV                          (1ull<<11)
>> +#define IB_NR_COMPMASK_PORTNUM                              (1ull<<12)
>> +#define IB_NR_COMPMASK_VENDID                               (1ull<<13)
>> +#define IB_NR_COMPMASK_NODEDESC                             (1ull<<14)
>> +
>> +#define IB_NR_DEF_MASK IB_NR_COMPMASK_PORTGUID
>> +
>> +int ib_node_query_via(const struct ibmad_port *srcport, uint64_t guid,
>> +                  ib_portid_t * sm_id, void *buf)
>> +{
>> +    ib_sa_call_t sa = { 0 };
>> +    uint8_t *p;
>> +
>> +    memset(&sa, 0, sizeof sa);
>> +    sa.method = IB_MAD_METHOD_GET;
>> +    sa.attrid = IB_SA_ATTR_NODERECORD;
>> +    sa.mask = IB_NR_DEF_MASK;
>> +    sa.trid = mad_trid();
>> +
>> +    memset(buf, 0, IB_SA_NR_RECSZ);
>> +
>> +    mad_encode_field(buf, IB_SA_NR_PORT_GUID_F, &guid);
>> +
>> +    p = sa_rpc_call(srcport, buf, sm_id, &sa, 0);
>> +    if (!p) {
>> +            IBWARN("sa call node_query failed");
>> +            return -1;
>> +    }
>> +
>> +    return 0;
>> +}
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
>> the body of a message to [email protected]
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to