DCQCN Parameters

Version 19

    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.



    WinOF MLNX_OFEDNVConfig (Firmware)DescriptionRangeDefault
    DcQcnEnablePrio0…7EnableROCE_CC_PRIO_MASKEnables RoCE Congestion Control (DCQCN) on a specific priorityEnable/Disable or 0/1Disable


    Alpha Update

    WinOF MLNX_OFEDNVConfig (Firmware)DescriptionRangeDefault

    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)*α.

    DcQcnDceAlphaUpdatePerioddce_tcp_rttDCE_TCP_RTTSee 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.




    Rate Decrease


    WinOF MLNX_OFEDNVConfig (Firmware)DescriptionRangeDefault
    DcQcnRateToSetOnFirstCnprate_to_set_on_first_cnpRATE_TO_SET_ON_FIRST_CNPRates (current, target) on first CNP (0 – 85% of line rate).0, 1…line rate [Mbit/S]


    DcQcnMinDecFacrpg_min_dec_facRPG_MIN_DEC_FACThis 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
    DcQcnMinRaterpg_min_rateRPG_MIN_RATEThis parameter defines the minimal rate limit of the QP.1…line rate [Mbit/S]1
    DcQcnAlphaToRateShiftrpg_gdRPG_GDThe 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..1111
    DcQcnRateReduceMonitorPeriodrate_reduce_monitor_periodRATE_REDUCE_MONITOR_PERIODThe time period between rate reductions.1…UINT32 [µS]4



    Rate Increase

    WinOF MLNX_OFEDNVConfig (Firmware)DescriptionRangeDefault
    DcQcnClampTgtRateclamp_tgt_rateCLAMP_TGT_RATEIf 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/DisableDisabled
    DcQcnClampTgtRateAfterTimeIncclamp_tgt_rate_after_time_incCLAMP_TGT_RATE_AFTER_TIMEWhen 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/DisableEnable
    DcQcnTimeResetrpg_time_resetRPG_TIME_RESETThe time period between rate increase events.1…131071 [µS]300
    DcQcnByteResetrpg_byte_resetRPG_BYTE_RESETThe 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.

    DcQcnAiRaterpg_ai_rateRPG_AI_RATEThe rate increase value in the Active Increase phase.1…line rate [Mbit/S]5
    DcQcnHaiRaterpg_hai_rateRPG_HAI_RATEThe rate increase value in the Active Increase phase.1…line rate [Mbit/S]50




    Notification Point


    WinOF MLNX_OFEDNVConfig (Firmware)DescriptionRangeDefault
    DcQcnCnpDscpcnp_dscpCNP_DSCPThis parameter sets the DSCP  value for CNPs.0...6348

    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/AIf 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/10