From owner-svn-src-all@freebsd.org Tue May 17 11:10:46 2016 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 75ACAB3F9DF; Tue, 17 May 2016 11:10:46 +0000 (UTC) (envelope-from trasz@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 2605A1529; Tue, 17 May 2016 11:10:46 +0000 (UTC) (envelope-from trasz@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u4HBAjwQ002275; Tue, 17 May 2016 11:10:45 GMT (envelope-from trasz@FreeBSD.org) Received: (from trasz@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u4HBAiDu002267; Tue, 17 May 2016 11:10:44 GMT (envelope-from trasz@FreeBSD.org) Message-Id: <201605171110.u4HBAiDu002267@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: trasz set sender to trasz@FreeBSD.org using -f From: Edward Tomasz Napierala Date: Tue, 17 May 2016 11:10:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r300044 - in head/sys: cam/ctl dev/iscsi X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 May 2016 11:10:46 -0000 Author: trasz Date: Tue May 17 11:10:44 2016 New Revision: 300044 URL: https://svnweb.freebsd.org/changeset/base/300044 Log: Add icl_conn_connect() ICL method, required for iSER. Obtained from: Mellanox Technologies (earlier version) MFC after: 1 month Sponsored by: The FreeBSD Foundation Modified: head/sys/cam/ctl/ctl_frontend_iscsi.c head/sys/dev/iscsi/icl.c head/sys/dev/iscsi/icl.h head/sys/dev/iscsi/icl_conn_if.m head/sys/dev/iscsi/icl_proxy.c head/sys/dev/iscsi/icl_soft.c head/sys/dev/iscsi/icl_wrappers.h head/sys/dev/iscsi/iscsi.c Modified: head/sys/cam/ctl/ctl_frontend_iscsi.c ============================================================================== --- head/sys/cam/ctl/ctl_frontend_iscsi.c Tue May 17 09:56:22 2016 (r300043) +++ head/sys/cam/ctl/ctl_frontend_iscsi.c Tue May 17 11:10:44 2016 (r300044) @@ -49,6 +49,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include Modified: head/sys/dev/iscsi/icl.c ============================================================================== --- head/sys/dev/iscsi/icl.c Tue May 17 09:56:22 2016 (r300043) +++ head/sys/dev/iscsi/icl.c Tue May 17 11:10:44 2016 (r300044) @@ -46,6 +46,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include Modified: head/sys/dev/iscsi/icl.h ============================================================================== --- head/sys/dev/iscsi/icl.h Tue May 17 09:56:22 2016 (r300043) +++ head/sys/dev/iscsi/icl.h Tue May 17 11:10:44 2016 (r300044) @@ -139,12 +139,6 @@ struct sockaddr; struct icl_listen; /* - * Initiator part. - */ -int icl_conn_connect(struct icl_conn *ic, bool rdma, - int domain, int socktype, int protocol, - struct sockaddr *from_sa, struct sockaddr *to_sa); -/* * Target part. */ struct icl_listen *icl_listen_new(void (*accept_cb)(struct socket *, @@ -156,9 +150,11 @@ int icl_listen_add(struct icl_listen * int icl_listen_remove(struct icl_listen *il, struct sockaddr *sa); /* - * This one is not a public API; only to be used by icl_proxy.c. + * Those two are not a public API; only to be used between icl_soft.c and icl_proxy.c. */ -int icl_conn_handoff_sock(struct icl_conn *ic, struct socket *so); - +int icl_soft_handoff_sock(struct icl_conn *ic, struct socket *so); +int icl_soft_proxy_connect(struct icl_conn *ic, int domain, + int socktype, int protocol, struct sockaddr *from_sa, + struct sockaddr *to_sa); #endif /* ICL_KERNEL_PROXY */ #endif /* !ICL_H */ Modified: head/sys/dev/iscsi/icl_conn_if.m ============================================================================== --- head/sys/dev/iscsi/icl_conn_if.m Tue May 17 09:56:22 2016 (r300043) +++ head/sys/dev/iscsi/icl_conn_if.m Tue May 17 11:10:44 2016 (r300044) @@ -29,6 +29,7 @@ # $FreeBSD$ # +#include #include INTERFACE icl_conn; @@ -106,3 +107,15 @@ METHOD void transfer_done { struct icl_conn *_ic; void *_prv; }; + +# +# The function below is only used with ICL_KERNEL_PROXY. +# +METHOD int connect { + struct icl_conn *_ic; + int _domain; + int _socktype; + int _protocol; + struct sockaddr *_from_sa; + struct sockaddr *_to_sa; +}; Modified: head/sys/dev/iscsi/icl_proxy.c ============================================================================== --- head/sys/dev/iscsi/icl_proxy.c Tue May 17 09:56:22 2016 (r300043) +++ head/sys/dev/iscsi/icl_proxy.c Tue May 17 11:10:44 2016 (r300044) @@ -105,8 +105,8 @@ struct icl_listen { static MALLOC_DEFINE(M_ICL_PROXY, "ICL_PROXY", "iSCSI common layer proxy"); -static int -icl_conn_connect_tcp(struct icl_conn *ic, int domain, int socktype, +int +icl_soft_proxy_connect(struct icl_conn *ic, int domain, int socktype, int protocol, struct sockaddr *from_sa, struct sockaddr *to_sa) { struct socket *so; @@ -153,26 +153,13 @@ icl_conn_connect_tcp(struct icl_conn *ic return (error); } - error = icl_conn_handoff_sock(ic, so); + error = icl_soft_handoff_sock(ic, so); if (error != 0) soclose(so); return (error); } -int -icl_conn_connect(struct icl_conn *ic, bool rdma, int domain, int socktype, - int protocol, struct sockaddr *from_sa, struct sockaddr *to_sa) -{ - - if (rdma) { - ICL_DEBUG("RDMA not supported"); - return (EOPNOTSUPP); - } - - return (icl_conn_connect_tcp(ic, domain, socktype, protocol, from_sa, to_sa)); -} - struct icl_listen * icl_listen_new(void (*accept_cb)(struct socket *, struct sockaddr *, int)) { Modified: head/sys/dev/iscsi/icl_soft.c ============================================================================== --- head/sys/dev/iscsi/icl_soft.c Tue May 17 09:56:22 2016 (r300043) +++ head/sys/dev/iscsi/icl_soft.c Tue May 17 11:10:44 2016 (r300044) @@ -101,6 +101,9 @@ static icl_conn_task_setup_t icl_soft_co 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_done_t icl_soft_conn_transfer_done; +#ifdef ICL_KERNEL_PROXY +static icl_conn_connect_t icl_soft_conn_connect; +#endif static kobj_method_t icl_soft_methods[] = { KOBJMETHOD(icl_conn_new_pdu, icl_soft_conn_new_pdu), @@ -117,6 +120,9 @@ static kobj_method_t icl_soft_methods[] KOBJMETHOD(icl_conn_task_done, icl_soft_conn_task_done), KOBJMETHOD(icl_conn_transfer_setup, icl_soft_conn_transfer_setup), KOBJMETHOD(icl_conn_transfer_done, icl_soft_conn_transfer_done), +#ifdef ICL_KERNEL_PROXY + KOBJMETHOD(icl_conn_connect, icl_soft_conn_connect), +#endif { 0, 0 } }; @@ -1460,7 +1466,16 @@ icl_soft_limits(size_t *limitp) #ifdef ICL_KERNEL_PROXY int -icl_conn_handoff_sock(struct icl_conn *ic, struct socket *so) +icl_soft_conn_connect(struct icl_conn *ic, int domain, int socktype, + int protocol, struct sockaddr *from_sa, struct sockaddr *to_sa) +{ + + return (icl_soft_proxy_connect(ic, domain, socktype, protocol, + from_sa, to_sa)); +} + +int +icl_soft_handoff_sock(struct icl_conn *ic, struct socket *so) { int error; Modified: head/sys/dev/iscsi/icl_wrappers.h ============================================================================== --- head/sys/dev/iscsi/icl_wrappers.h Tue May 17 09:56:22 2016 (r300043) +++ head/sys/dev/iscsi/icl_wrappers.h Tue May 17 11:10:44 2016 (r300044) @@ -135,4 +135,16 @@ icl_conn_transfer_done(struct icl_conn * ICL_CONN_TRANSFER_DONE(ic, prv); } +/* + * The function below is only used with ICL_KERNEL_PROXY. + */ +static inline int +icl_conn_connect(struct icl_conn *ic, int domain, int socktype, + int protocol, struct sockaddr *from_sa, struct sockaddr *to_sa) +{ + + return (ICL_CONN_CONNECT(ic, domain, socktype, protocol, + from_sa, to_sa)); +} + #endif /* !ICL_WRAPPERS_H */ Modified: head/sys/dev/iscsi/iscsi.c ============================================================================== --- head/sys/dev/iscsi/iscsi.c Tue May 17 09:56:22 2016 (r300043) +++ head/sys/dev/iscsi/iscsi.c Tue May 17 11:10:44 2016 (r300044) @@ -43,6 +43,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -1559,7 +1560,7 @@ iscsi_ioctl_daemon_connect(struct iscsi_ is->is_timeout = 0; ISCSI_SESSION_UNLOCK(is); - error = icl_conn_connect(is->is_conn, idc->idc_iser, idc->idc_domain, + error = icl_conn_connect(is->is_conn, idc->idc_domain, idc->idc_socktype, idc->idc_protocol, from_sa, to_sa); free(from_sa, M_SONAME); free(to_sa, M_SONAME);