@@ -172,7 +172,7 @@ fd_topo_initialize( config_t * config ) {
172172 fd_topob_wksp ( topo , "dedup_pack" );
173173
174174 fd_topob_wksp ( topo , "shred_storei" );
175- fd_topob_wksp ( topo , "shred_replay " );
175+ fd_topob_wksp ( topo , "shred_repair " );
176176 fd_topob_wksp ( topo , "stake_out" );
177177
178178 fd_topob_wksp ( topo , "poh_shred" );
@@ -246,6 +246,8 @@ fd_topo_initialize( config_t * config ) {
246246
247247 #define FOR (cnt ) for( ulong i=0UL; i<cnt; i++ )
248248
249+ ulong pending_fec_shreds_depth = fd_ulong_min ( fd_ulong_pow2_up ( config -> tiles .shred .max_pending_shred_sets * FD_REEDSOL_DATA_SHREDS_MAX ), USHORT_MAX + 1 /* dcache max */ );
250+
249251 /* topo, link_name, wksp_name, depth, mtu, burst */
250252 FOR (quic_tile_cnt ) fd_topob_link ( topo , "quic_net ", " net_quic ", config->tiles.net.send_buffer_size, FD_NET_MTU, 1UL );
251253 FOR (shred_tile_cnt ) fd_topob_link ( topo , "shred_net" , "net_shred" , config -> tiles .net .send_buffer_size , FD_NET_MTU , 1UL );
@@ -259,7 +261,6 @@ fd_topo_initialize( config_t * config ) {
259261
260262 FOR (shred_tile_cnt ) fd_topob_link ( topo , "shred_sign" , "shred_sign" , 128UL , 32UL , 1UL );
261263 FOR (shred_tile_cnt ) fd_topob_link ( topo , "sign_shred ", " sign_shred ", 128UL, 64UL, 1UL );
262- FOR (shred_tile_cnt ) fd_topob_link ( topo , "shred_replay" , "shred_replay" , 128UL , 128UL , config -> tiles .shred .max_pending_shred_sets );
263264
264265 /**/ fd_topob_link( topo, " gossip_sign ", " gossip_sign ", 128UL, 2048UL, 1UL );
265266 /**/ fd_topob_link( topo, " sign_gossip ", " sign_gossip ", 128UL, 64UL, 1UL );
@@ -280,6 +281,7 @@ fd_topo_initialize( config_t * config ) {
280281 /**/ fd_topob_link ( topo , "repair_store" , "repair_store" , 1024UL * 1024UL , FD_SHRED_MAX_SZ , 128UL );
281282 /**/ fd_topob_link ( topo , "repair_net" , "net_repair" , config -> tiles .net .send_buffer_size , FD_NET_MTU , 1UL );
282283 /**/ fd_topob_link ( topo , "repair_sign" , "repair_sign" , 128UL , 2048UL , 1UL );
284+ FOR (shred_tile_cnt ) fd_topob_link ( topo , "shred_repair ", " shred_repair ", pending_fec_shreds_depth, FD_SHRED_REPAIR_MTU, config->tiles.shred.max_pending_shred_sets );
283285 /**/ fd_topob_link( topo, " sign_repair ", " sign_repair ", 128UL, 64UL, 1UL );
284286 /**/ fd_topob_link( topo, " store_replay ", " store_replay ", 128UL, (4096UL*sizeof(fd_txn_p_t))+sizeof(ulong)+sizeof(fd_hash_t), 16UL );
285287 FOR (bank_tile_cnt ) fd_topob_link ( topo , "replay_poh" , "replay_poh" , 128UL , (4096UL * sizeof (fd_txn_p_t ))+ sizeof (fd_microblock_trailer_t ), 1UL );
@@ -503,7 +505,7 @@ fd_topo_initialize( config_t * config ) {
503505 /**/ fd_topob_tile_in ( topo , "shred" , i , "metric_in" , "sign_shred" , i , FD_TOPOB_UNRELIABLE , FD_TOPOB_UNPOLLED );
504506 /**/ fd_topob_tile_out ( topo , "sign" , 0UL , "sign_shred" , i );
505507 }
506- FOR (shred_tile_cnt ) fd_topob_tile_out ( topo , "shred ", i, " shred_replay ", i );
508+ FOR (shred_tile_cnt ) fd_topob_tile_out ( topo , "shred ", i, " shred_repair ", i );
507509
508510 FOR (net_tile_cnt ) fd_topob_tile_in ( topo , "gossip" , 0UL , "metric_in" , "net_gossip" , i , FD_TOPOB_UNRELIABLE , FD_TOPOB_POLLED ); /* No reliable consumers of networking fragments, may be dropped or overrun */
509511 /**/ fd_topob_tile_out ( topo , "gossip" , 0UL , "gossip_net" , 0UL );
@@ -523,15 +525,17 @@ fd_topo_initialize( config_t * config ) {
523525 /**/ fd_topob_tile_in( topo, " repair ", 0UL, " metric_in ", " gossip_repai ", 0UL, FD_TOPOB_UNRELIABLE, FD_TOPOB_POLLED );
524526 /**/ fd_topob_tile_in( topo, " repair ", 0UL, " metric_in ", " stake_out ", 0UL, FD_TOPOB_UNRELIABLE, FD_TOPOB_POLLED );
525527 /**/ fd_topob_tile_in( topo, " repair ", 0UL, " metric_in ", " store_repair ", 0UL, FD_TOPOB_UNRELIABLE, FD_TOPOB_POLLED );
528+ FOR (shred_tile_cnt ) fd_topob_tile_in ( topo , "repair" , 0UL , "metric_in" , "shred_repair" , i , FD_TOPOB_RELIABLE , FD_TOPOB_POLLED );
526529 /**/ fd_topob_tile_in ( topo , "replay" , 0UL , "metric_in" , "store_replay" , 0UL , FD_TOPOB_RELIABLE , FD_TOPOB_POLLED );
527530 /**/ fd_topob_tile_out ( topo , "replay" , 0UL , "stake_out" , 0UL );
528531 /**/ fd_topob_tile_out ( topo , "replay" , 0UL , "replay_notif" , 0UL );
529532 /**/ fd_topob_tile_in ( topo , "replay" , 0UL , "metric_in" , "pack_replay" , 0UL , FD_TOPOB_RELIABLE , FD_TOPOB_POLLED );
530533 /**/ fd_topob_tile_in ( topo , "replay" , 0UL , "metric_in" , "batch_replay" , 0UL , FD_TOPOB_RELIABLE , FD_TOPOB_POLLED );
531534 /**/ fd_topob_tile_out ( topo , "replay" , 0UL , "replay_voter" , 0UL );
532535 FOR (bank_tile_cnt ) fd_topob_tile_out ( topo , "replay ", 0UL, " replay_poh ", i );
533- FOR (exec_tile_cnt ) fd_topob_tile_out ( topo , "replay ", 0UL, " replay_exec ", i ); /* TODO check order in fd_replay.c macros*/
534- FOR (shred_tile_cnt ) fd_topob_tile_in ( topo , "replay" , 0UL , "metric_in" , "shred_replay" , i , FD_TOPOB_RELIABLE , FD_TOPOB_POLLED );
536+
537+
538+ FOR (exec_tile_cnt ) fd_topob_tile_out ( topo , "replay" , 0UL , "replay_exec" , i ); /* TODO check order in fd_replay.c macros*/
535539
536540 FOR (exec_tile_cnt ) fd_topob_tile_in ( topo , "exec ", i, " metric_in ", " replay_exec ", i, FD_TOPOB_RELIABLE, FD_TOPOB_POLLED );
537541
0 commit comments