Skip to content

Commit

Permalink
IB/ipath: Don't put QP in timeout queue if waiting to send
Browse files Browse the repository at this point in the history
This fixes a problem which causes too many RC timeouts and
retransmits.

Signed-off-by: Ralph Campbell <ralph.campbell@qlogic.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
  • Loading branch information
Ralph Campbell authored and Roland Dreier committed May 1, 2007
1 parent 35ff032 commit c3af664
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 7 deletions.
7 changes: 1 addition & 6 deletions drivers/infiniband/hw/ipath/ipath_rc.c
Original file line number Diff line number Diff line change
Expand Up @@ -228,18 +228,13 @@ int ipath_make_rc_req(struct ipath_qp *qp,
goto done;

if (!(ib_ipath_state_ops[qp->state] & IPATH_PROCESS_SEND_OK) ||
qp->s_rnr_timeout)
qp->s_rnr_timeout || qp->s_wait_credit)
goto bail;

/* Limit the number of packets sent without an ACK. */
if (ipath_cmp24(qp->s_psn, qp->s_last_psn + IPATH_PSN_CREDIT) > 0) {
qp->s_wait_credit = 1;
dev->n_rc_stalls++;
spin_lock(&dev->pending_lock);
if (list_empty(&qp->timerwait))
list_add_tail(&qp->timerwait,
&dev->pending[dev->pending_index]);
spin_unlock(&dev->pending_lock);
goto bail;
}

Expand Down
2 changes: 1 addition & 1 deletion drivers/infiniband/hw/ipath/ipath_verbs.h
Original file line number Diff line number Diff line change
Expand Up @@ -422,7 +422,7 @@ struct ipath_qp {
#define IPATH_S_RDMAR_PENDING 0x04
#define IPATH_S_ACK_PENDING 0x08

#define IPATH_PSN_CREDIT 2048
#define IPATH_PSN_CREDIT 512

/*
* Since struct ipath_swqe is not a fixed size, we can't simply index into
Expand Down

0 comments on commit c3af664

Please sign in to comment.