Lines Matching defs:msg
15 struct msghdr *msg, int len, int flags)
17 struct iov_iter *iter = &msg->msg_iter;
95 struct sk_msg *msg, u32 apply_bytes, int flags)
108 tmp->sg.start = msg->sg.start;
109 i = msg->sg.start;
111 sge = sk_msg_elem(msg, i);
121 sk_msg_xfer(tmp, msg, i, size);
135 } while (i != msg->sg.end);
138 msg->sg.start = i;
150 static int tcp_bpf_push(struct sock *sk, struct sk_msg *msg, u32 apply_bytes,
162 sge = sk_msg_elem(msg, msg->sg.start);
183 msg->sg.size -= ret;
195 sk_msg_iter_next(msg, start);
197 if (msg->sg.start == msg->sg.end)
207 static int tcp_bpf_push_locked(struct sock *sk, struct sk_msg *msg,
213 ret = tcp_bpf_push(sk, msg, apply_bytes, flags, uncharge);
218 int tcp_bpf_sendmsg_redir(struct sock *sk, struct sk_msg *msg,
221 bool ingress = sk_msg_to_ingress(msg);
228 ret = ingress ? bpf_tcp_ingress(sk, psock, msg, bytes, flags) :
229 tcp_bpf_push_locked(sk, msg, bytes, flags, false);
271 static int tcp_bpf_recvmsg(struct sock *sk, struct msghdr *msg, size_t len,
278 return inet_recv_error(sk, msg, len, addr_len);
282 return tcp_recvmsg(sk, msg, len, nonblock, flags, addr_len);
286 return tcp_recvmsg(sk, msg, len, nonblock, flags, addr_len);
290 copied = __tcp_bpf_recvmsg(sk, psock, msg, len, flags);
302 return tcp_recvmsg(sk, msg, len, nonblock, flags, addr_len);
318 struct sk_msg *msg, int *copied, int flags)
320 bool cork = false, enospc = sk_msg_full(msg);
328 /* Track delta in msg size to add/subtract it on SK_DROP from
333 delta = msg->sg.size;
334 psock->eval = sk_psock_msg_verdict(sk, psock, msg);
335 delta -= msg->sg.size;
338 if (msg->cork_bytes &&
339 msg->cork_bytes > msg->sg.size && !enospc) {
340 psock->cork_bytes = msg->cork_bytes - msg->sg.size;
347 memcpy(psock->cork, msg, sizeof(*msg));
351 tosend = msg->sg.size;
358 ret = tcp_bpf_push(sk, msg, tosend, flags, true);
360 *copied -= sk_msg_free(sk, msg);
378 sk_msg_return(sk, msg, tosend);
381 origsize = msg->sg.size;
382 ret = tcp_bpf_sendmsg_redir(sk_redir, msg, tosend, flags);
383 sent = origsize - msg->sg.size;
390 int free = sk_msg_free_nocharge(sk, msg);
396 sk_msg_free(sk, msg);
397 kfree(msg);
398 msg = NULL;
404 sk_msg_free_partial(sk, msg, tosend);
418 if (msg &&
419 msg->sg.data[msg->sg.start].page_link &&
420 msg->sg.data[msg->sg.start].length) {
429 static int tcp_bpf_sendmsg(struct sock *sk, struct msghdr *msg, size_t size)
438 flags = (msg->msg_flags & ~MSG_SENDPAGE_DECRYPTED);
443 return tcp_sendmsg(sk, msg, size);
446 timeo = sock_sndtimeo(sk, msg->msg_flags & MSG_DONTWAIT);
447 while (msg_data_left(msg)) {
456 copy = msg_data_left(msg);
475 err = sk_msg_memcopy_from_iter(sk, &msg->msg_iter, msg_tx,
511 err = sk_stream_error(sk, msg->msg_flags, err);
520 struct sk_msg tmp, *msg = NULL;
531 msg = psock->cork;
533 msg = &tmp;
534 sk_msg_init(msg);
538 if (unlikely(sk_msg_full(msg)))
541 sk_msg_page_add(msg, page, size, offset);
544 if (sk_msg_full(msg))
558 err = tcp_bpf_send_verdict(sk, psock, msg, &copied, flags);