]> git.baikalelectronics.ru Git - kernel.git/commitdiff
RDMA/irdma: Report correct WC error when there are MW bind errors
authorSindhu Devale <sindhu.devale@intel.com>
Thu, 16 Sep 2021 19:12:22 +0000 (14:12 -0500)
committerJason Gunthorpe <jgg@nvidia.com>
Mon, 20 Sep 2021 17:13:23 +0000 (14:13 -0300)
Report the correct WC error when MW bind error related asynchronous events
are generated by HW.

Fixes: ec118db05224 ("RDMA/irdma: Implement device supported verb APIs")
Link: https://lore.kernel.org/r/20210916191222.824-5-shiraz.saleem@intel.com
Signed-off-by: Sindhu Devale <sindhu.devale@intel.com>
Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/hw/irdma/hw.c
drivers/infiniband/hw/irdma/user.h
drivers/infiniband/hw/irdma/verbs.c

index cb9a8e24e3b7b781576bbc236373712deea5d2ea..7de525a5ccf8c9a6d72f5c92d6fe05098325bb9b 100644 (file)
@@ -179,6 +179,11 @@ static void irdma_set_flush_fields(struct irdma_sc_qp *qp,
        case IRDMA_AE_LLP_TOO_MANY_RETRIES:
                qp->flush_code = FLUSH_RETRY_EXC_ERR;
                break;
+       case IRDMA_AE_AMP_MWBIND_INVALID_RIGHTS:
+       case IRDMA_AE_AMP_MWBIND_BIND_DISABLED:
+       case IRDMA_AE_AMP_MWBIND_INVALID_BOUNDS:
+               qp->flush_code = FLUSH_MW_BIND_ERR;
+               break;
        default:
                qp->flush_code = FLUSH_FATAL_ERR;
                break;
index 267102d1049d393ce5e4cc1e53837e246089a06b..3dcbb1fbf2c665585b060bb27af6f7d1099ff292 100644 (file)
@@ -103,6 +103,7 @@ enum irdma_flush_opcode {
        FLUSH_LOC_LEN_ERR,
        FLUSH_FATAL_ERR,
        FLUSH_RETRY_EXC_ERR,
+       FLUSH_MW_BIND_ERR,
 };
 
 enum irdma_cmpl_status {
index c7e129ee74d0f96e451741d9f6e6c1b3556197bf..7110ebf834f968228f0af163f4037a6927ba5180 100644 (file)
@@ -3354,6 +3354,8 @@ static enum ib_wc_status irdma_flush_err_to_ib_wc_status(enum irdma_flush_opcode
                return IB_WC_WR_FLUSH_ERR;
        case FLUSH_RETRY_EXC_ERR:
                return IB_WC_RETRY_EXC_ERR;
+       case FLUSH_MW_BIND_ERR:
+               return IB_WC_MW_BIND_ERR;
        case FLUSH_FATAL_ERR:
        default:
                return IB_WC_FATAL_ERR;