Sample Usage
The following examples show how to review and update the Adaptive Retransmission (ADP) profile using both:
The standard
ROCE_ACCL
registerThe 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
============================================================