diff options
| author | Mike Marciniszyn <mike.marciniszyn@qlogic.com> | 2011-02-16 15:48:25 +0000 | 
|---|---|---|
| committer | Roland Dreier <roland@purestorage.com> | 2011-02-17 14:04:50 -0800 | 
| commit | c0af2c057d7ce3f0b260f9380d187a82bb5cab28 (patch) | |
| tree | 30b59bf396145825d5b005dcc8f6fa1abf5c2b1f /Documentation/filesystems/configfs/configfs_example_explicit.c | |
| parent | 414ed90cee32486c50f91b28990443e0dc21c868 (diff) | |
IB/qib: Prevent double completions after a timeout or RNR error
There is a double completion associated with error handling for RC QPs.
The sequence is:
 - The do_rc_ack() routine fields an RNR nack and there are 0
   rnr_retries configured on the QP.
 - qib_error_qp() stops the pending timer
 - qib_rc_send_complete() is called from sdma_complete()
 - qib_rc_send_complete() starts the timer because the msb of the psn
   just completed says an ack is needed.
 - a bunch of flushes occur as ipoib posts WQEs to an error'ed QP
 - rc_timeout() calls qib_restart_rc()
 - qib_restart_rc() calls qib_send_complete() with a
   IB_WC_RETRY_EXC_ERR on a wqe that has already been completed in the
   past
The fix avoids starting the timer since another packet will never
arrive.
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@qlogic.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'Documentation/filesystems/configfs/configfs_example_explicit.c')
0 files changed, 0 insertions, 0 deletions
