• Tomer Tayar's avatar
    qed: fix handling of concurrent ramrods. · 76a9a364
    Tomer Tayar authored
    Concurrent non-blocking slowpath ramrods can be completed
    out-of-order on the completion chain. Recycling completed elements,
    while previously sent elements are still completion pending,
    can lead to overriding of active elements on the chain. Furthermore,
    sending pending slowpath ramrods currently lacks the update of the
    chain element physical pointer.
    
    This patch:
    * Ensures that ramrods are sent to the FW with
      consecutive echo values.
    * Handles out-of-order completions by freeing only first
      successive completed entries.
    * Updates the chain element physical pointer when copying
      a pending element into a free element for sending.
    Signed-off-by: default avatarTomer Tayar <Tomer.Tayar@qlogic.com>
    Signed-off-by: default avatarManish Chopra <manish.chopra@qlogic.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    76a9a364
qed_spq.c 22 KB