Hi Yaniv,
Thank you for your response.
I’ve followed your suggestion and reset the BF3 with the following command:
sudo mlxconfig -d 40:00.0 -y reset
After cold rebooting the machine, I can confirm that the ROCE_ADAPTIVE_ROUTING_EN configuration has been reset to its default value (False):
sudo mlxconfig -d /dev/mst/mt41692_pciconf0 -e q | grep -i ADAPTIVE
ROCE_ADAPTIVE_ROUTING_EN False(0) False(0) False(0)
Then I set LINK_TYPE_P1andLINK_TYPE_P2 to ETH and cold reboot my machine again.
After that, I tried to enable adaptive routing using mlxreg:
root:/home/ubuntu# sudo mlxreg -d 40:00.0 --reg_name ROCE_ACCL --set "adaptive_routing_forced_en=0x1"
You are about to send access register: ROCE_ACCL with the following data:
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
ack_dscp_force_field_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 | 0x00000001
selective_repeat_forced_en | 0x00000000
dc_half_handshake_en | 0x00000000
ack_dscp_force | 0x00000000
ack_dscp | 0x00000000
============================================================
Do you want to continue ? (y/n) [n] : y
Sending access register...
root:/home/ubuntu# sudo mlxreg -d 40:00.0 --get --reg_name ROCE_ACCL
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
ack_dscp_force_field_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
ack_dscp_force | 0x00000000
ack_dscp | 0x00000000
============================================================
But I found that adaptive_routing_forced_en is still 0x00000000.
Now my BF3 is connected to a SN2700 switch. May I clarify if you mean that Adaptive Routing is offically exclusively supported with Spectrum-X solutions, and that my BF3 detects the model of the switch it’s connected to, preventing the Adaptive Routing feature from being enabled if the switch is not a Spectrum-X series.
Thanks so much for taking the time to respond.
Regards,
Xiangzhou