• Eran Ben Elisha's avatar
    net/mlx5e: Fix port buffers cell size value · 88b3d5c9
    Eran Ben Elisha authored
    Device unit for port buffers size, xoff_threshold and xon_threshold is
    cells. Fix a bug in driver where cell unit size was hard-coded to
    128 bytes. This hard-coded value is buggy, as it is wrong for some hardware
    versions.
    
    Driver to read cell size from SBCAM register and translate bytes to cell
    units accordingly.
    
    In order to fix the bug, this patch exposes SBCAM (Shared buffer
    capabilities mask) layout and defines.
    
    If SBCAM.cap_cell_size is valid, use it for all bytes to cells
    calculations. If not valid, fallback to 128.
    
    Cell size do not change on the fly per device. Instead of issuing SBCAM
    access reg command every time such translation is needed, cache it in
    mlx5e_dcbx as part of mlx5e_dcbnl_initialize(). Pass dcbx.port_buff_cell_sz
    as a param to every function that needs bytes to cells translation.
    
    While fixing the bug, move MLX5E_BUFFER_CELL_SHIFT macro to
    en_dcbnl.c, as it is only used by that file.
    
    Fixes: 0696d608 ("net/mlx5e: Receive buffer configuration")
    Signed-off-by: default avatarEran Ben Elisha <eranbe@mellanox.com>
    Reviewed-by: default avatarHuy Nguyen <huyn@mellanox.com>
    Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
    88b3d5c9
dcbnl.h 1.8 KB