The upper range of the vendor management class uses the RMPP header by default.

Signed-off-by: Sean Hefty <[email protected]>
---
diff -up -r -X \mshefty\scm\winof\trunk\docs\dontdiff.txt -I '\$Id:' 
trunk\core\al/al_mad.c branches\winverbs\core\al/al_mad.c
--- trunk\core\al/al_mad.c      2009-01-26 09:34:31.125875000 -0800
+++ branches\winverbs\core\al/al_mad.c  2009-05-07 10:27:30.082632500 -0700
@@ -1616,6 +1580,13 @@ __does_send_req_rmpp(
                                return FALSE;
                        }
                }
+               if 
(ib_class_is_vendor_specific_high(p_mad_element->p_mad_buf->mgmt_class) &&
+                       ib_rmpp_is_flag_set((ib_rmpp_mad_t *) 
p_mad_element->p_mad_buf,
+                                                               
IB_RMPP_FLAG_ACTIVE))
+               {
+                       *p_rmpp_version = DEFAULT_RMPP_VERSION;
+                       return TRUE;
+               }
 
                /* The RMPP is not active. */
                return FALSE;
@@ -2336,9 +2304,9 @@ __recv_requires_rmpp(
        switch( mad_svc_type )
        {
        case IB_MAD_SVC_DEFAULT:
-               /* Only subnet management receives require RMPP. */
-               return( (p_rmpp_mad->common_hdr.mgmt_class == 
IB_MCLASS_SUBN_ADM) &&
-                       ib_rmpp_is_flag_set( p_rmpp_mad, IB_RMPP_FLAG_ACTIVE ) 
);
+               return (p_rmpp_mad->common_hdr.mgmt_class == IB_MCLASS_SUBN_ADM 
||
+                               
ib_class_is_vendor_specific_high(p_rmpp_mad->common_hdr.mgmt_class)) &&
+                          ib_rmpp_is_flag_set(p_rmpp_mad, IB_RMPP_FLAG_ACTIVE);
 
        case IB_MAD_SVC_RMPP:
                return( ib_rmpp_is_flag_set( p_rmpp_mad, IB_RMPP_FLAG_ACTIVE ) 
);
@@ -2367,9 +2335,9 @@ __is_internal_send(
        {
        case IB_MAD_SVC_DEFAULT:
                /* Internal sends are non-RMPP data MADs. */
-               return( (p_rmpp_mad->common_hdr.mgmt_class == 
IB_MCLASS_SUBN_ADM) &&
-                               (p_rmpp_mad->rmpp_type &&
-                               (p_rmpp_mad->rmpp_type != IB_RMPP_TYPE_DATA) ) 
);
+               return ((p_rmpp_mad->common_hdr.mgmt_class == 
IB_MCLASS_SUBN_ADM ||
+                                
ib_class_is_vendor_specific_high(p_rmpp_mad->common_hdr.mgmt_class)) &&
+                                (p_rmpp_mad->rmpp_type && 
p_rmpp_mad->rmpp_type != IB_RMPP_TYPE_DATA));
 
        case IB_MAD_SVC_RMPP:
                /* The RMPP header is present.  Check its type. */


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

Reply via email to