• Felix Manlunas's avatar
    liquidio: improve soft command handling · c9aec052
    Felix Manlunas authored
    1. Set LIO_SC_MAX_TMO_MS as the maximum timeout value for a soft command
       (sc).  All sc's use this value as a hard timeout value. Add expiry_time
       in struct octeon_soft_command to keep the hard timeout value. The field
       wait_time and timeout in struct octeon_soft_command will be obsoleted in
       the last patch of this patch series.
    2. Add processing a synchronous sc in sc response thread
       lio_process_ordered_list. The memory allocated for a synchronous sc will
       be freed by lio_process_ordered_list() to the sc pool.
    3. Add two response lists for lio_process_ordered_list to process the
       storage allocated for sc's:
       OCTEON_DONE_SC_LIST response list keeps all sc's which will be freed to
       the pool after their requestors have finished processing the responses.
       OCTEON_ZOMBIE_SC_LIST response list keeps all sc's which have got
       LIO_SC_MAX_TMO_MS timeout.
       When an sc gets a hard timeout, lio_process_order_list() will recheck
       its status 1 ms later. If the status has not updated by the firmware at
       that time, the sc will be removed from OCTEON_DONE_SC_LIST response list
       to OCTEON_ZOMBIE_SC_LIST response list. The sc's in the
       OCTEON_ZOMBIE_SC_LIST response list will be freed when the driver is
       unloaded.
    Signed-off-by: default avatarWeilin Chang <weilin.chang@cavium.com>
    Signed-off-by: default avatarFelix Manlunas <felix.manlunas@cavium.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    c9aec052
octeon_nic.c 5.66 KB