<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
  <title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
<pre><tt>Hi Hal:

Thanks for the information. 

I would like to confirm that, umad_send() and umad_recv calls goes out of osm libraries.

I have written an application to get PATH_RECORDS using opensm libraries similar to osmtest. 
If I don't start openSM instance, then I don't get results rather I get an error message as 
below:
[ umad_receiver: ERR 5409: send completed with error (method=0x12 attr=0x35 trans_id=0x1) -- dropping ]


I have tried to go inside. Just after umad_send() call in osm_vendor_ibumad.c ( osm_vendor_send() function ), 
I called umad_recv() function call and tried to check the receive length. And I am getting 24. 

Why this could have been happened ? return length = 24 means call has not received path records. 

But if I start openSM instance then I get proper result length. 

I would like to remove dependency of starting this openSM instance and my application program 
should run independently. 

Could you please throw me some light on this. When I have called umad_recv() it should not depend 
on openSM instance I believe to received the things.  

Thanks & Regards.
- Takshak 


Hal Rosenstock wrote:</tt></pre>
<blockquote cite="mid1140615978.28051.15030.camel@hal.voltaire.com"
 type="cite">
  <pre wrap=""><tt>On Wed, 2006-02-22 at 08:09, Takshak C. wrote:
</tt></pre>
  <blockquote type="cite">
    <pre wrap=""><tt>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. 
</tt></pre>
  </blockquote>
  <pre wrap=""><!----><tt>
OK. I understand your configuration.

</tt></pre>
  <blockquote type="cite">
    <pre wrap=""><tt>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
</tt></pre>
  </blockquote>
  <pre wrap=""><!----><tt>
Info records ?

</tt></pre>
  <blockquote type="cite">
    <pre wrap=""><tt> without starting openSM instance as I have already primary SM 
running in the subnet. ?
</tt></pre>
  </blockquote>
  <pre wrap=""><!----><tt>
Yes; all you are (conceptually) talking about is a user SA client.

</tt></pre>
  <blockquote type="cite">
    <pre wrap=""><tt> 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. 
</tt></pre>
  </blockquote>
  <pre wrap=""><!----><tt>
Understood. It was unclear whether you had an SM in your subnet.

You should be able to link libopensm and the other management libraries
to an SA application which would do this (and not require OpenSM
itself).

</tt></pre>
  <blockquote type="cite">
    <pre wrap=""><tt>Could you please tell me, how should I go about it ? Waiting. 
</tt></pre>
  </blockquote>
  <pre wrap=""><!----><tt>
I think I've already answered this.

-- Hal

</tt></pre>
  <blockquote type="cite">
    <pre wrap=""><tt>Regards.
- Takshak 



Hal Rosenstock wrote: 
</tt></pre>
    <blockquote type="cite">
      <pre wrap=""><tt>On Wed, 2006-02-22 at 06:56, Takshak C. wrote:
  
</tt></pre>
      <blockquote type="cite">
        <pre wrap=""><tt>Hal Rosenstock wrote: 
    
</tt></pre>
        <blockquote type="cite">
          <blockquote type="cite">
            <pre wrap=""><tt>Please throw some light on this. Do you have any userspace SA support for retrieving path, service record 
information ?
    
        
</tt></pre>
          </blockquote>
          <pre wrap=""><tt>There have been discussions about userspace SA support but nothing
currently for OpenIB (gen2). Currently, you can get this by using
  
      
</tt></pre>
        </blockquote>
        <pre wrap=""><tt>Could you please tell me, when userspace SA support will be available
in openIB gen2. 
    
</tt></pre>
      </blockquote>
      <pre wrap=""><tt>I don't know but I'm not sure how much this helps you based on your
questions below.

  
</tt></pre>
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap=""><tt>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
  
      
</tt></pre>
        </blockquote>
        <pre wrap=""><tt>See, to execute osmtest, I found that openSM instance must be there.
    
</tt></pre>
      </blockquote>
      <pre wrap=""><tt>Must be where ? What is your IB configuration ?

  
</tt></pre>
      <blockquote type="cite">
        <pre wrap=""><tt> 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. 
    
</tt></pre>
      </blockquote>
      <pre wrap=""><tt>An SM is needed in the subnet and SA is part of that and answers such
queries.

  
</tt></pre>
      <blockquote type="cite">
        <pre wrap=""><tt>Without starting openSM client, I m able to retrieve node description,
node info, SM info,
port info by using management libraries libibumad and libibmad. 
    
</tt></pre>
      </blockquote>
      <pre wrap=""><tt>of the local node only (until the SM brings up the subnet).

  
</tt></pre>
      <blockquote type="cite">
        <pre wrap=""><tt>What I want to achieve is, without talking with openSM instance, my SA
query client 
should go and get the required information. 
    
</tt></pre>
      </blockquote>
      <pre wrap=""><tt>Why ?

  
</tt></pre>
      <blockquote type="cite">
        <pre wrap=""><tt>Is this possible ?. 
    
</tt></pre>
      </blockquote>
      <pre wrap=""><tt>No. What would you query for paths to if the subnet were not up ?

-- Hal

  
</tt></pre>
      <blockquote type="cite">
        <pre wrap=""><tt>Would like to know your inputs on this. 

Regards,
- Takshak 
    
</tt></pre>
        <blockquote type="cite">
          <blockquote type="cite">
            <pre wrap=""><tt>Regards.
- Takshak 


Hal Rosenstock wrote:

    
        
</tt></pre>
            <blockquote type="cite">
              <pre wrap=""><tt>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: <a class="moz-txt-link-abbreviated" href="mailto:openib-general-bounces@openib.org">openib-general-bounces@openib.org</a> on behalf of Takshak C.
Sent: Mon 2/6/2006 8:00 AM
To: <a class="moz-txt-link-abbreviated" href="mailto:openib-general@openib.org">openib-general@openib.org</a>
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
<a class="moz-txt-link-abbreviated" href="mailto:openib-general@openib.org">openib-general@openib.org</a>
<a class="moz-txt-link-freetext" href="http://openib.org/mailman/listinfo/openib-general">http://openib.org/mailman/listinfo/openib-general</a>

To unsubscribe, please visit <a class="moz-txt-link-freetext" href="http://openib.org/mailman/listinfo/openib-general">http://openib.org/mailman/listinfo/openib-general</a>



 

      
          
</tt>                                                                                                                    </pre>
            </blockquote>
          </blockquote>
          <pre wrap=""><tt>        
</tt></pre>
        </blockquote>
      </blockquote>
      <pre wrap=""><tt>  
</tt></pre>
    </blockquote>
  </blockquote>
  <pre wrap=""><!----><tt>
</tt></pre>
</blockquote>
<br>
</body>
</html>