Hi Fab,
This patch fixes printing of uplink information in VSTAT and i'm going
to commit it now, because it improves the current state.
But really all the implementation of vendor-specific information in
query_ca is bad.
We need to define a structure, describing all that info and to work with
names, not calculated offsets.
We'll put it on our todo list.


________________________________

        From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Fab Tillier
        Sent: Wednesday, April 09, 2008 7:44 PM
        To: Reuven Amitai; [email protected]
        Subject: [ofw] RE: [PATCH] mthca patch [1/2]
        
        

        Hi Reuven,

         

        What is the problem with the alignment?  The board ID is a
character string, so shouldn't need any special alignment.  Also, you
are rounding the size down - is that the right thing to do?

         

        What is the layout of the ca_attr buffer, and what are the
alignment requirements for the different structures appended to the end?

         

        Is MTHCA_BRD_ID_LEN going to cause the uplink info to be
aligned?

         

        Thanks,

        -Fab

         

        From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Reuven Amitai
        Sent: Wednesday, April 09, 2008 6:04 AM
        To: [email protected]
        Subject: [ofw] [PATCH] mthca patch [1/2]

         

        Hi,

         

        The following patch align the returned address.

         

        Thanks, Reuven.

         

        Index: inc/mthca/mthca_vc.h

        
===================================================================

        --- inc/mthca/mthca_vc.h      (revision 1047)

        +++ inc/mthca/mthca_vc.h      (working copy)

        @@ -78,12 +78,18 @@

         

         inline char* mthca_get_board_id(ib_ca_attr_t *ca_attr)

         {

        -    return (char*)(ca_attr)+(ca_attr->size - MTHCA_BRD_ID_LEN -
sizeof(uplink_info_t));

        +     int size = (ca_attr->size - MTHCA_BRD_ID_LEN -
sizeof(uplink_info_t));

        +     size &= ~(sizeof(void*) - 1);

        +     

        +     return (char*)(ca_attr)+ size;

         }

         

         inline void* mthca_get_uplink_info(ib_ca_attr_t *ca_attr)

         {

        -    return (char*)(ca_attr)+(ca_attr->size -
sizeof(uplink_info_t));

        +     int size = (ca_attr->size - sizeof(uplink_info_t));

        +     size &= ~(sizeof(void*) - 1);

        +

        +     return (char*)(ca_attr)+ size;

         }

         

         #endif

         

_______________________________________________
ofw mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw

Reply via email to