usr/src/uts/common/rpc/rpcib.c
changeset 9348 7155ecb17858
parent 9146 2141d3ecba62
child 9723 266737095e67
--- a/usr/src/uts/common/rpc/rpcib.c	Fri Apr 10 21:47:04 2009 -0700
+++ b/usr/src/uts/common/rpc/rpcib.c	Fri Apr 10 22:57:35 2009 -0700
@@ -82,7 +82,8 @@
 #include <nfs/nfs.h>
 #include <sys/atomic.h>
 
-#define	NFS_RDMA_PORT	2050
+#define	NFS_RDMA_PORT	20049
+
 
 /*
  * Convenience structures for connection management
@@ -217,6 +218,7 @@
 static bool_t	stats_enabled = FALSE;
 
 static uint64_t max_unsignaled_rws = 5;
+int nfs_rdma_port = NFS_RDMA_PORT;
 
 /*
  * rib_stat: private data pointer used when registering
@@ -1662,7 +1664,7 @@
 		break;
 	}
 
-	ipcm_info.src_port = NFS_RDMA_PORT;
+	ipcm_info.src_port = (in_port_t)nfs_rdma_port;
 
 	ibt_status = ibt_format_ip_private_data(&ipcm_info,
 	    IBT_IP_HDR_PRIV_DATA_SZ, cmp_ip_pvt);
@@ -1685,8 +1687,9 @@
 	qp_attr.rc_control = IBT_CEP_RDMA_RD | IBT_CEP_RDMA_WR;
 	qp_attr.rc_flags = IBT_WR_SIGNALED;
 
-	rptp->path.pi_sid = ibt_get_ip_sid(IPPROTO_TCP, NFS_RDMA_PORT);
+	rptp->path.pi_sid = ibt_get_ip_sid(IPPROTO_TCP, nfs_rdma_port);
 	chan_args.oc_path = &rptp->path;
+
 	chan_args.oc_cm_handler = rib_clnt_cm_handler;
 	chan_args.oc_cm_clnt_private = (void *)rib_stat;
 	chan_args.oc_rdma_ra_out = 4;
@@ -2015,9 +2018,11 @@
 	if (wd->status != (uint_t)SEND_WAIT) {
 		/* got send completion */
 		if (wd->status != RDMA_SUCCESS) {
-			error = wd->status;
-		if (wd->status != RDMA_CONNLOST)
-			error = RDMA_FAILED;
+			if (wd->status != RDMA_CONNLOST) {
+				error = RDMA_FAILED;
+			} else {
+				error = RDMA_CONNLOST;
+			}
 		}
 		for (i = 0; i < wd->nsbufs; i++) {
 			rib_rbuf_free(qptoc(qp), SEND_BUFFER,
@@ -2145,9 +2150,7 @@
 			rib_rbuf_free(conn, SEND_BUFFER,
 			    (void *)(uintptr_t)wdesc->sbufaddr[i]);
 		}
-
 		(void) rib_free_sendwait(wdesc);
-
 		return (RDMA_CONNLOST);
 	}
 	mutex_exit(&conn->c_lock);
@@ -2529,7 +2532,6 @@
 		return (RDMA_FAILED);
 	}
 
-
 	while ((cl != NULL)) {
 		if (cl->c_len > 0) {
 			bzero(&tx_wr, sizeof (ibt_send_wr_t));
@@ -3004,7 +3006,7 @@
 	sdesc.sd_handler = rib_srv_cm_handler;
 	sdesc.sd_flags = 0;
 	ibt_status = ibt_register_service(hca->ibt_clnt_hdl,
-	    &sdesc, ibt_get_ip_sid(IPPROTO_TCP, NFS_RDMA_PORT),
+	    &sdesc, ibt_get_ip_sid(IPPROTO_TCP, nfs_rdma_port),
 	    1, &srv_hdl, &srv_id);
 
 	for (i = 0; i < num_ports; i++) {