c0af2c057d
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> |
||
---|---|---|
.. | ||
Kconfig | ||
Makefile | ||
qib_6120_regs.h | ||
qib_7220_regs.h | ||
qib_7220.h | ||
qib_7322_regs.h | ||
qib_common.h | ||
qib_cq.c | ||
qib_diag.c | ||
qib_dma.c | ||
qib_driver.c | ||
qib_eeprom.c | ||
qib_file_ops.c | ||
qib_fs.c | ||
qib_iba6120.c | ||
qib_iba7220.c | ||
qib_iba7322.c | ||
qib_init.c | ||
qib_intr.c | ||
qib_keys.c | ||
qib_mad.c | ||
qib_mad.h | ||
qib_mmap.c | ||
qib_mr.c | ||
qib_pcie.c | ||
qib_pio_copy.c | ||
qib_qp.c | ||
qib_qsfp.c | ||
qib_qsfp.h | ||
qib_rc.c | ||
qib_ruc.c | ||
qib_sd7220.c | ||
qib_sdma.c | ||
qib_srq.c | ||
qib_sysfs.c | ||
qib_twsi.c | ||
qib_tx.c | ||
qib_uc.c | ||
qib_ud.c | ||
qib_user_pages.c | ||
qib_user_sdma.c | ||
qib_user_sdma.h | ||
qib_verbs_mcast.c | ||
qib_verbs.c | ||
qib_verbs.h | ||
qib_wc_ppc64.c | ||
qib_wc_x86_64.c | ||
qib.h |