Lines Matching refs:sk
57 static inline int aead_sndbuf(struct sock *sk) in aead_sndbuf() argument
59 struct alg_sock *ask = alg_sk(sk); in aead_sndbuf()
62 return max_t(int, max_t(int, sk->sk_sndbuf & PAGE_MASK, PAGE_SIZE) - in aead_sndbuf()
66 static inline bool aead_writable(struct sock *sk) in aead_writable() argument
68 return PAGE_SIZE <= aead_sndbuf(sk); in aead_writable()
78 static void aead_put_sgl(struct sock *sk) in aead_put_sgl() argument
80 struct alg_sock *ask = alg_sk(sk); in aead_put_sgl()
100 static void aead_wmem_wakeup(struct sock *sk) in aead_wmem_wakeup() argument
104 if (!aead_writable(sk)) in aead_wmem_wakeup()
108 wq = rcu_dereference(sk->sk_wq); in aead_wmem_wakeup()
113 sk_wake_async(sk, SOCK_WAKE_WAITD, POLL_IN); in aead_wmem_wakeup()
117 static int aead_wait_for_data(struct sock *sk, unsigned flags) in aead_wait_for_data() argument
119 struct alg_sock *ask = alg_sk(sk); in aead_wait_for_data()
128 sk_set_bit(SOCKWQ_ASYNC_WAITDATA, sk); in aead_wait_for_data()
133 prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); in aead_wait_for_data()
135 if (sk_wait_event(sk, &timeout, !ctx->more)) { in aead_wait_for_data()
140 finish_wait(sk_sleep(sk), &wait); in aead_wait_for_data()
142 sk_clear_bit(SOCKWQ_ASYNC_WAITDATA, sk); in aead_wait_for_data()
147 static void aead_data_wakeup(struct sock *sk) in aead_data_wakeup() argument
149 struct alg_sock *ask = alg_sk(sk); in aead_data_wakeup()
159 wq = rcu_dereference(sk->sk_wq); in aead_data_wakeup()
164 sk_wake_async(sk, SOCK_WAKE_SPACE, POLL_OUT); in aead_data_wakeup()
170 struct sock *sk = sock->sk; in aead_sendmsg() local
171 struct alg_sock *ask = alg_sk(sk); in aead_sendmsg()
203 lock_sock(sk); in aead_sendmsg()
240 if (!aead_writable(sk)) { in aead_sendmsg()
242 aead_put_sgl(sk); in aead_sendmsg()
248 len = min_t(unsigned long, size, aead_sndbuf(sk)); in aead_sendmsg()
253 aead_put_sgl(sk); in aead_sendmsg()
289 aead_put_sgl(sk); in aead_sendmsg()
294 aead_data_wakeup(sk); in aead_sendmsg()
295 release_sock(sk); in aead_sendmsg()
303 struct sock *sk = sock->sk; in aead_sendpage() local
304 struct alg_sock *ask = alg_sk(sk); in aead_sendpage()
315 lock_sock(sk); in aead_sendpage()
322 if (!aead_writable(sk)) { in aead_sendpage()
324 aead_put_sgl(sk); in aead_sendpage()
341 aead_put_sgl(sk); in aead_sendpage()
346 aead_data_wakeup(sk); in aead_sendpage()
347 release_sock(sk); in aead_sendpage()
354 struct sock *sk = sock->sk; in aead_recvmsg() local
355 struct alg_sock *ask = alg_sk(sk); in aead_recvmsg()
370 lock_sock(sk); in aead_recvmsg()
388 err = aead_wait_for_data(sk, flags); in aead_recvmsg()
456 aead_put_sgl(sk); in aead_recvmsg()
460 aead_put_sgl(sk); in aead_recvmsg()
468 aead_wmem_wakeup(sk); in aead_recvmsg()
469 release_sock(sk); in aead_recvmsg()
477 struct sock *sk = sock->sk; in aead_poll() local
478 struct alg_sock *ask = alg_sk(sk); in aead_poll()
482 sock_poll_wait(file, sk_sleep(sk), wait); in aead_poll()
488 if (aead_writable(sk)) in aead_poll()
536 static void aead_sock_destruct(struct sock *sk) in aead_sock_destruct() argument
538 struct alg_sock *ask = alg_sk(sk); in aead_sock_destruct()
543 aead_put_sgl(sk); in aead_sock_destruct()
544 sock_kzfree_s(sk, ctx->iv, ivlen); in aead_sock_destruct()
545 sock_kfree_s(sk, ctx, ctx->len); in aead_sock_destruct()
546 af_alg_release_parent(sk); in aead_sock_destruct()
549 static int aead_accept_parent(void *private, struct sock *sk) in aead_accept_parent() argument
552 struct alg_sock *ask = alg_sk(sk); in aead_accept_parent()
556 ctx = sock_kmalloc(sk, len, GFP_KERNEL); in aead_accept_parent()
561 ctx->iv = sock_kmalloc(sk, ivlen, GFP_KERNEL); in aead_accept_parent()
563 sock_kfree_s(sk, ctx, len); in aead_accept_parent()
584 sk->sk_destruct = aead_sock_destruct; in aead_accept_parent()