• Ido Schimmel's avatar
    mlxsw: spectrum: Correctly configure headroom size · ff6551ec
    Ido Schimmel authored
    When packets ingress the switch they are assigned a switch priority and
    directed to the corresponding priority group (PG) buffer in the port's
    headroom buffer.
    
    Since we now map all switch priorities to priority group 0 (PG0) by
    default, there is no need to allocate the other priority groups during
    initialization. The only exception is PG9, which is used for control
    traffic.
    
    At minimum, the PG should be able to store the currently classified
    packet (pipeline latency isn't 0) and also the packets arriving during
    the classification time. However, an incoming packet will not be
    buffered if there is no available MTU-sized buffer space for storing it.
    
    The buffer needed to accommodate for pipeline latency is variable and
    needs to take into account both the current link speed and current
    latency of the pipeline, which is time-dependent. Testing showed that
    setting the PG's size to twice the current MTU is optimal.
    
    Since PG9 is used strictly for control packets and not subject to flow
    control, we are not going to resize it according to user configuration,
    so we simply set it according to worst case scenario, which is twice the
    maximum MTU.
    
    In any case, later patches in the series will allow a user to direct
    lossless flows to other PGs than PG0 and set their size to accommodate
    for round-trip propagation delay.
    
    The above change also requires us to resize the PG buffer whenever the
    port's MTU is changed.
    Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
    Signed-off-by: default avatarJiri Pirko <jiri@mellanox.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    ff6551ec
spectrum_buffers.c 13 KB