@@ -61,6 +61,7 @@ repair_topo( config_t * config ) {
61
61
ulong net_tile_cnt = config -> layout .net_tile_count ;
62
62
ulong shred_tile_cnt = config -> layout .shred_tile_count ;
63
63
ulong quic_tile_cnt = config -> layout .quic_tile_count ;
64
+ ulong sign_tile_cnt = config -> firedancer .layout .sign_tile_count ;
64
65
65
66
fd_topo_t * topo = { fd_topob_new ( & config -> topo , config -> name ) };
66
67
topo -> max_page_size = fd_cstr_to_shmem_page_sz ( config -> hugetlbfs .max_page_size );
@@ -132,12 +133,17 @@ repair_topo( config_t * config ) {
132
133
/**/ fd_topob_link ( topo , "gossip_net" , "net_gossip" , config -> net .ingress_buffer_size , FD_NET_MTU , 1UL );
133
134
134
135
/**/ fd_topob_link ( topo , "repair_net" , "net_repair" , config -> net .ingress_buffer_size , FD_NET_MTU , 1UL );
135
- /**/ fd_topob_link ( topo , "repair_sign" , "repair_sign" , 128UL , 2048UL , 1UL );
136
- FOR (shred_tile_cnt ) fd_topob_link ( topo , "shred_repair ", " shred_repair ", pending_fec_shreds_depth, FD_SHRED_REPAIR_MTU, 2UL );
136
+
137
+ FOR (shred_tile_cnt ) fd_topob_link ( topo , "shred_repair ", " shred_repair ", pending_fec_shreds_depth, FD_SHRED_REPAIR_MTU, 2UL /* at most 2 msgs per after_frag */ );
137
138
138
139
FOR (shred_tile_cnt ) fd_topob_link ( topo , "repair_shred" , "shred_repair" , pending_fec_shreds_depth , sizeof (fd_ed25519_sig_t ), 1UL );
139
- /**/ fd_topob_link ( topo , "sign_repair" , "sign_repair" , 128UL , 64UL , 1UL );
140
- /**/ fd_topob_link ( topo , "repair_repla" , "repair_repla" , 65536UL , sizeof (fd_reasm_fec_t ), 1UL );
140
+
141
+ /**/ fd_topob_link ( topo , "ping_sign" , "repair_sign" , 128UL , 2048UL , 1UL );
142
+ /**/ fd_topob_link ( topo , "sign_ping" , "sign_repair" , 128UL , sizeof (fd_ed25519_sig_t ), 1UL );
143
+ FOR (sign_tile_cnt - 1 ) fd_topob_link ( topo , "repair_sign" , "repair_sign" , 128UL , 2048UL , 1UL );
144
+ FOR (sign_tile_cnt - 1 ) fd_topob_link ( topo , "sign_repair" , "sign_repair" , 1024UL , sizeof (fd_ed25519_sig_t ), 1UL );
145
+
146
+ /**/ fd_topob_link ( topo , "repair_repla" , "repair_repla" , 65536UL , sizeof (fd_reasm_fec_t ), 1UL );
141
147
/**/ fd_topob_link ( topo , "poh_shred" , "poh_shred" , 16384UL , USHORT_MAX , 1UL );
142
148
143
149
/**/ fd_topob_link ( topo , "send_txns" , "send_txns" , 128UL , FD_TXN_MTU , 1UL );
@@ -181,7 +187,7 @@ repair_topo( config_t * config ) {
181
187
182
188
/* topo, tile_name, tile_wksp, metrics_wksp, cpu_idx, is_agave, uses_keyswitch */
183
189
FOR (shred_tile_cnt ) fd_topob_tile ( topo , "shred ", " shred ", " metric_in ", tile_to_cpu[ topo->tile_cnt ], 0, 1 );
184
- /**/ fd_topob_tile( topo, " sign ", " sign ", " metric_in ", tile_to_cpu[ topo->tile_cnt ], 0, 1 );
190
+ FOR ( sign_tile_cnt ) fd_topob_tile ( topo , "sign" , "sign" , "metric_in" , tile_to_cpu [ topo -> tile_cnt ], 0 , 1 );
185
191
/**/ fd_topob_tile ( topo , "metric" , "metric" , "metric_in" , tile_to_cpu [ topo -> tile_cnt ], 0 , 0 );
186
192
/**/ fd_topob_tile ( topo , "gossip" , "gossip" , "metric_in" , tile_to_cpu [ topo -> tile_cnt ], 0 , 0 );
187
193
fd_topo_tile_t * repair_tile = fd_topob_tile ( topo , "repair" , "repair" , "metric_in" , tile_to_cpu [ topo -> tile_cnt ], 0 , 0 );
@@ -303,12 +309,17 @@ repair_topo( config_t * config ) {
303
309
fd_topob_tile_in ( topo , "repair" , 0UL , "metric_in" , "snap_out" , 0UL , FD_TOPOB_RELIABLE , FD_TOPOB_POLLED );
304
310
FOR (shred_tile_cnt ) fd_topob_tile_in ( topo , "repair ", 0UL, " metric_in ", " shred_repair ", i, FD_TOPOB_RELIABLE, FD_TOPOB_POLLED );
305
311
306
- /**/ fd_topob_tile_in( topo, " sign ", 0UL, " metric_in ", " repair_sign ", 0UL, FD_TOPOB_UNRELIABLE, FD_TOPOB_POLLED );
307
- /**/ fd_topob_tile_out( topo, " repair ", 0UL, " repair_sign ", 0UL );
308
- /**/ fd_topob_tile_in( topo, " repair ", 0UL, " metric_in ", " sign_repair ", 0UL, FD_TOPOB_UNRELIABLE, FD_TOPOB_UNPOLLED );
312
+ /**/ fd_topob_tile_in( topo, " sign ", 0UL, " metric_in ", " ping_sign ", 0UL, FD_TOPOB_RELIABLE, FD_TOPOB_POLLED );
313
+ /**/ fd_topob_tile_out( topo, " repair ", 0UL, " ping_sign ", 0UL );
309
314
/**/ fd_topob_tile_out( topo, " repair ", 0UL, " repair_repla ", 0UL );
310
315
FOR (shred_tile_cnt ) fd_topob_tile_out ( topo , "repair" , 0UL , "repair_shred" , i );
311
- /**/ fd_topob_tile_out ( topo , "sign" , 0UL , "sign_repair" , 0UL );
316
+ /**/ fd_topob_tile_out ( topo , "sign" , 0UL , "sign_ping" , 0UL );
317
+
318
+ FOR (sign_tile_cnt - 1 ) fd_topob_tile_out ( topo , "repair" , 0UL , "repair_sign" , i );
319
+ FOR (sign_tile_cnt - 1 ) fd_topob_tile_in ( topo , "sign" , i + 1 , "metric_in" , "repair_sign" , i , FD_TOPOB_RELIABLE , FD_TOPOB_POLLED );
320
+ FOR (sign_tile_cnt - 1 ) fd_topob_tile_out ( topo , "sign" , i + 1 , "sign_repair" , i );
321
+ FOR (sign_tile_cnt - 1 ) fd_topob_tile_in ( topo , "repair" , 0UL , "metric_in" , "sign_repair" , i , FD_TOPOB_UNRELIABLE , FD_TOPOB_POLLED );
322
+ /**/ fd_topob_tile_in ( topo , "repair" , 0UL , "metric_in" , "sign_ping" , 0UL , FD_TOPOB_UNRELIABLE , FD_TOPOB_UNPOLLED );
312
323
313
324
if ( 1 ) {
314
325
fd_topob_wksp ( topo , "scap" );
0 commit comments