From 1749b1a0a8219f484ea8a5daa3d9f541dde3d620 Mon Sep 17 00:00:00 2001 From: Roland Dreier Date: Sat, 7 Jan 2006 00:50:39 +0000 Subject: Fill vendor_err field for completion with error Signed-off-by: Roland Dreier --- src/cq.c | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/src/cq.c b/src/cq.c index f159382..167b173 100644 --- a/src/cq.c +++ b/src/cq.c @@ -112,24 +112,15 @@ struct mthca_err_cqe { uint32_t my_qpn; uint32_t reserved1[3]; uint8_t syndrome; - uint8_t reserved2; + uint8_t vendor_err; uint16_t db_cnt; - uint32_t reserved3; + uint32_t reserved2; uint32_t wqe; uint8_t opcode; - uint8_t reserved4[2]; + uint8_t reserved3[2]; uint8_t owner; }; -static inline int is_recv_cqe(struct mthca_cqe * cqe) -{ - if ((cqe->opcode & MTHCA_ERROR_CQE_OPCODE_MASK) == - MTHCA_ERROR_CQE_OPCODE_MASK) - return !(cqe->opcode & 0x01); - else - return !(cqe->is_send & 0x80); -} - static inline struct mthca_cqe *get_cqe(struct mthca_cq *cq, int entry) { return cq->buf + entry * MTHCA_CQ_ENTRY_SIZE; @@ -197,8 +188,8 @@ static int handle_error_cqe(struct mthca_cq *cq, } /* - * For completions in error, only work request ID, status (and - * freed resource count for RD) have to be set. + * For completions in error, only work request ID, status, vendor error + * (and freed resource count for RD) have to be set. */ switch (cqe->syndrome) { case SYNDROME_LOCAL_LENGTH_ERR: @@ -260,6 +251,8 @@ static int handle_error_cqe(struct mthca_cq *cq, break; } + wc->vendor_err = cqe->vendor_err; + /* * Mem-free HCAs always generate one CQE per WQE, even in the * error case, so we don't have to check the doorbell count, etc. @@ -530,6 +523,15 @@ void mthca_arbel_cq_event(struct ibv_cq *cq) to_mcq(cq)->arm_sn++; } +static inline int is_recv_cqe(struct mthca_cqe *cqe) +{ + if ((cqe->opcode & MTHCA_ERROR_CQE_OPCODE_MASK) == + MTHCA_ERROR_CQE_OPCODE_MASK) + return !(cqe->opcode & 0x01); + else + return !(cqe->is_send & 0x80); +} + void mthca_cq_clean(struct mthca_cq *cq, uint32_t qpn, struct mthca_srq *srq) { struct mthca_cqe *cqe; -- cgit 1.2.3-korg