if (!memcmp(&addr, &ssk->id->route.addr.src_addr, sizeof addr))
return 0;
- rc = rdma_bind_addr(ssk->id, (struct sockaddr *)&addr);
+ rc = ssk->last_bind_err = rdma_bind_addr(ssk->id, (struct sockaddr *)&addr);
if (rc) {
sdp_dbg(sk, "Destroying qp\n");
rdma_destroy_id(ssk->id);
init_timer(&ssk->nagle_timer);
init_timer(&sk->sk_timer);
+ ssk->last_bind_err = 0;
+
return 0;
}
case SDP_ZCOPY_THRESH:
val = ssk->bzcopy_thresh ? ssk->bzcopy_thresh : sdp_bzcopy_thresh;
break;
+ case SDP_LAST_BIND_ERR:
+ val = ssk->last_bind_err;
+ break;
default:
return -ENOPROTOOPT;
}
#define SDP_ZCOPY_THRESH 80
#endif
+#ifndef SDP_LAST_BIND_ERR
+#define SDP_LAST_BIND_ERR 81
+#endif
+
/* TODO: AF_INET6_SDP ? */
#endif