Lines Matching defs:svsk

123 		struct svc_sock *svsk =
127 skb_free_datagram_locked(svsk->sk_sk, skb);
155 struct svc_sock *svsk =
157 switch (svsk->sk_sk->sk_family) {
193 static int svc_one_sock_name(struct svc_sock *svsk, char *buf, int remaining)
195 const struct sock *sk = svsk->sk_sk;
254 struct svc_sock *svsk =
264 clear_bit(XPT_DATA, &svsk->sk_xprt.xpt_flags);
279 len = sock_recvmsg(svsk->sk_sock, &msg, MSG_DONTWAIT);
287 set_bit(XPT_DATA, &svsk->sk_xprt.xpt_flags);
295 static void svc_sock_setbufsize(struct svc_sock *svsk, unsigned int nreqs)
297 unsigned int max_mesg = svsk->sk_xprt.xpt_server->sv_max_mesg;
298 struct socket *sock = svsk->sk_sock;
322 struct svc_sock *svsk = (struct svc_sock *)sk->sk_user_data;
324 if (svsk) {
327 svsk->sk_odata(sk);
328 trace_svcsock_data_ready(&svsk->sk_xprt, 0);
329 if (!test_and_set_bit(XPT_DATA, &svsk->sk_xprt.xpt_flags))
330 svc_xprt_enqueue(&svsk->sk_xprt);
339 struct svc_sock *svsk = (struct svc_sock *)(sk->sk_user_data);
341 if (svsk) {
344 trace_svcsock_write_space(&svsk->sk_xprt, 0);
345 svsk->sk_owspace(sk);
346 svc_xprt_enqueue(&svsk->sk_xprt);
352 struct svc_sock *svsk = container_of(xprt, struct svc_sock, sk_xprt);
356 return !test_bit(SOCK_NOSPACE, &svsk->sk_sock->flags);
361 struct svc_sock *svsk = container_of(xprt, struct svc_sock, sk_xprt);
363 sock_no_linger(svsk->sk_sock->sk);
433 struct svc_sock *svsk =
435 struct svc_serv *serv = svsk->sk_xprt.xpt_server;
451 if (test_and_clear_bit(XPT_CHNGBUF, &svsk->sk_xprt.xpt_flags))
460 svc_sock_setbufsize(svsk, serv->sv_nrthreads + 3);
462 clear_bit(XPT_DATA, &svsk->sk_xprt.xpt_flags);
463 err = kernel_recvmsg(svsk->sk_sock, &msg, NULL,
467 skb = skb_recv_udp(svsk->sk_sk, 0, 1, &err);
478 sock_write_timestamp(svsk->sk_sk, skb->tstamp);
479 set_bit(XPT_DATA, &svsk->sk_xprt.xpt_flags); /* there may be more data... */
483 trace_svcsock_udp_recv(&svsk->sk_xprt, len);
527 set_bit(XPT_DATA, &svsk->sk_xprt.xpt_flags);
529 trace_svcsock_udp_recv_err(&svsk->sk_xprt, err);
554 struct svc_sock *svsk = container_of(xprt, struct svc_sock, sk_xprt);
579 err = xprt_sock_sendmsg(svsk->sk_sock, &msg, xdr, 0, 0, &sent);
583 err = xprt_sock_sendmsg(svsk->sk_sock, &msg, xdr, 0, 0, &sent);
600 struct svc_sock *svsk = container_of(xprt, struct svc_sock, sk_xprt);
608 set_bit(SOCK_NOSPACE, &svsk->sk_sock->flags);
609 required = atomic_read(&svsk->sk_xprt.xpt_reserved) + serv->sv_max_mesg;
610 if (required*2 > sock_wspace(svsk->sk_sk))
612 clear_bit(SOCK_NOSPACE, &svsk->sk_sock->flags);
656 static void svc_udp_init(struct svc_sock *svsk, struct svc_serv *serv)
658 svc_xprt_init(sock_net(svsk->sk_sock->sk), &svc_udp_class,
659 &svsk->sk_xprt, serv);
660 clear_bit(XPT_CACHE_AUTH, &svsk->sk_xprt.xpt_flags);
661 svsk->sk_sk->sk_data_ready = svc_data_ready;
662 svsk->sk_sk->sk_write_space = svc_write_space;
668 svc_sock_setbufsize(svsk, 3);
671 set_bit(XPT_DATA, &svsk->sk_xprt.xpt_flags);
672 set_bit(XPT_CHNGBUF, &svsk->sk_xprt.xpt_flags);
675 switch (svsk->sk_sk->sk_family) {
677 ip_sock_set_pktinfo(svsk->sk_sock->sk);
680 ip6_sock_set_recvpktinfo(svsk->sk_sock->sk);
693 struct svc_sock *svsk = (struct svc_sock *)sk->sk_user_data;
704 * dereference svsk.
709 if (svsk) {
712 svsk->sk_odata(sk);
713 set_bit(XPT_CONN, &svsk->sk_xprt.xpt_flags);
714 svc_xprt_enqueue(&svsk->sk_xprt);
723 struct svc_sock *svsk = (struct svc_sock *)sk->sk_user_data;
725 if (svsk) {
728 svsk->sk_ostate(sk);
729 trace_svcsock_tcp_state(&svsk->sk_xprt, svsk->sk_sock);
731 set_bit(XPT_CLOSE, &svsk->sk_xprt.xpt_flags);
732 svc_xprt_enqueue(&svsk->sk_xprt);
742 struct svc_sock *svsk = container_of(xprt, struct svc_sock, sk_xprt);
745 struct svc_serv *serv = svsk->sk_xprt.xpt_server;
746 struct socket *sock = svsk->sk_sock;
754 clear_bit(XPT_CONN, &svsk->sk_xprt.xpt_flags);
766 set_bit(XPT_CONN, &svsk->sk_xprt.xpt_flags);
776 newsock->sk->sk_state_change = svsk->sk_ostate;
777 newsock->sk->sk_data_ready = svsk->sk_odata;
778 newsock->sk->sk_write_space = svsk->sk_owspace;
810 static size_t svc_tcp_restore_pages(struct svc_sock *svsk,
813 size_t len = svsk->sk_datalen;
822 BUG_ON(svsk->sk_pages[i] == NULL);
823 rqstp->rq_pages[i] = svsk->sk_pages[i];
824 svsk->sk_pages[i] = NULL;
830 static void svc_tcp_save_pages(struct svc_sock *svsk, struct svc_rqst *rqstp)
834 if (svsk->sk_datalen == 0)
836 len = svsk->sk_datalen;
839 svsk->sk_pages[i] = rqstp->rq_pages[i];
844 static void svc_tcp_clear_pages(struct svc_sock *svsk)
848 if (svsk->sk_datalen == 0)
850 len = svsk->sk_datalen;
853 if (svsk->sk_pages[i] == NULL) {
857 put_page(svsk->sk_pages[i]);
858 svsk->sk_pages[i] = NULL;
861 svsk->sk_tcplen = 0;
862 svsk->sk_datalen = 0;
868 static ssize_t svc_tcp_read_marker(struct svc_sock *svsk,
876 if (svsk->sk_tcplen < sizeof(rpc_fraghdr)) {
880 want = sizeof(rpc_fraghdr) - svsk->sk_tcplen;
881 iov.iov_base = ((char *)&svsk->sk_marker) + svsk->sk_tcplen;
884 len = sock_recvmsg(svsk->sk_sock, &msg, MSG_DONTWAIT);
887 svsk->sk_tcplen += len;
892 trace_svcsock_marker(&svsk->sk_xprt, svsk->sk_marker);
893 if (svc_sock_reclen(svsk) + svsk->sk_datalen >
894 svsk->sk_xprt.xpt_server->sv_max_mesg)
897 return svc_sock_reclen(svsk);
901 __func__, svsk->sk_xprt.xpt_server->sv_name,
902 svc_sock_reclen(svsk));
903 set_bit(XPT_CLOSE, &svsk->sk_xprt.xpt_flags);
908 static int receive_cb_reply(struct svc_sock *svsk, struct svc_rqst *rqstp)
910 struct rpc_xprt *bc_xprt = svsk->sk_xprt.xpt_bc_xprt;
953 static void svc_tcp_fragment_received(struct svc_sock *svsk)
956 svsk->sk_tcplen = 0;
957 svsk->sk_marker = xdr_zero;
980 struct svc_sock *svsk =
982 struct svc_serv *serv = svsk->sk_xprt.xpt_server;
988 clear_bit(XPT_DATA, &svsk->sk_xprt.xpt_flags);
989 len = svc_tcp_read_marker(svsk, rqstp);
993 base = svc_tcp_restore_pages(svsk, rqstp);
994 want = len - (svsk->sk_tcplen - sizeof(rpc_fraghdr));
997 trace_svcsock_tcp_recv(&svsk->sk_xprt, len);
998 svsk->sk_tcplen += len;
999 svsk->sk_datalen += len;
1001 if (len != want || !svc_sock_final_rec(svsk))
1003 if (svsk->sk_datalen < 8)
1006 rqstp->rq_arg.len = svsk->sk_datalen;
1016 if (test_bit(XPT_LOCAL, &svsk->sk_xprt.xpt_flags))
1024 len = receive_cb_reply(svsk, rqstp);
1027 svsk->sk_datalen = 0;
1028 svc_tcp_fragment_received(svsk);
1033 svc_xprt_copy_addrs(rqstp, &svsk->sk_xprt);
1040 svc_tcp_save_pages(svsk, rqstp);
1044 svc_tcp_fragment_received(svsk);
1046 trace_svcsock_tcp_recv_short(&svsk->sk_xprt,
1047 svc_sock_reclen(svsk),
1048 svsk->sk_tcplen - sizeof(rpc_fraghdr));
1053 trace_svcsock_tcp_recv_eagain(&svsk->sk_xprt, 0);
1056 svsk->sk_datalen = 0;
1058 trace_svcsock_tcp_recv_err(&svsk->sk_xprt, len);
1059 set_bit(XPT_CLOSE, &svsk->sk_xprt.xpt_flags);
1163 struct svc_sock *svsk = container_of(xprt, struct svc_sock, sk_xprt);
1178 err = svc_tcp_sendmsg(svsk->sk_sock, &msg, xdr, marker, &sent);
1242 static void svc_tcp_init(struct svc_sock *svsk, struct svc_serv *serv)
1244 struct sock *sk = svsk->sk_sk;
1246 svc_xprt_init(sock_net(svsk->sk_sock->sk), &svc_tcp_class,
1247 &svsk->sk_xprt, serv);
1248 set_bit(XPT_CACHE_AUTH, &svsk->sk_xprt.xpt_flags);
1249 set_bit(XPT_CONG_CTRL, &svsk->sk_xprt.xpt_flags);
1251 strcpy(svsk->sk_xprt.xpt_remotebuf, "listener");
1252 set_bit(XPT_LISTENER, &svsk->sk_xprt.xpt_flags);
1254 set_bit(XPT_CONN, &svsk->sk_xprt.xpt_flags);
1260 svsk->sk_marker = xdr_zero;
1261 svsk->sk_tcplen = 0;
1262 svsk->sk_datalen = 0;
1263 memset(&svsk->sk_pages[0], 0, sizeof(svsk->sk_pages));
1267 set_bit(XPT_DATA, &svsk->sk_xprt.xpt_flags);
1273 set_bit(XPT_CLOSE, &svsk->sk_xprt.xpt_flags);
1284 struct svc_sock *svsk;
1287 list_for_each_entry(svsk, &serv->sv_permsocks, sk_xprt.xpt_list)
1288 set_bit(XPT_CHNGBUF, &svsk->sk_xprt.xpt_flags);
1300 struct svc_sock *svsk;
1305 svsk = kzalloc(sizeof(*svsk), GFP_KERNEL);
1306 if (!svsk)
1318 kfree(svsk);
1322 svsk->sk_sock = sock;
1323 svsk->sk_sk = inet;
1324 svsk->sk_ostate = inet->sk_state_change;
1325 svsk->sk_odata = inet->sk_data_ready;
1326 svsk->sk_owspace = inet->sk_write_space;
1333 inet->sk_user_data = svsk;
1337 svc_udp_init(svsk, serv);
1339 svc_tcp_init(svsk, serv);
1342 return svsk;
1378 struct svc_sock *svsk = NULL;
1398 svsk = svc_setup_socket(serv, so, SVC_SOCK_DEFAULTS);
1399 if (IS_ERR(svsk)) {
1401 err = PTR_ERR(svsk);
1404 salen = kernel_getsockname(svsk->sk_sock, sin);
1406 svc_xprt_set_local(&svsk->sk_xprt, sin, salen);
1407 svsk->sk_xprt.xpt_cred = get_cred(cred);
1408 svc_add_new_perm_xprt(serv, &svsk->sk_xprt);
1409 return svc_one_sock_name(svsk, name_return, len);
1425 struct svc_sock *svsk;
1481 svsk = svc_setup_socket(serv, sock, flags);
1482 if (IS_ERR(svsk)) {
1483 error = PTR_ERR(svsk);
1486 svc_xprt_set_local(&svsk->sk_xprt, newsin, newlen);
1487 return (struct svc_xprt *)svsk;
1499 struct svc_sock *svsk = container_of(xprt, struct svc_sock, sk_xprt);
1500 struct sock *sk = svsk->sk_sk;
1504 sk->sk_state_change = svsk->sk_ostate;
1505 sk->sk_data_ready = svsk->sk_odata;
1506 sk->sk_write_space = svsk->sk_owspace;
1516 struct svc_sock *svsk = container_of(xprt, struct svc_sock, sk_xprt);
1521 svc_tcp_clear_pages(svsk);
1522 kernel_sock_shutdown(svsk->sk_sock, SHUT_RDWR);
1531 struct svc_sock *svsk = container_of(xprt, struct svc_sock, sk_xprt);
1533 if (svsk->sk_sock->file)
1534 sockfd_put(svsk->sk_sock);
1536 sock_release(svsk->sk_sock);
1537 kfree(svsk);