[openib-general] [PATCH] osm: Routing Tables are full of UNREACHABLE instead of real route

Eitan Zahavi eitan at mellanox.co.il
Thu Dec 7 07:12:59 PST 2006


Hi Hal,

I resolved the mystery behind the osm.fdbs that is now full of 
UNREACHABLE instead of correct out ports.

The problem is a consequence of the new code that does not use the 
switch LFT blocks for the intermediate LFT assignments:
The idea of having incremental updates only relies on temporary buffer 
that the routing algorithm fills.
Then it is sent to the wire only if there is a diff between the switch 
LFT tables (from the SMDB) and the temporary buffer.

So the switch LFT tables are not being directly updated by the routing 
algorithm - but only by the GetResp obtained as
reply to the setting. Until this stage of the description - everything 
looks right.

But what is wrong is that the dump of LFT tables is invoked before the 
GetResp is obtained.
So if only a single sweep is invoked the resulting osm.fdbs show the 
original state of the SMDB tables whicg is full of 0xFF = UNREACHABLE.

The patch below is taking the easy way and should be probably revisited. 
Instead of having a separate algorithm step for dumping out the 
resulting GetResp data after all LFT responses were obtained it just 
copies the sent LFT blocks to the SMDB.

I think we need to have at least this simple patch until we have the 
dump move to a new algorithm step.

Thanks
Eitan

Signed-off-by:  Eitan Zahavi <eitan at mellanox.co.il>
=====================================================================

diff --git a/osm/opensm/osm_ucast_mgr.c b/osm/opensm/osm_ucast_mgr.c
index 5a55da8..3a62c7f 100644
--- a/osm/opensm/osm_ucast_mgr.c
+++ b/osm/opensm/osm_ucast_mgr.c
@@ -982,7 +982,15 @@ osm_ucast_mgr_set_fwd_table(
                "osm_ucast_mgr_set_fwd_table: ERR 3A05: "
                "Sending linear fwd. tbl. block failed (%s)\n",
                ib_get_err_str( status ) );
-    }
+    } else {
+       /*
+         HACK: for now we will assume we succeeded to send
+         and set the local DB based on it. This should allow
+         us to immediatly dump out our routing
+       */
+       osm_switch_set_ft_block(
+          p_sw, p_mgr->lft_buf + block_id_ho * 64, block_id_ho);
+        }
   }

   OSM_LOG_EXIT( p_mgr->p_log );





More information about the general mailing list