@@ -460,6 +460,7 @@ struct kib_rej {
#define IBLND_REJECT_RDMA_FRAGS 6
/* peer_ni's msg queue size doesn't match mine */
#define IBLND_REJECT_MSG_QUEUE_SIZE 7
+#define IBLND_REJECT_INVALID_SRV_ID 8
/***********************************************************************/
@@ -2611,6 +2611,10 @@ static int kiblnd_resolve_addr(struct rdma_cm_id *cmid,
case IBLND_REJECT_CONN_UNCOMPAT:
reason = "version negotiation";
break;
+
+ case IBLND_REJECT_INVALID_SRV_ID:
+ reason = "invalid service id";
+ break;
}
conn->ibc_reconnect = 1;
@@ -2648,6 +2652,8 @@ static int kiblnd_resolve_addr(struct rdma_cm_id *cmid,
break;
case IB_CM_REJ_INVALID_SERVICE_ID:
+ kiblnd_check_reconnect(conn, IBLND_MSG_VERSION, 0,
+ IBLND_REJECT_INVALID_SRV_ID, NULL);
CNETERR("%s rejected: no listener at %d\n",
libcfs_nid2str(peer_ni->ibp_nid),
*kiblnd_tunables.kib_service);