• Jacob Keller's avatar
    fm10k: stop spurious link down messages when Tx FIFO is full · 5c66d125
    Jacob Keller authored
    In fm10k_get_host_state_generic, we check the mailbox tx_read() function
    to ensure that the mailbox is still open. This function also checks to
    make sure we have space to transmit another message. Unfortunately, if
    we just recently sent a bunch of messages (such as enabling hundreds of
    VLANs on a VF) this can result in a race where the watchdog task thinks
    the link went down just because we haven't had time to process all these
    messages yet.
    
    Instead, lets just check whether the mailbox is still open. This ensures
    that we don't race with the Tx FIFO, and we only link down once the
    mailbox is not open.
    
    This is safe, because if the FIFO fills up and we're unable to send
    a message for too long, we'll end up triggering the timeout detection
    which results in a reset. Additionally, since we still check to ensure
    the mailbox state is OPEN, we'll transition to link down whenever the
    mailbox closes as well.
    Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
    Tested-by: default avatarKrishneil Singh <krishneil.k.singh@intel.com>
    Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
    5c66d125
fm10k_common.c 14.7 KB