• Suresh Reddy's avatar
    be2net: gather debug info and reset adapter (only for Lancer) on a tx-timeout · c1b3bdb2
    Suresh Reddy authored
    This patch handles a TX-timeout as follows:
    
    1) This patch gathers and prints the following info that can
       help in diagnosing the cause of a TX-timeout.
       a) TX queue and completion queue entries.
       b) SKB and TCP/UDP header details.
    
    2) For Lancer NICs (TX-timeout recovery is not supported for
       BE3/Skyhawk-R NICs), it recovers from the TX timeout as follows:
    
       a) On a TX-timeout, driver sets the PHYSDEV_CONTROL_FW_RESET_MASK
          bit in the PHYSDEV_CONTROL register. Lancer firmware goes into
          an error state and indicates this back to the driver via a bit
          in a doorbell register.
       b) Driver detects this and calls be_err_recover(). DMA is disabled,
          all pending TX skbs are unmapped and freed (be_close()). All rings
          are destroyed (be_clear()).
       c) The driver waits for the FW to re-initialize and re-creates all
          rings along with other data structs (be_resume())
    Signed-off-by: default avatarSuresh Reddy <suresh.reddy@broadcom.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    c1b3bdb2
be_main.c 164 KB