/* Called by transport drivers to initialize the transport independent portion of the transport instance.  */
void svc_xprt_init(struct svc_xprt_class *xcl, struct svc_xprt *xprt, struct svc_serv *serv)
/* Called by transport drivers to initialize the transport independent portion of the transport instance.  */
void svc_xprt_init(struct svc_xprt_class *xcl, struct svc_xprt *xprt, struct svc_serv *serv)
{
	memset(xprt, 0, sizeof(*xprt));
	xprt->xpt_class = xcl;
	xprt->xpt_ops = xcl->xcl_ops;
	kref_init(&xprt->xpt_ref);
	xprt->xpt_server = serv;
	INIT_LIST_HEAD(&xprt->xpt_list);
	INIT_LIST_HEAD(&xprt->xpt_ready);
	INIT_LIST_HEAD(&xprt->xpt_deferred);
	mutex_init(&xprt->xpt_mutex);
	spin_lock_init(&xprt->xpt_lock);
	set_bit(XPT_BUSY, &xprt->xpt_flags);
	rpc_init_wait_queue(&xprt->xpt_bc_pending, "xpt_bc_pending");
}