Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/iscsi/icl_soft.c
Show First 20 Lines • Show All 128 Lines • ▼ Show 20 Lines | |||||
static icl_conn_pdu_free_t icl_soft_conn_pdu_free; | static icl_conn_pdu_free_t icl_soft_conn_pdu_free; | ||||
static icl_conn_pdu_data_segment_length_t | static icl_conn_pdu_data_segment_length_t | ||||
icl_soft_conn_pdu_data_segment_length; | icl_soft_conn_pdu_data_segment_length; | ||||
static icl_conn_pdu_append_data_t icl_soft_conn_pdu_append_data; | static icl_conn_pdu_append_data_t icl_soft_conn_pdu_append_data; | ||||
static icl_conn_pdu_get_data_t icl_soft_conn_pdu_get_data; | static icl_conn_pdu_get_data_t icl_soft_conn_pdu_get_data; | ||||
static icl_conn_pdu_queue_t icl_soft_conn_pdu_queue; | static icl_conn_pdu_queue_t icl_soft_conn_pdu_queue; | ||||
static icl_conn_pdu_queue_cb_t icl_soft_conn_pdu_queue_cb; | static icl_conn_pdu_queue_cb_t icl_soft_conn_pdu_queue_cb; | ||||
static icl_conn_handoff_t icl_soft_conn_handoff; | static icl_conn_handoff_t icl_soft_conn_handoff; | ||||
static icl_conn_handoff_sock_t icl_soft_conn_handoff_sock; | |||||
static icl_conn_free_t icl_soft_conn_free; | static icl_conn_free_t icl_soft_conn_free; | ||||
static icl_conn_close_t icl_soft_conn_close; | static icl_conn_close_t icl_soft_conn_close; | ||||
static icl_conn_task_setup_t icl_soft_conn_task_setup; | static icl_conn_task_setup_t icl_soft_conn_task_setup; | ||||
static icl_conn_task_done_t icl_soft_conn_task_done; | static icl_conn_task_done_t icl_soft_conn_task_done; | ||||
static icl_conn_transfer_setup_t icl_soft_conn_transfer_setup; | static icl_conn_transfer_setup_t icl_soft_conn_transfer_setup; | ||||
static icl_conn_transfer_done_t icl_soft_conn_transfer_done; | static icl_conn_transfer_done_t icl_soft_conn_transfer_done; | ||||
#ifdef ICL_KERNEL_PROXY | #ifdef ICL_KERNEL_PROXY | ||||
static icl_conn_connect_t icl_soft_conn_connect; | static icl_conn_connect_t icl_soft_conn_connect; | ||||
#endif | #endif | ||||
static kobj_method_t icl_soft_methods[] = { | static kobj_method_t icl_soft_methods[] = { | ||||
KOBJMETHOD(icl_conn_new_pdu, icl_soft_conn_new_pdu), | KOBJMETHOD(icl_conn_new_pdu, icl_soft_conn_new_pdu), | ||||
KOBJMETHOD(icl_conn_pdu_free, icl_soft_conn_pdu_free), | KOBJMETHOD(icl_conn_pdu_free, icl_soft_conn_pdu_free), | ||||
KOBJMETHOD(icl_conn_pdu_data_segment_length, | KOBJMETHOD(icl_conn_pdu_data_segment_length, | ||||
icl_soft_conn_pdu_data_segment_length), | icl_soft_conn_pdu_data_segment_length), | ||||
KOBJMETHOD(icl_conn_pdu_append_data, icl_soft_conn_pdu_append_data), | KOBJMETHOD(icl_conn_pdu_append_data, icl_soft_conn_pdu_append_data), | ||||
KOBJMETHOD(icl_conn_pdu_get_data, icl_soft_conn_pdu_get_data), | KOBJMETHOD(icl_conn_pdu_get_data, icl_soft_conn_pdu_get_data), | ||||
KOBJMETHOD(icl_conn_pdu_queue, icl_soft_conn_pdu_queue), | KOBJMETHOD(icl_conn_pdu_queue, icl_soft_conn_pdu_queue), | ||||
KOBJMETHOD(icl_conn_pdu_queue_cb, icl_soft_conn_pdu_queue_cb), | KOBJMETHOD(icl_conn_pdu_queue_cb, icl_soft_conn_pdu_queue_cb), | ||||
KOBJMETHOD(icl_conn_handoff, icl_soft_conn_handoff), | KOBJMETHOD(icl_conn_handoff, icl_soft_conn_handoff), | ||||
KOBJMETHOD(icl_conn_handoff_sock, icl_soft_conn_handoff_sock), | |||||
KOBJMETHOD(icl_conn_free, icl_soft_conn_free), | KOBJMETHOD(icl_conn_free, icl_soft_conn_free), | ||||
KOBJMETHOD(icl_conn_close, icl_soft_conn_close), | KOBJMETHOD(icl_conn_close, icl_soft_conn_close), | ||||
KOBJMETHOD(icl_conn_task_setup, icl_soft_conn_task_setup), | KOBJMETHOD(icl_conn_task_setup, icl_soft_conn_task_setup), | ||||
KOBJMETHOD(icl_conn_task_done, icl_soft_conn_task_done), | KOBJMETHOD(icl_conn_task_done, icl_soft_conn_task_done), | ||||
KOBJMETHOD(icl_conn_transfer_setup, icl_soft_conn_transfer_setup), | KOBJMETHOD(icl_conn_transfer_setup, icl_soft_conn_transfer_setup), | ||||
KOBJMETHOD(icl_conn_transfer_done, icl_soft_conn_transfer_done), | KOBJMETHOD(icl_conn_transfer_done, icl_soft_conn_transfer_done), | ||||
#ifdef ICL_KERNEL_PROXY | #ifdef ICL_KERNEL_PROXY | ||||
KOBJMETHOD(icl_conn_connect, icl_soft_conn_connect), | KOBJMETHOD(icl_conn_connect, icl_soft_conn_connect), | ||||
▲ Show 20 Lines • Show All 1,326 Lines • ▼ Show 20 Lines | |||||
int | int | ||||
icl_soft_conn_connect(struct icl_conn *ic, int domain, int socktype, | icl_soft_conn_connect(struct icl_conn *ic, int domain, int socktype, | ||||
int protocol, struct sockaddr *from_sa, struct sockaddr *to_sa) | int protocol, struct sockaddr *from_sa, struct sockaddr *to_sa) | ||||
{ | { | ||||
return (icl_soft_proxy_connect(ic, domain, socktype, protocol, | return (icl_soft_proxy_connect(ic, domain, socktype, protocol, | ||||
from_sa, to_sa)); | from_sa, to_sa)); | ||||
} | } | ||||
#endif /* ICL_KERNEL_PROXY */ | |||||
int | int | ||||
icl_soft_handoff_sock(struct icl_conn *ic, struct socket *so) | icl_soft_conn_handoff_sock(struct icl_conn *ic, struct socket *so) | ||||
{ | { | ||||
int error; | int error; | ||||
ICL_CONN_LOCK_ASSERT_NOT(ic); | ICL_CONN_LOCK_ASSERT_NOT(ic); | ||||
if (so->so_type != SOCK_STREAM) | if (so->so_type != SOCK_STREAM) | ||||
return (EINVAL); | return (EINVAL); | ||||
ICL_CONN_LOCK(ic); | ICL_CONN_LOCK(ic); | ||||
if (ic->ic_socket != NULL) { | if (ic->ic_socket != NULL) { | ||||
ICL_CONN_UNLOCK(ic); | ICL_CONN_UNLOCK(ic); | ||||
return (EBUSY); | return (EBUSY); | ||||
} | } | ||||
ic->ic_socket = so; | ic->ic_socket = so; | ||||
ICL_CONN_UNLOCK(ic); | ICL_CONN_UNLOCK(ic); | ||||
error = icl_conn_start(ic); | error = icl_conn_start(ic); | ||||
return (error); | return (error); | ||||
} | } | ||||
#endif /* ICL_KERNEL_PROXY */ | |||||
static int | static int | ||||
icl_soft_load(void) | icl_soft_load(void) | ||||
{ | { | ||||
int error; | int error; | ||||
icl_soft_pdu_zone = uma_zcreate("icl_soft_pdu", | icl_soft_pdu_zone = uma_zcreate("icl_soft_pdu", | ||||
sizeof(struct icl_soft_pdu), NULL, NULL, NULL, NULL, | sizeof(struct icl_soft_pdu), NULL, NULL, NULL, NULL, | ||||
▲ Show 20 Lines • Show All 64 Lines • Show Last 20 Lines |