1
1
#include "topology.h"
2
2
3
- #include "../../discof/repair/fd_fec_chainer.h"
3
+ #include "../../choreo/fd_choreo_base.h"
4
+ #include "../../discof/repair/fd_reasm.h"
4
5
#include "../../discof/replay/fd_replay_notif.h"
5
6
#include "../../disco/net/fd_net_tile.h"
6
7
#include "../../disco/quic/fd_tpu.h"
@@ -244,7 +245,8 @@ fd_topo_initialize( config_t * config ) {
244
245
fd_topob_wksp ( topo , "gossip_repai" );
245
246
fd_topob_wksp ( topo , "gossip_verif" );
246
247
fd_topob_wksp ( topo , "gossip_tower" );
247
- fd_topob_wksp ( topo , "replay_tower" );
248
+ fd_topob_wksp ( topo , "replay_out" );
249
+ fd_topob_wksp ( topo , "root_out" );
248
250
249
251
fd_topob_wksp ( topo , "repair_sign" );
250
252
fd_topob_wksp ( topo , "sign_repair" );
@@ -337,8 +339,8 @@ fd_topo_initialize( config_t * config ) {
337
339
338
340
/**/ fd_topob_link( topo, " gossip_verif ", " gossip_verif ", config->tiles.verify.receive_buffer_size, FD_TPU_RAW_MTU, 1UL );
339
341
/**/ fd_topob_link( topo, " gossip_tower ", " gossip_tower ", 128UL, FD_TPU_MTU, 1UL );
340
- /**/ fd_topob_link( topo, " replay_tower ", " replay_tower ", 128UL, 65536UL, 1UL );
341
- /**/ fd_topob_link( topo, " tower_replay ", " replay_tower ", 128UL, 0, 1UL );
342
+ /**/ fd_topob_link( topo, " replay_out ", " replay_out ", 128UL, sizeof(fd_replay_out_t), 1UL );
343
+ /**/ fd_topob_link( topo, " root_out ", " root_out ", 128UL, sizeof(fd_block_id_t), 1UL );
342
344
343
345
/**/ fd_topob_link( topo, " crds_shred ", " crds_shred ", 128UL, 8UL + 40200UL * 38UL, 1UL );
344
346
/**/ fd_topob_link( topo, " gossip_repai ", " gossip_repai ", 128UL, 40200UL * 38UL, 1UL );
@@ -353,7 +355,7 @@ fd_topo_initialize( config_t * config ) {
353
355
354
356
FOR (shred_tile_cnt ) fd_topob_link ( topo , "repair_shred ", " shred_repair ", pending_fec_shreds_depth, sizeof(fd_ed25519_sig_t), 1UL );
355
357
/**/ fd_topob_link( topo, " sign_repair ", " sign_repair ", 128UL, 64UL, 1UL );
356
- /**/ fd_topob_link( topo, " repair_repla ", " repair_repla ", 65536UL, sizeof(fd_fec_out_t), 1UL );
358
+ /**/ fd_topob_link( topo, " repair_repla ", " repair_repla ", 65536UL, sizeof(fd_reasm_fec_t), 1UL );
357
359
/**/ fd_topob_link( topo, " poh_shred ", " poh_shred ", 16384UL, USHORT_MAX, 1UL );
358
360
/**/ fd_topob_link( topo, " poh_pack ", " replay_poh ", 128UL, sizeof(fd_became_leader_t) , 1UL );
359
361
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 );
@@ -525,7 +527,6 @@ fd_topo_initialize( config_t * config ) {
525
527
526
528
for ( ulong i = 0UL ; i < exec_tile_cnt ; i ++ ) {
527
529
fd_topo_obj_t * exec_fseq_obj = fd_topob_obj ( topo , "fseq" , "exec_fseq" );
528
- fd_topob_tile_uses ( topo , & topo -> tiles [ fd_topo_find_tile ( topo , "exec" , i ) ], exec_fseq_obj , FD_SHMEM_JOIN_MODE_READ_WRITE );
529
530
fd_topob_tile_uses ( topo , replay_tile , exec_fseq_obj , FD_SHMEM_JOIN_MODE_READ_ONLY );
530
531
FD_TEST ( fd_pod_insertf_ulong ( topo -> props , exec_fseq_obj -> id , "exec_fseq.%lu" , i ) );
531
532
}
@@ -552,7 +553,6 @@ fd_topo_initialize( config_t * config ) {
552
553
553
554
fd_topo_obj_t * root_slot_obj = fd_topob_obj ( topo , "fseq" , "slot_fseqs" );
554
555
fd_topob_tile_uses ( topo , replay_tile , root_slot_obj , FD_SHMEM_JOIN_MODE_READ_WRITE );
555
- fd_topob_tile_uses ( topo , repair_tile , root_slot_obj , FD_SHMEM_JOIN_MODE_READ_ONLY );
556
556
FD_TEST ( fd_pod_insertf_ulong ( topo -> props , root_slot_obj -> id , "root_slot" ) );
557
557
558
558
/* turbine_slot0 is an fseq marking the slot number of the first shred
@@ -637,10 +637,10 @@ fd_topo_initialize( config_t * config ) {
637
637
638
638
/**/ fd_topob_tile_out ( topo , "repair" , 0UL , "repair_net" , 0UL );
639
639
640
- /**/ fd_topob_tile_in ( topo , "tower" , 0UL , "metric_in" , "gossip_tower" , 0UL , FD_TOPOB_UNRELIABLE , FD_TOPOB_POLLED ); /* No reliable consumers of networking fragments, may be dropped or overrun */
641
- /**/ fd_topob_tile_in ( topo , "tower" , 0UL , "metric_in" , "replay_tower " , 0UL , FD_TOPOB_RELIABLE , FD_TOPOB_POLLED );
642
-
643
- /**/ fd_topob_tile_out ( topo , "tower" , 0UL , "tower_replay" , 0UL );
640
+ /**/ fd_topob_tile_in ( topo , "tower" , 0UL , "metric_in" , "gossip_tower" , 0UL , FD_TOPOB_UNRELIABLE , FD_TOPOB_POLLED ); /* No reliable consumers of networking fragments, may be dropped or overrun */
641
+ /**/ fd_topob_tile_in ( topo , "tower" , 0UL , "metric_in" , "replay_out " , 0UL , FD_TOPOB_RELIABLE , FD_TOPOB_POLLED );
642
+ /**/ fd_topob_tile_in ( topo , "tower" , 0UL , "metric_in" , "snap_out" , 0UL , FD_TOPOB_RELIABLE , FD_TOPOB_POLLED );
643
+ /**/ fd_topob_tile_out ( topo , "tower" , 0UL , "root_out" , 0UL );
644
644
/**/ fd_topob_tile_out ( topo , "tower" , 0UL , "tower_send" , 0UL );
645
645
646
646
/* Sign links don't need to be reliable because they are synchronous,
@@ -669,12 +669,13 @@ fd_topo_initialize( config_t * config ) {
669
669
FOR (net_tile_cnt ) fd_topob_tile_in ( topo , "repair" , 0UL , "metric_in" , "net_repair" , i , FD_TOPOB_UNRELIABLE , FD_TOPOB_POLLED ); /* No reliable consumers of networking fragments, may be dropped or overrun */
670
670
/**/ fd_topob_tile_in ( topo , "repair" , 0UL , "metric_in" , "gossip_repai" , 0UL , FD_TOPOB_UNRELIABLE , FD_TOPOB_POLLED );
671
671
/**/ fd_topob_tile_in ( topo , "repair" , 0UL , "metric_in" , "stake_out" , 0UL , FD_TOPOB_UNRELIABLE , FD_TOPOB_POLLED );
672
+ fd_topob_tile_in ( topo , "repair" , 0UL , "metric_in" , "snap_out" , 0UL , FD_TOPOB_RELIABLE , FD_TOPOB_POLLED );
672
673
FOR (shred_tile_cnt ) fd_topob_tile_in ( topo , "repair ", 0UL, " metric_in ", " shred_repair ", i, FD_TOPOB_RELIABLE, FD_TOPOB_POLLED );
673
674
674
- /**/ fd_topob_tile_in( topo, " replay ", 0UL, " metric_in ", " repair_repla ", 0UL, FD_TOPOB_RELIABLE, FD_TOPOB_POLLED );
675
+ /**/ fd_topob_tile_in ( topo, " replay ", 0UL, " metric_in ", " repair_repla ", 0UL, FD_TOPOB_RELIABLE, FD_TOPOB_POLLED );
675
676
/**/ fd_topob_tile_out( topo, " replay ", 0UL, " stake_out ", 0UL );
676
- /**/ fd_topob_tile_in( topo, " replay ", 0UL, " metric_in ", " tower_replay ", 0UL, FD_TOPOB_RELIABLE, FD_TOPOB_POLLED );
677
- /**/ fd_topob_tile_out( topo, " replay ", 0UL, " replay_tower ", 0UL );
677
+ /**/ fd_topob_tile_in ( topo, " replay ", 0UL, " metric_in ", " root_out ", 0UL, FD_TOPOB_RELIABLE, FD_TOPOB_POLLED );
678
+ /**/ fd_topob_tile_out( topo, " replay ", 0UL, " replay_out ", 0UL );
678
679
FOR (bank_tile_cnt ) fd_topob_tile_out ( topo , "replay" , 0UL , "replay_poh" , i );
679
680
FOR (exec_tile_cnt ) fd_topob_tile_out ( topo , "replay ", 0UL, " replay_exec ", i ); /* TODO check order in fd_replay.c macros*/
680
681
@@ -704,9 +705,9 @@ fd_topo_initialize( config_t * config ) {
704
705
705
706
fd_topob_tile_out ( topo , "poh" , 0UL , "poh_pack" , 0UL );
706
707
707
- /**/ fd_topob_tile_in ( topo , "sign" , 0UL , "metric_in" , "repair_sign" , 0UL , FD_TOPOB_UNRELIABLE , FD_TOPOB_POLLED );
708
+ /**/ fd_topob_tile_in ( topo , "sign" , 0UL , "metric_in" , "repair_sign" , 0UL , FD_TOPOB_UNRELIABLE , FD_TOPOB_POLLED );
708
709
/**/ fd_topob_tile_out ( topo , "repair" , 0UL , "repair_sign" , 0UL );
709
- /**/ fd_topob_tile_in ( topo , "repair" , 0UL , "metric_in" , "sign_repair" , 0UL , FD_TOPOB_UNRELIABLE , FD_TOPOB_UNPOLLED );
710
+ /**/ fd_topob_tile_in ( topo , "repair" , 0UL , "metric_in" , "sign_repair" , 0UL , FD_TOPOB_UNRELIABLE , FD_TOPOB_UNPOLLED );
710
711
/**/ fd_topob_tile_out ( topo , "repair" , 0UL , "repair_repla" , 0UL );
711
712
FOR (shred_tile_cnt ) fd_topob_tile_out ( topo , "repair ", 0UL, " repair_shred ", i );
712
713
/**/ fd_topob_tile_out( topo, " sign ", 0UL, " sign_repair ", 0UL );
0 commit comments