• David Thompson's avatar
    mlxbf_gige: clear valid_polarity upon open · ee8a9600
    David Thompson authored
    The network interface managed by the mlxbf_gige driver can
    get into a problem state where traffic does not flow.
    In this state, the interface will be up and enabled, but
    will stop processing received packets.  This problem state
    will happen if three specific conditions occur:
        1) driver has received more than (N * RxRingSize) packets but
           less than (N+1 * RxRingSize) packets, where N is an odd number
           Note: the command "ethtool -g <interface>" will display the
           current receive ring size, which currently defaults to 128
        2) the driver's interface was disabled via "ifconfig oob_net0 down"
           during the window described in #1.
        3) the driver's interface is re-enabled via "ifconfig oob_net0 up"
    
    This patch ensures that the driver's "valid_polarity" field is
    cleared during the open() method so that it always matches the
    receive polarity used by hardware.  Without this fix, the driver
    needs to be unloaded and reloaded to correct this problem state.
    
    Fixes: f92e1869 ("Add Mellanox BlueField Gigabit Ethernet driver")
    Reviewed-by: default avatarAsmaa Mnebhi <asmaa@nvidia.com>
    Signed-off-by: default avatarDavid Thompson <davthompson@nvidia.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    ee8a9600
mlxbf_gige_main.c 11.7 KB