[openib-general] Get Table Records for SA Attribute ID ?

Takshak C. takshak at gs-lab.com
Wed Feb 22 05:09:28 PST 2006


Thanks a lot Hal, for clearing my doubts.
I would like to redefine my problem based on your inputs.

I am into a scenario, where vendor specific primary SM is running in the 
subnet.
This running SM is different than openSM. I have loaded an openIB stack 
on the host.

Some of the sample examples from management/diags/src/ directory like 
smpquery
for nodeinfo etc works and gives result to me.

Now, could it be possible for me to write a SA query and fetch the path, 
service
or info records without starting openSM instance as I have already 
primary SM
running in the subnet. ? I believe, this question could be right and 
your answer would
help me.

I do not want to start openSM because then synchronization between 
primary SM
and openSM would bring other issues or difficulties.

Could you please tell me, how should I go about it ? Waiting.

Regards.
- Takshak



Hal Rosenstock wrote:

>On Wed, 2006-02-22 at 06:56, Takshak C. wrote:
>  
>
>>Hal Rosenstock wrote: 
>>    
>>
>>>>Please throw some light on this. Do you have any userspace SA support for retrieving path, service record 
>>>>information ?
>>>>    
>>>>        
>>>>
>>>There have been discussions about userspace SA support but nothing
>>>currently for OpenIB (gen2). Currently, you can get this by using
>>>  
>>>      
>>>
>>Could you please tell me, when userspace SA support will be available
>>in openIB gen2. 
>>    
>>
>
>I don't know but I'm not sure how much this helps you based on your
>questions below.
>
>  
>
>>>osm_vendor_ibumad_sa.c which supports most SA requests. It is built as
>>>part of libosmvendor (part of the OpenSM build) but can be used outside
>>>of OpenSM. It is used by osmtest if you want to look at some use cases.
>>>It obtains PathRecords and ServiceRecords. That might be an easier
>>>direction to go than trying to use the management libraries to build the
>>>pieces of a userspace SA client you want.
>>>
>>>-- Hal
>>>  
>>>      
>>>
>>See, to execute osmtest, I found that openSM instance must be there.
>>    
>>
>
>Must be where ? What is your IB configuration ?
>
>  
>
>> So, even if I use part 
>>of libosmvendor library ( osm_vendor_ibumad_sa.c) functions, I have to
>>start openSM 
>>instance to execute the SA query successfully. 
>>    
>>
>
>An SM is needed in the subnet and SA is part of that and answers such
>queries.
>
>  
>
>>Without starting openSM client, I m able to retrieve node description,
>>node info, SM info,
>>port info by using management libraries libibumad and libibmad. 
>>    
>>
>
>of the local node only (until the SM brings up the subnet).
>
>  
>
>>What I want to achieve is, without talking with openSM instance, my SA
>>query client 
>>should go and get the required information. 
>>    
>>
>
>Why ?
>
>  
>
>>Is this possible ?. 
>>    
>>
>
>No. What would you query for paths to if the subnet were not up ?
>
>-- Hal
>
>  
>
>>Would like to know your inputs on this. 
>>
>>Regards,
>>- Takshak 
>>    
>>
>>>>Regards.
>>>>- Takshak 
>>>>
>>>>
>>>>Hal Rosenstock wrote:
>>>>
>>>>    
>>>>        
>>>>
>>>>>Hi,
>>>>>
>>>>>There are a couple of issues with the below.
>>>>>
>>>>>1. SA MAD structure is missing the RMPP header. Once I saw that I didn't check for further issues with the format.
>>>>>
>>>>>2. I will assume your register call sets RMPP.
>>>>>
>>>>>3. SA class version is 2.
>>>>>
>>>>>What SM are you using ? If you are using OpenSM, you can turn on verbose and see if the packet is seen by the SM. You could also enable madeye (in utils) to see if the packet is sent (and if anything is received back).
>>>>>
>>>>>-- Hal
>>>>>
>>>>>________________________________
>>>>>
>>>>>From: openib-general-bounces at openib.org on behalf of Takshak C.
>>>>>Sent: Mon 2/6/2006 8:00 AM
>>>>>To: openib-general at openib.org
>>>>>Subject: [openib-general] Get Table Records for SA Attribute ID ?
>>>>>
>>>>>
>>>>>
>>>>>Hi,
>>>>>
>>>>>I m trying to get the table records for SA attribute ID in following way.
>>>>>But, I m not getting a single record, could anyone comment on the problem.
>>>>>
>>>>>1. I have created saMadFormat structure described in the specification as below:
>>>>>
>>>>>struct saMadFormat
>>>>>{
>>>>>
>>>>>   uint8_t base_version ;
>>>>>   uint8_t mgmt_class ;
>>>>>   uint8_t class_version ;
>>>>>   uint8_t sa_method ;
>>>>>   uint16_t    status ;
>>>>>   uint16_t    not_used ;
>>>>>   uint64_t    tid ;
>>>>>   uint16_t    attr_id ;
>>>>>   uint16_t    resv ;
>>>>>   uint32_t    attr_mod ;
>>>>>   uint64_t    sa_key;
>>>>>   uint64_t    sm_key ;
>>>>>   uint32_t    seg_num ;
>>>>>   uint32_t    payload_len ;
>>>>>   uint8_t     frag_flag ;
>>>>>   uint8_t edit_mod ;
>>>>>   uint16_t    window ;
>>>>>   uint32_t    endRID ;
>>>>>   uint64_t    comp_mask ;
>>>>>   uint8_t adminData[192] ;
>>>>>};
>>>>>
>>>>>2. Then I have done all the basic operations like umad_open, umad_register for the IB_SA_CLASS
>>>>>  and umad_open_port etc successfully.
>>>>>
>>>>>3. struct saMadFormat *saQuery = (struct saMadFormat*)(umad_get_mad(umad));
>>>>>  memset(saQuery, 0, sizeof(*saQuery));
>>>>>
>>>>>  saQuery->base_version = 1;
>>>>>  saQuery->mgmt_class = IB_SA_CLASS ;
>>>>>  saQuery->class_version = 1 ;
>>>>>  saQuery->sa_method = IB_MAD_METHOD_GET_TABLE ;
>>>>>  saQuery->attr_id = IB_SA_ATTR_PATHRECORD ;
>>>>>  saQuery->attr_mod = 0 ;
>>>>>  saQuery->tid  = htonll(drmad_tid++); 
>>>>>  saQuery->endRID = 0 ;
>>>>>
>>>>>  umad_set_addr(umad, lid, 1, 0, IB_DEFAULT_QP1_QKEY);
>>>>>  umad_set_grh(umad, 0);
>>>>>  umad_set_pkey(umad, 0xFFFF);
>>>>>
>>>>>4. length = IB_MAD_SIZE;
>>>>>
>>>>> if (umad_send(portid, mad_agent, umad, length, timeout_ms, 0) < 0)
>>>>>    IBPANIC("send failed");                                                                                                                    
>>>>>
>>>>> if (umad_recv(portid, umad, &length, -1) != mad_agent)
>>>>>    IBPANIC("recv error: %s", drmad_status_str(saQuery));
>>>>>
>>>>>                                                                                                                    
>>>>>
>>>>> if (!dump_char) {
>>>>>     xdump(stdout, 0, saQuery->adminData, 192);
>>>>>     return 0;
>>>>>  }
>>>>>
>>>>>I m expecting that, I will get the resultant data in saQuery->adminData.
>>>>>Is this correct ? If not then, how should I retrieve the table records ?
>>>>>Any Idea ?
>>>>>
>>>>>
>>>>>Thanks
>>>>>- Takshak
>>>>>
>>>>>_______________________________________________
>>>>>openib-general mailing list
>>>>>openib-general at openib.org
>>>>>http://openib.org/mailman/listinfo/openib-general
>>>>>
>>>>>To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
>>>>>
>>>>>
>>>>>
>>>>> 
>>>>>
>>>>>      
>>>>>          
>>>>>
>>>  
>>>      
>>>
>
>  
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openfabrics.org/pipermail/general/attachments/20060222/b6da29c8/attachment.html>


More information about the general mailing list