• Jack Morgenstein's avatar
    mlx4_core: Fix setting VL_cap in mlx4_SET_PORT wrapper flow · edc4a67e
    Jack Morgenstein authored
    Commit 096335b3 ("mlx4_core: Allow dynamic MTU configuration for
    IB ports") modifies the port VL setting.  This exposes a bug in
    mlx4_common_set_port(), where the VL cap value passed in (inside the
    command mailbox) is incorrectly zeroed-out:
    
    mlx4_SET_PORT modifies the VL_cap field (byte 3 of the mailbox).
    Since the SET_PORT command is paravirtualized on the master as well as
    on the slaves, mlx4_SET_PORT_wrapper() is invoked on the master.  This
    calls mlx4_common_set_port() where mailbox byte 3 gets overwritten by
    code which should only set a single bit in that byte (for the reset
    qkey counter flag) -- but instead overwrites the entire byte.
    
    The result is that when running in SR-IOV mode, the VL_cap will be set
    to zero -- fix this.
    Signed-off-by: default avatarJack Morgenstein <jackm@dev.mellanox.co.il>
    Signed-off-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
    Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
    edc4a67e
port.c 24.7 KB