Hal,<br>
<br>
Thanks.. works like a charm...<br>
<br>
-Viswa<br>
<br><br><div><span class="gmail_quote">On 27 Sep 2005 16:13:01 -0400, <b class="gmail_sendername">Hal Rosenstock</b> <<a href="mailto:halr@voltaire.com">halr@voltaire.com</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On Tue, 2005-09-27 at 16:00, Viswanath Krishnamurthy wrote:<br>> Hal,<br>><br>> I added a hack now to get around the problem. There needs to be a<br>> proper fix later..<br><br>Can you try this instead ? Thanks.
<br><br>-- Hal<br><br>Index: include/opensm/osm_port.h<br>===================================================================<br>--- include/opensm/osm_port.h   (revision 3567)<br>+++ include/opensm/osm_port.h   (working copy)
<br>@@ -346,7 +346,7 @@ osm_physp_is_healthy(<br> *      Returns TRUE if the Physical Port has been maked as healthy<br> *      FALSE otherwise.<br> *  All physical ports are initialized as "healthy" but may be marked
<br>-*  otherwise if a  received trap claims otherwise.<br>+*  otherwise if a received trap claims otherwise.<br> *<br> * NOTES<br> *<br>@@ -456,6 +456,42 @@ osm_physp_set_port_info(<br> *      Port, Physical Port<br> *********/
<br><br>+/****f* OpenSM: Physical Port/osm_physp_validate_base_lid<br>+* NAME<br>+*  osm_physp_validate_base_lid<br>+*<br>+* DESCRIPTION<br>+*  Validates the base LID in the Physical Port object.<br>+*<br>+* SYNOPSIS<br>+*/
<br>+static inline boolean_t<br>+osm_physp_validate_base_lid(<br>+       IN osm_physp_t* const p_physp )<br>+{<br>+       CL_ASSERT( osm_physp_is_valid( p_physp ) );<br>+       if ( cl_ntoh16( p_physp->port_info.base_lid ) > IB_LID_UCAST_END_HO )
<br>+       {<br>+               p_physp->port_info.base_lid = 0;<br>+               return FALSE;<br>+       }<br>+       return TRUE;<br>+}<br>+/*<br>+* PARAMETERS<br>+*      p_physp<br>+*              [in] Pointer to an osm_physp_t object.
<br>+*<br>+* RETURN VALUES<br>+*      Returns TRUE if the base LID in the Physical port object is valid.<br>+*      FALSE otherwise.<br>+*<br>+* NOTES<br>+*<br>+* SEE ALSO<br>+*      Port, Physical Port<br>+*********/<br>
+<br> /****f* OpenSM: Physical Port/osm_physp_set_pkey_tbl<br> * NAME<br> *  osm_physp_set_pkey_tbl<br>Index: opensm/osm_port_info_rcv.c<br>===================================================================<br>--- opensm/osm_port_info_rcv.c  (revision 3579)
<br>+++ opensm/osm_port_info_rcv.c  (working copy)<br>@@ -346,8 +346,12 @@ __osm_pi_rcv_process_switch_port(<br><br>   if (port_num == 0)<br>   {<br>-    /* This is a management port 0 */<br>-               __osm_pi_rcv_process_endport(p_rcv, p_physp, p_pi);
<br>+       /* This is switch management port 0 */<br>+       if ( !osm_physp_validate_base_lid( p_physp ) )<br>+               osm_log( p_rcv->p_log, OSM_LOG_ERROR,<br>+                        "__osm_pi_rcv_process_switch_port: ERR 0F04: "
<br>+                        "Invalid
base LID corrected.\n" );<br>+       __osm_pi_rcv_process_endport(p_rcv, p_physp, p_pi);<br>   }<br><br>   OSM_LOG_EXIT( p_rcv->p_log );<br>@@ -367,6 +371,10 @@ __osm_pi_rcv_process_ca_port(<br>   UNUSED_PARAM( p_node );
<br><br>   osm_physp_set_port_info( p_physp, p_pi );<br>+  if ( !osm_physp_validate_base_lid( p_physp ) )<br>+    osm_log( p_rcv->p_log, OSM_LOG_ERROR,<br>+            "__osm_pi_rcv_process_ca_port: ERR 0F08: "
<br>+            "Invalid base LID corrected.\n" );<br><br>   __osm_pi_rcv_process_endport(p_rcv, p_physp, p_pi);<br><br>@@ -390,6 +398,10 @@ __osm_pi_rcv_process_router_port(<br>     Update the PortInfo attribute.
<br>   */<br>   osm_physp_set_port_info( p_physp, p_pi );<br>+  if ( !osm_physp_validate_base_lid( p_physp ) )<br>+    osm_log( p_rcv->p_log, OSM_LOG_ERROR,<br>+            "__osm_pi_rcv_process_router_port: ERR 0F09: "
<br>+            "Invalid base LID corrected.\n" );<br><br>   OSM_LOG_EXIT( p_rcv->p_log );<br> }<br><br><br><br></blockquote></div><br>