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)

Note

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

Copy
Copied!
            

[]$ 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 ============================================================

© Copyright 2025, NVIDIA. Last updated on Aug 18, 2025.