This post lists the DCQCN parameters.
For more information about DCQCN, see Understanding DC-QCN Algorithm for RoCE Congestion Control .
The following parameters are supported by ConnectX-4 and beyond adapters.
|DcQcnEnablePrio0…7||Enable||ROCE_CC_PRIO_MASK||Enables RoCE Congestion Control (DCQCN) on a specific priority||Enable/Disable or 0/1||Disable|
These two parameters maintain alpha (DcQcnDceAlphaG, DcQcnDceAlphaUpdatePeriod).
If CNP is received during DcQcnDceAlphaUpdatePeriod, alpha is increased according to following equation: α=(DcQcnDecAlphaG/1024)*α + (1024-DcQcnDecAlphaG)
If no CNP is received during DcQcnDceAlphaUpdatePeriod, alpha is decreased according to following equation: α=(DcQcnDecAlphaG/1024)*α.
|DcQcnDceAlphaUpdatePeriod||dce_tcp_rtt||DCE_TCP_RTT||See above.||1…131071 [µS]||1|
This parameter sets the initial value of alpha that should be used when receiving the first CNP for a flow (expressed in a fixed-point fraction of 2^10).
The value of alpha is updated once every DcQcnDceAlphaUpdatePeriod, regardless of the reception of a CNP. If a CNP is received during this time frame, the alpha value will increase. If no CNP is received, the alpha value will decrease.
|DcQcnRateToSetOnFirstCnp||rate_to_set_on_first_cnp||RATE_TO_SET_ON_FIRST_CNP||Rates (current, target) on first CNP (0 – 85% of line rate).||0, 1…line rate [Mbit/S]|
|DcQcnMinDecFac||rpg_min_dec_fac||RPG_MIN_DEC_FAC||This parameter defines the maximal ratio of rate decrease in a single event. For example, setting min_dec_fac= 25 will bound a reduction of current_rate to values above 25%*current_rate (new_cur_rate >= 25%*old_cur_rate) . Setting min_dec_fac= 100 will prevent rate reductions at all. Note that additional parameter that bounds rate reduction ratio is rpg_gd, so the bound of the rate reduction is new_cur_rate >= max(min_dec_fac% * old_cur_rate, (1023 / 2^rpg_gd) *old_cur_rate.||0…100 [%]||50|
|DcQcnMinRate||rpg_min_rate||RPG_MIN_RATE||This parameter defines the minimal rate limit of the QP.||1…line rate [Mbit/S]||1|
|DcQcnAlphaToRateShift||rpg_gd||RPG_GD||The coefficient between alpha and rate reduction factor (2^value). Since alpha is in range of 0...1023, a value of 11 indicates that the rate is reduced by the value of alpha/2048 (up to 1/2 of the previous rate).||1..11||11|
|DcQcnRateReduceMonitorPeriod||rate_reduce_monitor_period||RATE_REDUCE_MONITOR_PERIOD||The time period between rate reductions.||1…UINT32 [µS]||4|
|DcQcnClampTgtRate||clamp_tgt_rate||CLAMP_TGT_RATE||If set, whenever a CNP is processed, the target rate is updated to the current rate (contrary to conventional QCN in which CNP is ignored if no rate increase event happened since last CNP arrival).||Enable/Disable||Disabled|
|DcQcnClampTgtRateAfterTimeInc||clamp_tgt_rate_after_time_inc||CLAMP_TGT_RATE_AFTER_TIME||When receiving a CNP, the target rate should be updated if the transmission rate was increased due to the timer, and not only due to the byte counter (contrary to conventional QCN in which CNP is ignored if no rate increase due to byte reset event happened since last CNP arrival).||Enable/Disable||Enable|
|DcQcnTimeReset||rpg_time_reset||RPG_TIME_RESET||The time period between rate increase events.||1…131071 [µS]||300|
|DcQcnByteReset||rpg_byte_reset||RPG_BYTE_RESET||The sent bytes counter between rate increase events.||1…32767 [64 Bytes]||32767|
The threshold of rate increase events for moving to next rate increase phase.
|DcQcnAiRate||rpg_ai_rate||RPG_AI_RATE||The rate increase value in the Active Increase phase.||1…line rate [Mbit/S]||5|
|DcQcnHaiRate||rpg_hai_rate||RPG_HAI_RATE||The rate increase value in the Active Increase phase.||1…line rate [Mbit/S]||50|
|DcQcnCnpDscp||cnp_dscp||CNP_DSCP||This parameter sets the DSCP value for CNPs.||0...63||48|
This parameter sets the PCP value for CNPs.
Set DcQcnCnpPrioMode to '0' in order to use this priority value.
Not Required. This parameter is set automatically if value of of cnp_dscp and cnp_802p_prio is set.
|N/A||If this parameter is set to '0', then use the configured priority for CNPs. Otherwise, the priority value of CNPs is taken from received data packets.||0/1||0|