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>