RDMA/cxgb4: Ignore read reponse type 1 CQEs
These are generated by HW in some error cases and need to be silently discarded. Signed-off-by: Steve Wise <swise@opengridcomputing.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:
parent
1ce1d471ac
commit
70b9c66053
|
@ -365,8 +365,14 @@ void c4iw_flush_hw_cq(struct c4iw_cq *chp)
|
||||||
|
|
||||||
if (CQE_OPCODE(hw_cqe) == FW_RI_READ_RESP) {
|
if (CQE_OPCODE(hw_cqe) == FW_RI_READ_RESP) {
|
||||||
|
|
||||||
/*
|
/* If we have reached here because of async
|
||||||
* drop peer2peer RTR reads.
|
* event or other error, and have egress error
|
||||||
|
* then drop
|
||||||
|
*/
|
||||||
|
if (CQE_TYPE(hw_cqe) == 1)
|
||||||
|
goto next_cqe;
|
||||||
|
|
||||||
|
/* drop peer2peer RTR reads.
|
||||||
*/
|
*/
|
||||||
if (CQE_WRID_STAG(hw_cqe) == 1)
|
if (CQE_WRID_STAG(hw_cqe) == 1)
|
||||||
goto next_cqe;
|
goto next_cqe;
|
||||||
|
@ -511,8 +517,18 @@ static int poll_cq(struct t4_wq *wq, struct t4_cq *cq, struct t4_cqe *cqe,
|
||||||
*/
|
*/
|
||||||
if (RQ_TYPE(hw_cqe) && (CQE_OPCODE(hw_cqe) == FW_RI_READ_RESP)) {
|
if (RQ_TYPE(hw_cqe) && (CQE_OPCODE(hw_cqe) == FW_RI_READ_RESP)) {
|
||||||
|
|
||||||
/*
|
/* If we have reached here because of async
|
||||||
* If this is an unsolicited read response, then the read
|
* event or other error, and have egress error
|
||||||
|
* then drop
|
||||||
|
*/
|
||||||
|
if (CQE_TYPE(hw_cqe) == 1) {
|
||||||
|
if (CQE_STATUS(hw_cqe))
|
||||||
|
t4_set_wq_in_error(wq);
|
||||||
|
ret = -EAGAIN;
|
||||||
|
goto skip_cqe;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If this is an unsolicited read response, then the read
|
||||||
* was generated by the kernel driver as part of peer-2-peer
|
* was generated by the kernel driver as part of peer-2-peer
|
||||||
* connection setup. So ignore the completion.
|
* connection setup. So ignore the completion.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue