Adaptive Retransmission - Parameters Control

Sample Usage

The following examples show how to review and update the Adaptive Retransmission (ADP) profile using both:

  • The standard ROCE_ACCL register

  • The advanced mechanism (reg_id 0x402c)

The examples below use mlxreg, but the same usage applies when using the mstreg tool.

[]$ sudo mlxreg -d 1a:00.0 --yes --reg_name ROCE_ACCL --get
Sending access register...
 
Field Name                                 	| Data	
============================================================
roce_adp_retrans_field_select              	| 0x00000001
roce_tx_window_field_select                	| 0x00000001
roce_slow_restart_field_select             	| 0x00000001
roce_slow_restart_idle_field_select        	| 0x00000001
min_ack_timeout_limit_disabled_field_select	| 0x00000001
adaptive_routing_forced_en_field_select    	| 0x00000000
selective_repeat_forced_en_field_select    	| 0x00000001
dc_half_handshake_en_field_select          	| 0x00000000
cc_per_plane_en_field_select               	| 0x00000000
ack_dscp_force_field_select                	| 0x00000001
cc_burst_size_select                       	| 0x00000001
ps_metadata_reg_id_select                  	| 0x00000000
ifa2_turn_around_select                    	| 0x00000001
adp_retx_profile_select                    	| 0x00000001
roce_adp_retrans_en                        	| 0x00000001
roce_tx_window_en                          	| 0x00000000
roce_slow_restart_en                       	| 0x00000001
roce_slow_restart_idle_en                  	| 0x00000000
min_ack_timeout_limit_disabled             	| 0x00000000
adaptive_routing_forced_en                 	| 0x00000000
selective_repeat_forced_en                 	| 0x00000000
dc_half_handshake_en                       	| 0x00000000
cc_per_plane_en                            	| 0x00000000
ack_dscp_force                             	| 0x00000000
ack_dscp                                   	| 0x00000000
ps_metadata_reg_id                         	| 0x00000000
cc_burst_size                              	| 0x00000000
Ifa2_turn_around_en                        	| 0x00000000
adp_retx_profile_id                        	| 0x00000000
adp_retx_base_timeout_min                  	| 0x00000fa0
adp_retx_profile_max_id                    	| 0x00000001
adp_retx_profile_max_range_num             	| 0x00000004
time_base                                  	| 0x00000000
time_unit                                  	| 0x00000000
start_range_index                          	| 0x00000000
range_num                                  	| 0x00000000
qp_total_timeout                           	| 0x00000000
timeout_init_range_size                    	| 0x00000000
timeout_init_low_bound                     	| 0x00000000
retx_total_timeout                         	| 0x00000000
range_size_0                               	| 0x00000000
range_low_bound_0                          	| 0x00000000
timeout_retry_num_0                        	| 0x00000000
dec_mode_0                                 	| 0x00000000
prev_range_index_0                         	| 0x00000000
range_size_1                               	| 0x00000000
range_low_bound_1                          	| 0x00000000
timeout_retry_num_1                        	| 0x00000000
dec_mode_1                                 	| 0x00000000
prev_range_index_1                         	| 0x00000000
range_size_2                               	| 0x00000000
range_low_bound_2                          	| 0x00000000
timeout_retry_num_2                        	| 0x00000000
dec_mode_2                                 	| 0x00000000
prev_range_index_2                         	| 0x00000000
range_size_3                               	| 0x00000000
range_low_bound_3                          	| 0x00000000
timeout_retry_num_3                        	| 0x00000000
dec_mode_3                                 	| 0x00000000
prev_range_index_3                         	| 0x00000000
============================================================
 
[]$ sudo mlxreg -d 1a:00.0 --yes --reg_id 0x402c --reg_len 0x40 --get
Sending access register...
 
Address	| Data
=======================
0x00000000 | 0x1800065f
0x00000004 | 0x00000005
0x00000008 | 0x41000fa0
0x0000000c | 0x00000000
0x00000010 | 0x00000000
0x00000014 | 0x00000000
0x00000018 | 0x00000000
0x0000001c | 0x00000000
0x00000020 | 0x00000000
0x00000024 | 0x00000000
0x00000028 | 0x00000000
0x0000002c | 0x00000000
0x00000030 | 0x00000000
0x00000034 | 0x00000000
0x00000038 | 0x00000000
0x0000003c | 0x00000000
=======================

// Equivalent usage with ROCE_ACCL reg_name commented out for clarity and future usage
[]$ ###sudo mlxreg -d 1a:00.0 --reg_name ROCE_ACCL --set roce_adp_retrans_en=0x1,adp_retx_profile_id=0x1,time_base=4,time_unit=1,start_range_index=0,range_num=1,qp_total_timeout=1,timeout_init_range_size=2,timeout_init_low_bound=0,range_size_0=0x2,range_low_bound_0=0,timeout_retry_num_0=0x1,dec_mode_0=1,prev_range_index_0=0

[]$ sudo mlxreg -d 1a:00.0 --reg_id 0x402c --reg_len 0x40 --set "0x4.0:1=1,0x4.28:3=1,0x10.0:16=4,0x10.22:2=1,0x10.24:3=0,0x10.28:3=1,0x10.31:1=1,0x14.0:8=2,0x14.8:8=0,0x18.0:8=2,0x18.8:8=0,0x18.16:10=1,0x18.26:2=1"
You are about to send access register id: 0x402c with the following data:
Address	| Data
=======================
0x00000000 | 0x1800065f
0x00000004 | 0x10000005
0x00000008 | 0x41000fa0
0x0000000c | 0x00000000
0x00000010 | 0x90400004
0x00000014 | 0x00000002
0x00000018 | 0x04010002
0x0000001c | 0x00000000
0x00000020 | 0x00000000
0x00000024 | 0x00000000
0x00000028 | 0x00000000
0x0000002c | 0x00000000
0x00000030 | 0x00000000
0x00000034 | 0x00000000
0x00000038 | 0x00000000
0x0000003c | 0x00000000
=======================
 
 Do you want to continue ? (y/n) [n] : y
 Sending access register...
[]$ sudo mlxreg -d 1a:00.0 --yes --reg_name ROCE_ACCL --get
Sending access register...
 
Field Name                                 	| Data	
============================================================
roce_adp_retrans_field_select              	| 0x00000001
roce_tx_window_field_select                	| 0x00000001
roce_slow_restart_field_select             	| 0x00000001
roce_slow_restart_idle_field_select        	| 0x00000001
min_ack_timeout_limit_disabled_field_select	| 0x00000001
adaptive_routing_forced_en_field_select    	| 0x00000000
selective_repeat_forced_en_field_select    	| 0x00000001
dc_half_handshake_en_field_select          	| 0x00000000
cc_per_plane_en_field_select               	| 0x00000000
ack_dscp_force_field_select                	| 0x00000001
cc_burst_size_select                       	| 0x00000001
ps_metadata_reg_id_select                  	| 0x00000000
ifa2_turn_around_select                    	| 0x00000001
adp_retx_profile_select                    	| 0x00000001
roce_adp_retrans_en                        	| 0x00000001
roce_tx_window_en                          	| 0x00000000
roce_slow_restart_en                       	| 0x00000001
roce_slow_restart_idle_en                  	| 0x00000000
min_ack_timeout_limit_disabled             	| 0x00000000
adaptive_routing_forced_en                 	| 0x00000000
selective_repeat_forced_en                 	| 0x00000000
dc_half_handshake_en                       	| 0x00000000
cc_per_plane_en                            	| 0x00000000
ack_dscp_force                             	| 0x00000000
ack_dscp                                   	| 0x00000000
ps_metadata_reg_id                         	| 0x00000000
cc_burst_size                              	| 0x00000000
Ifa2_turn_around_en                        	| 0x00000000
adp_retx_profile_id                        	| 0x00000001
adp_retx_base_timeout_min                  	| 0x00000fa0
adp_retx_profile_max_id                    	| 0x00000001
adp_retx_profile_max_range_num             	| 0x00000004
time_base                                  	| 0x00000004
time_unit                                  	| 0x00000001
start_range_index                          	| 0x00000000
range_num                                  	| 0x00000001
qp_total_timeout                           	| 0x00000001
timeout_init_range_size                    	| 0x00000002
timeout_init_low_bound                     	| 0x00000000
retx_total_timeout                         	| 0x00000000
range_size_0                               	| 0x00000002
range_low_bound_0                          	| 0x00000000
timeout_retry_num_0                        	| 0x00000001
dec_mode_0                                 	| 0x00000001
prev_range_index_0                         	| 0x00000000
range_size_1                               	| 0x00000000
range_low_bound_1                          	| 0x00000000
timeout_retry_num_1                        	| 0x00000000
dec_mode_1                                 	| 0x00000000
prev_range_index_1                         	| 0x00000000
range_size_2                               	| 0x00000000
range_low_bound_2                          	| 0x00000000
timeout_retry_num_2                        	| 0x00000000
dec_mode_2                                 	| 0x00000000
prev_range_index_2                         	| 0x00000000
range_size_3                               	| 0x00000000
range_low_bound_3                          	| 0x00000000
timeout_retry_num_3                        	| 0x00000000
dec_mode_3                                 	| 0x00000000
prev_range_index_3                         	| 0x00000000
============================================================



Last updated: