Lines Matching refs:tp
391 static u64 tcp_compute_delivery_rate(const struct tcp_sock *tp) in tcp_compute_delivery_rate() argument
393 u32 rate = READ_ONCE(tp->rate_delivered); in tcp_compute_delivery_rate()
394 u32 intv = READ_ONCE(tp->rate_interval_us); in tcp_compute_delivery_rate()
398 rate64 = (u64)rate * tp->mss_cache * USEC_PER_SEC; in tcp_compute_delivery_rate()
412 struct tcp_sock *tp = tcp_sk(sk); in tcp_init_sock() local
414 tp->out_of_order_queue = RB_ROOT; in tcp_init_sock()
417 INIT_LIST_HEAD(&tp->tsq_node); in tcp_init_sock()
418 INIT_LIST_HEAD(&tp->tsorted_sent_queue); in tcp_init_sock()
423 tp->mdev_us = jiffies_to_usecs(TCP_TIMEOUT_INIT); in tcp_init_sock()
424 minmax_reset(&tp->rtt_min, tcp_jiffies32, ~0U); in tcp_init_sock()
431 tp->snd_cwnd = TCP_INIT_CWND; in tcp_init_sock()
434 tp->app_limited = ~0U; in tcp_init_sock()
439 tp->snd_ssthresh = TCP_INFINITE_SSTHRESH; in tcp_init_sock()
440 tp->snd_cwnd_clamp = ~0; in tcp_init_sock()
441 tp->mss_cache = TCP_MSS_DEFAULT; in tcp_init_sock()
443 tp->reordering = READ_ONCE(sock_net(sk)->ipv4.sysctl_tcp_reordering); in tcp_init_sock()
446 tp->tsoffset = 0; in tcp_init_sock()
447 tp->rack.reo_wnd_steps = 1; in tcp_init_sock()
478 static inline bool tcp_stream_is_readable(const struct tcp_sock *tp, in tcp_stream_is_readable() argument
481 int avail = READ_ONCE(tp->rcv_nxt) - READ_ONCE(tp->copied_seq); in tcp_stream_is_readable()
488 if (tcp_receive_window(tp) <= inet_csk(sk)->icsk_ack.rcv_mss) in tcp_stream_is_readable()
507 const struct tcp_sock *tp = tcp_sk(sk); in tcp_poll() local
557 (state != TCP_SYN_RECV || rcu_access_pointer(tp->fastopen_rsk))) { in tcp_poll()
560 if (READ_ONCE(tp->urg_seq) == READ_ONCE(tp->copied_seq) && in tcp_poll()
562 tp->urg_data) in tcp_poll()
565 if (tcp_stream_is_readable(tp, target, sk)) in tcp_poll()
587 if (tp->urg_data & TCP_URG_VALID) in tcp_poll()
607 struct tcp_sock *tp = tcp_sk(sk); in tcp_ioctl() local
621 answ = tp->urg_data && in tcp_ioctl()
622 READ_ONCE(tp->urg_seq) == READ_ONCE(tp->copied_seq); in tcp_ioctl()
631 answ = READ_ONCE(tp->write_seq) - tp->snd_una; in tcp_ioctl()
640 answ = READ_ONCE(tp->write_seq) - in tcp_ioctl()
641 READ_ONCE(tp->snd_nxt); in tcp_ioctl()
651 static inline void tcp_mark_push(struct tcp_sock *tp, struct sk_buff *skb) in tcp_mark_push() argument
654 tp->pushed_seq = tp->write_seq; in tcp_mark_push()
657 static inline bool forced_push(const struct tcp_sock *tp) in forced_push() argument
659 return after(tp->write_seq, tp->pushed_seq + (tp->max_window >> 1)); in forced_push()
664 struct tcp_sock *tp = tcp_sk(sk); in skb_entail() local
668 tcb->seq = tcb->end_seq = tp->write_seq; in skb_entail()
675 if (tp->nonagle & TCP_NAGLE_PUSH) in skb_entail()
676 tp->nonagle &= ~TCP_NAGLE_PUSH; in skb_entail()
681 static inline void tcp_mark_urg(struct tcp_sock *tp, int flags) in tcp_mark_urg() argument
684 tp->snd_up = tp->write_seq; in tcp_mark_urg()
709 struct tcp_sock *tp = tcp_sk(sk); in tcp_push() local
715 if (!(flags & MSG_MORE) || forced_push(tp)) in tcp_push()
716 tcp_mark_push(tp, skb); in tcp_push()
718 tcp_mark_urg(tp, flags); in tcp_push()
919 struct tcp_sock *tp = tcp_sk(sk); in tcp_xmit_size_goal() local
927 new_size_goal = tcp_bound_to_half_wnd(tp, new_size_goal); in tcp_xmit_size_goal()
930 size_goal = tp->gso_segs * mss_now; in tcp_xmit_size_goal()
933 tp->gso_segs = min_t(u16, new_size_goal / mss_now, in tcp_xmit_size_goal()
935 size_goal = tp->gso_segs * mss_now; in tcp_xmit_size_goal()
970 struct tcp_sock *tp = tcp_sk(sk); in do_tcp_sendpages() local
1030 tcp_mark_push(tp, skb); in do_tcp_sendpages()
1052 WRITE_ONCE(tp->write_seq, tp->write_seq + copy); in do_tcp_sendpages()
1068 if (forced_push(tp)) { in do_tcp_sendpages()
1069 tcp_mark_push(tp, skb); in do_tcp_sendpages()
1091 tcp_push(sk, flags, mss_now, tp->nonagle, size_goal); in do_tcp_sendpages()
1134 void tcp_free_fastopen_req(struct tcp_sock *tp) in tcp_free_fastopen_req() argument
1136 if (tp->fastopen_req) { in tcp_free_fastopen_req()
1137 kfree(tp->fastopen_req); in tcp_free_fastopen_req()
1138 tp->fastopen_req = NULL; in tcp_free_fastopen_req()
1146 struct tcp_sock *tp = tcp_sk(sk); in tcp_sendmsg_fastopen() local
1156 if (tp->fastopen_req) in tcp_sendmsg_fastopen()
1159 tp->fastopen_req = kzalloc(sizeof(struct tcp_fastopen_request), in tcp_sendmsg_fastopen()
1161 if (unlikely(!tp->fastopen_req)) in tcp_sendmsg_fastopen()
1163 tp->fastopen_req->data = msg; in tcp_sendmsg_fastopen()
1164 tp->fastopen_req->size = size; in tcp_sendmsg_fastopen()
1165 tp->fastopen_req->uarg = uarg; in tcp_sendmsg_fastopen()
1182 if (tp->fastopen_req) { in tcp_sendmsg_fastopen()
1183 *copied = tp->fastopen_req->copied; in tcp_sendmsg_fastopen()
1184 tcp_free_fastopen_req(tp); in tcp_sendmsg_fastopen()
1192 struct tcp_sock *tp = tcp_sk(sk); in tcp_sendmsg_locked() local
1218 !tp->repair) { in tcp_sendmsg_locked()
1241 if (unlikely(tp->repair)) { in tcp_sendmsg_locked()
1242 if (tp->repair_queue == TCP_RECV_QUEUE) { in tcp_sendmsg_locked()
1248 if (tp->repair_queue == TCP_NO_QUEUE) in tcp_sendmsg_locked()
1311 if (tp->repair) in tcp_sendmsg_locked()
1337 tcp_mark_push(tp, skb); in tcp_sendmsg_locked()
1370 tcp_mark_push(tp, skb); in tcp_sendmsg_locked()
1381 WRITE_ONCE(tp->write_seq, tp->write_seq + copy); in tcp_sendmsg_locked()
1392 if (skb->len < size_goal || (flags & MSG_OOB) || unlikely(tp->repair)) in tcp_sendmsg_locked()
1395 if (forced_push(tp)) { in tcp_sendmsg_locked()
1396 tcp_mark_push(tp, skb); in tcp_sendmsg_locked()
1418 tcp_push(sk, flags, mss_now, tp->nonagle, size_goal); in tcp_sendmsg_locked()
1462 struct tcp_sock *tp = tcp_sk(sk); in tcp_recv_urg() local
1465 if (sock_flag(sk, SOCK_URGINLINE) || !tp->urg_data || in tcp_recv_urg()
1466 tp->urg_data == TCP_URG_READ) in tcp_recv_urg()
1472 if (tp->urg_data & TCP_URG_VALID) { in tcp_recv_urg()
1474 char c = tp->urg_data; in tcp_recv_urg()
1477 tp->urg_data = TCP_URG_READ; in tcp_recv_urg()
1537 struct tcp_sock *tp = tcp_sk(sk); in tcp_cleanup_rbuf() local
1542 WARN(skb && !before(tp->copied_seq, TCP_SKB_CB(skb)->end_seq), in tcp_cleanup_rbuf()
1544 tp->copied_seq, TCP_SKB_CB(skb)->end_seq, tp->rcv_nxt); in tcp_cleanup_rbuf()
1550 tp->rcv_nxt - tp->rcv_wup > icsk->icsk_ack.rcv_mss || in tcp_cleanup_rbuf()
1572 __u32 rcv_window_now = tcp_receive_window(tp); in tcp_cleanup_rbuf()
1575 if (2*rcv_window_now <= tp->window_clamp) { in tcp_cleanup_rbuf()
1630 struct tcp_sock *tp = tcp_sk(sk); in tcp_read_sock() local
1631 u32 seq = tp->copied_seq; in tcp_read_sock()
1644 if (tp->urg_data) { in tcp_read_sock()
1645 u32 urg_offset = tp->urg_seq - seq; in tcp_read_sock()
1685 WRITE_ONCE(tp->copied_seq, seq); in tcp_read_sock()
1687 WRITE_ONCE(tp->copied_seq, seq); in tcp_read_sock()
1859 struct tcp_sock *tp = tcp_sk(sk); in tcp_zerocopy_receive() local
1867 u32 seq = tp->copied_seq; in tcp_zerocopy_receive()
1967 WRITE_ONCE(tp->copied_seq, seq); in tcp_zerocopy_receive()
2067 const struct tcp_sock *tp = tcp_sk(sk); in tcp_inq_hint() local
2068 u32 copied_seq = READ_ONCE(tp->copied_seq); in tcp_inq_hint()
2069 u32 rcv_nxt = READ_ONCE(tp->rcv_nxt); in tcp_inq_hint()
2073 if (unlikely(inq < 0 || copied_seq != READ_ONCE(tp->copied_seq))) { in tcp_inq_hint()
2075 inq = tp->rcv_nxt - tp->copied_seq; in tcp_inq_hint()
2097 struct tcp_sock *tp = tcp_sk(sk); in tcp_recvmsg() local
2123 cmsg_flags = tp->recvmsg_inq ? 1 : 0; in tcp_recvmsg()
2130 if (unlikely(tp->repair)) { in tcp_recvmsg()
2135 if (tp->repair_queue == TCP_SEND_QUEUE) in tcp_recvmsg()
2139 if (tp->repair_queue == TCP_NO_QUEUE) in tcp_recvmsg()
2145 seq = &tp->copied_seq; in tcp_recvmsg()
2147 peek_seq = tp->copied_seq; in tcp_recvmsg()
2157 if (tp->urg_data && tp->urg_seq == *seq) { in tcp_recvmsg()
2176 *seq, TCP_SKB_CB(skb)->seq, tp->rcv_nxt, in tcp_recvmsg()
2191 *seq, TCP_SKB_CB(skb)->seq, tp->rcv_nxt, flags); in tcp_recvmsg()
2248 (peek_seq - copied - urg_hole != tp->copied_seq)) { in tcp_recvmsg()
2252 peek_seq = tp->copied_seq; in tcp_recvmsg()
2263 if (tp->urg_data) { in tcp_recvmsg()
2264 u32 urg_offset = tp->urg_seq - *seq; in tcp_recvmsg()
2297 if (tp->urg_data && after(tp->copied_seq, tp->urg_seq)) { in tcp_recvmsg()
2298 tp->urg_data = 0; in tcp_recvmsg()
2633 struct tcp_sock *tp = tcp_sk(sk); in tcp_close() local
2634 if (tp->linger2 < 0) { in tcp_close()
2739 struct tcp_sock *tp = tcp_sk(sk); in tcp_disconnect() local
2749 } else if (unlikely(tp->repair)) { in tcp_disconnect()
2752 (tp->snd_nxt != tp->write_seq && in tcp_disconnect()
2768 WRITE_ONCE(tp->copied_seq, tp->rcv_nxt); in tcp_disconnect()
2769 tp->urg_data = 0; in tcp_disconnect()
2772 skb_rbtree_purge(&tp->out_of_order_queue); in tcp_disconnect()
2781 tp->srtt_us = 0; in tcp_disconnect()
2782 tp->mdev_us = jiffies_to_usecs(TCP_TIMEOUT_INIT); in tcp_disconnect()
2783 tp->rcv_rtt_last_tsecr = 0; in tcp_disconnect()
2785 seq = tp->write_seq + tp->max_window + 2; in tcp_disconnect()
2788 WRITE_ONCE(tp->write_seq, seq); in tcp_disconnect()
2796 tp->snd_ssthresh = TCP_INFINITE_SSTHRESH; in tcp_disconnect()
2797 tp->snd_cwnd = TCP_INIT_CWND; in tcp_disconnect()
2798 tp->snd_cwnd_cnt = 0; in tcp_disconnect()
2799 tp->is_cwnd_limited = 0; in tcp_disconnect()
2800 tp->max_packets_out = 0; in tcp_disconnect()
2801 tp->window_clamp = 0; in tcp_disconnect()
2802 tp->delivered = 0; in tcp_disconnect()
2803 tp->delivered_ce = 0; in tcp_disconnect()
2809 tp->is_sack_reneg = 0; in tcp_disconnect()
2810 tcp_clear_retrans(tp); in tcp_disconnect()
2811 tp->total_retrans = 0; in tcp_disconnect()
2817 memset(&tp->rx_opt, 0, sizeof(tp->rx_opt)); in tcp_disconnect()
2820 tcp_saved_syn_free(tp); in tcp_disconnect()
2821 tp->compressed_ack = 0; in tcp_disconnect()
2822 tp->segs_in = 0; in tcp_disconnect()
2823 tp->segs_out = 0; in tcp_disconnect()
2824 tp->bytes_sent = 0; in tcp_disconnect()
2825 tp->bytes_acked = 0; in tcp_disconnect()
2826 tp->bytes_received = 0; in tcp_disconnect()
2827 tp->bytes_retrans = 0; in tcp_disconnect()
2828 tp->data_segs_in = 0; in tcp_disconnect()
2829 tp->data_segs_out = 0; in tcp_disconnect()
2830 tp->duplicate_sack[0].start_seq = 0; in tcp_disconnect()
2831 tp->duplicate_sack[0].end_seq = 0; in tcp_disconnect()
2832 tp->dsack_dups = 0; in tcp_disconnect()
2833 tp->reord_seen = 0; in tcp_disconnect()
2834 tp->retrans_out = 0; in tcp_disconnect()
2835 tp->sacked_out = 0; in tcp_disconnect()
2836 tp->tlp_high_seq = 0; in tcp_disconnect()
2837 tp->last_oow_ack_time = 0; in tcp_disconnect()
2839 tp->app_limited = ~0U; in tcp_disconnect()
2840 tp->rack.mstamp = 0; in tcp_disconnect()
2841 tp->rack.advanced = 0; in tcp_disconnect()
2842 tp->rack.reo_wnd_steps = 1; in tcp_disconnect()
2843 tp->rack.last_delivered = 0; in tcp_disconnect()
2844 tp->rack.reo_wnd_persist = 0; in tcp_disconnect()
2845 tp->rack.dsack_seen = 0; in tcp_disconnect()
2846 tp->syn_data_acked = 0; in tcp_disconnect()
2847 tp->rx_opt.saw_tstamp = 0; in tcp_disconnect()
2848 tp->rx_opt.dsack = 0; in tcp_disconnect()
2849 tp->rx_opt.num_sacks = 0; in tcp_disconnect()
2850 tp->rcv_ooopack = 0; in tcp_disconnect()
2854 tcp_free_fastopen_req(tp); in tcp_disconnect()
2856 tp->fastopen_client_fail = 0; in tcp_disconnect()
2877 static int tcp_repair_set_window(struct tcp_sock *tp, sockptr_t optbuf, int len) in tcp_repair_set_window() argument
2881 if (!tp->repair) in tcp_repair_set_window()
2893 if (after(opt.snd_wl1, tp->rcv_nxt + opt.rcv_wnd)) in tcp_repair_set_window()
2896 if (after(opt.rcv_wup, tp->rcv_nxt)) in tcp_repair_set_window()
2899 tp->snd_wl1 = opt.snd_wl1; in tcp_repair_set_window()
2900 tp->snd_wnd = opt.snd_wnd; in tcp_repair_set_window()
2901 tp->max_window = opt.max_window; in tcp_repair_set_window()
2903 tp->rcv_wnd = opt.rcv_wnd; in tcp_repair_set_window()
2904 tp->rcv_wup = opt.rcv_wup; in tcp_repair_set_window()
2912 struct tcp_sock *tp = tcp_sk(sk); in tcp_repair_options_est() local
2925 tp->rx_opt.mss_clamp = opt.opt_val; in tcp_repair_options_est()
2936 tp->rx_opt.snd_wscale = snd_wscale; in tcp_repair_options_est()
2937 tp->rx_opt.rcv_wscale = rcv_wscale; in tcp_repair_options_est()
2938 tp->rx_opt.wscale_ok = 1; in tcp_repair_options_est()
2945 tp->rx_opt.sack_ok |= TCP_SACK_SEEN; in tcp_repair_options_est()
2951 tp->rx_opt.tstamp_ok = 1; in tcp_repair_options_est()
2985 struct tcp_sock *tp = tcp_sk(sk); in __tcp_sock_set_cork() local
2988 tp->nonagle |= TCP_NAGLE_CORK; in __tcp_sock_set_cork()
2990 tp->nonagle &= ~TCP_NAGLE_CORK; in __tcp_sock_set_cork()
2991 if (tp->nonagle & TCP_NAGLE_OFF) in __tcp_sock_set_cork()
2992 tp->nonagle |= TCP_NAGLE_PUSH; in __tcp_sock_set_cork()
3076 struct tcp_sock *tp = tcp_sk(sk); in tcp_sock_set_keepidle_locked() local
3081 tp->keepalive_time = val * HZ; in tcp_sock_set_keepidle_locked()
3084 u32 elapsed = keepalive_time_elapsed(tp); in tcp_sock_set_keepidle_locked()
3086 if (tp->keepalive_time > elapsed) in tcp_sock_set_keepidle_locked()
3087 elapsed = tp->keepalive_time - elapsed; in tcp_sock_set_keepidle_locked()
3137 struct tcp_sock *tp = tcp_sk(sk); in do_tcp_setsockopt() local
3224 tp->rx_opt.user_mss = val; in do_tcp_setsockopt()
3235 tp->thin_lto = val; in do_tcp_setsockopt()
3247 tp->repair = 1; in do_tcp_setsockopt()
3249 tp->repair_queue = TCP_NO_QUEUE; in do_tcp_setsockopt()
3251 tp->repair = 0; in do_tcp_setsockopt()
3255 tp->repair = 0; in do_tcp_setsockopt()
3263 if (!tp->repair) in do_tcp_setsockopt()
3266 tp->repair_queue = val; in do_tcp_setsockopt()
3274 } else if (tp->repair_queue == TCP_SEND_QUEUE) { in do_tcp_setsockopt()
3278 WRITE_ONCE(tp->write_seq, val); in do_tcp_setsockopt()
3279 } else if (tp->repair_queue == TCP_RECV_QUEUE) { in do_tcp_setsockopt()
3280 if (tp->rcv_nxt != tp->copied_seq) { in do_tcp_setsockopt()
3283 WRITE_ONCE(tp->rcv_nxt, val); in do_tcp_setsockopt()
3284 WRITE_ONCE(tp->copied_seq, val); in do_tcp_setsockopt()
3292 if (!tp->repair) in do_tcp_setsockopt()
3294 else if (sk->sk_state == TCP_ESTABLISHED && !tp->bytes_sent) in do_tcp_setsockopt()
3311 tp->keepalive_intvl = val * HZ; in do_tcp_setsockopt()
3317 tp->keepalive_probes = val; in do_tcp_setsockopt()
3331 tp->save_syn = val; in do_tcp_setsockopt()
3336 tp->linger2 = -1; in do_tcp_setsockopt()
3338 tp->linger2 = TCP_FIN_TIMEOUT_MAX; in do_tcp_setsockopt()
3340 tp->linger2 = val * HZ; in do_tcp_setsockopt()
3356 tp->window_clamp = 0; in do_tcp_setsockopt()
3358 tp->window_clamp = val < SOCK_MIN_RCVBUF / 2 ? in do_tcp_setsockopt()
3369 err = tp->af_specific->md5_parse(sk, optname, optval, optlen); in do_tcp_setsockopt()
3398 tp->fastopen_connect = val; in do_tcp_setsockopt()
3411 tp->fastopen_no_cookie = val; in do_tcp_setsockopt()
3414 if (!tp->repair) in do_tcp_setsockopt()
3417 tp->tsoffset = val - tcp_time_stamp_raw(); in do_tcp_setsockopt()
3420 err = tcp_repair_set_window(tp, optval, optlen); in do_tcp_setsockopt()
3423 tp->notsent_lowat = val; in do_tcp_setsockopt()
3430 tp->recvmsg_inq = val; in do_tcp_setsockopt()
3435 tp->tcp_tx_delay = val; in do_tcp_setsockopt()
3459 static void tcp_get_info_chrono_stats(const struct tcp_sock *tp, in tcp_get_info_chrono_stats() argument
3466 stats[i] = tp->chrono_stat[i - 1]; in tcp_get_info_chrono_stats()
3467 if (i == tp->chrono_type) in tcp_get_info_chrono_stats()
3468 stats[i] += tcp_jiffies32 - tp->chrono_start; in tcp_get_info_chrono_stats()
3481 const struct tcp_sock *tp = tcp_sk(sk); /* iff sk_type == SOCK_STREAM */ in tcp_get_info() local
3503 info->tcpi_reordering = tp->reordering; in tcp_get_info()
3504 info->tcpi_snd_cwnd = tp->snd_cwnd; in tcp_get_info()
3523 if (tp->rx_opt.tstamp_ok) in tcp_get_info()
3525 if (tcp_is_sack(tp)) in tcp_get_info()
3527 if (tp->rx_opt.wscale_ok) { in tcp_get_info()
3529 info->tcpi_snd_wscale = tp->rx_opt.snd_wscale; in tcp_get_info()
3530 info->tcpi_rcv_wscale = tp->rx_opt.rcv_wscale; in tcp_get_info()
3533 if (tp->ecn_flags & TCP_ECN_OK) in tcp_get_info()
3535 if (tp->ecn_flags & TCP_ECN_SEEN) in tcp_get_info()
3537 if (tp->syn_data_acked) in tcp_get_info()
3542 info->tcpi_snd_mss = tp->mss_cache; in tcp_get_info()
3545 info->tcpi_unacked = tp->packets_out; in tcp_get_info()
3546 info->tcpi_sacked = tp->sacked_out; in tcp_get_info()
3548 info->tcpi_lost = tp->lost_out; in tcp_get_info()
3549 info->tcpi_retrans = tp->retrans_out; in tcp_get_info()
3552 info->tcpi_last_data_sent = jiffies_to_msecs(now - tp->lsndtime); in tcp_get_info()
3554 info->tcpi_last_ack_recv = jiffies_to_msecs(now - tp->rcv_tstamp); in tcp_get_info()
3557 info->tcpi_rcv_ssthresh = tp->rcv_ssthresh; in tcp_get_info()
3558 info->tcpi_rtt = tp->srtt_us >> 3; in tcp_get_info()
3559 info->tcpi_rttvar = tp->mdev_us >> 2; in tcp_get_info()
3560 info->tcpi_snd_ssthresh = tp->snd_ssthresh; in tcp_get_info()
3561 info->tcpi_advmss = tp->advmss; in tcp_get_info()
3563 info->tcpi_rcv_rtt = tp->rcv_rtt_est.rtt_us >> 3; in tcp_get_info()
3564 info->tcpi_rcv_space = tp->rcvq_space.space; in tcp_get_info()
3566 info->tcpi_total_retrans = tp->total_retrans; in tcp_get_info()
3568 info->tcpi_bytes_acked = tp->bytes_acked; in tcp_get_info()
3569 info->tcpi_bytes_received = tp->bytes_received; in tcp_get_info()
3570 info->tcpi_notsent_bytes = max_t(int, 0, tp->write_seq - tp->snd_nxt); in tcp_get_info()
3571 tcp_get_info_chrono_stats(tp, info); in tcp_get_info()
3573 info->tcpi_segs_out = tp->segs_out; in tcp_get_info()
3574 info->tcpi_segs_in = tp->segs_in; in tcp_get_info()
3576 info->tcpi_min_rtt = tcp_min_rtt(tp); in tcp_get_info()
3577 info->tcpi_data_segs_in = tp->data_segs_in; in tcp_get_info()
3578 info->tcpi_data_segs_out = tp->data_segs_out; in tcp_get_info()
3580 info->tcpi_delivery_rate_app_limited = tp->rate_app_limited ? 1 : 0; in tcp_get_info()
3581 rate64 = tcp_compute_delivery_rate(tp); in tcp_get_info()
3584 info->tcpi_delivered = tp->delivered; in tcp_get_info()
3585 info->tcpi_delivered_ce = tp->delivered_ce; in tcp_get_info()
3586 info->tcpi_bytes_sent = tp->bytes_sent; in tcp_get_info()
3587 info->tcpi_bytes_retrans = tp->bytes_retrans; in tcp_get_info()
3588 info->tcpi_dsack_dups = tp->dsack_dups; in tcp_get_info()
3589 info->tcpi_reord_seen = tp->reord_seen; in tcp_get_info()
3590 info->tcpi_rcv_ooopack = tp->rcv_ooopack; in tcp_get_info()
3591 info->tcpi_snd_wnd = tp->snd_wnd; in tcp_get_info()
3592 info->tcpi_fastopen_client_fail = tp->fastopen_client_fail; in tcp_get_info()
3631 const struct tcp_sock *tp = tcp_sk(sk); in tcp_get_timestamping_opt_stats() local
3641 tcp_get_info_chrono_stats(tp, &info); in tcp_get_timestamping_opt_stats()
3649 tp->data_segs_out, TCP_NLA_PAD); in tcp_get_timestamping_opt_stats()
3651 tp->total_retrans, TCP_NLA_PAD); in tcp_get_timestamping_opt_stats()
3657 rate64 = tcp_compute_delivery_rate(tp); in tcp_get_timestamping_opt_stats()
3660 nla_put_u32(stats, TCP_NLA_SND_CWND, tp->snd_cwnd); in tcp_get_timestamping_opt_stats()
3661 nla_put_u32(stats, TCP_NLA_REORDERING, tp->reordering); in tcp_get_timestamping_opt_stats()
3662 nla_put_u32(stats, TCP_NLA_MIN_RTT, tcp_min_rtt(tp)); in tcp_get_timestamping_opt_stats()
3665 nla_put_u8(stats, TCP_NLA_DELIVERY_RATE_APP_LMT, !!tp->rate_app_limited); in tcp_get_timestamping_opt_stats()
3666 nla_put_u32(stats, TCP_NLA_SND_SSTHRESH, tp->snd_ssthresh); in tcp_get_timestamping_opt_stats()
3667 nla_put_u32(stats, TCP_NLA_DELIVERED, tp->delivered); in tcp_get_timestamping_opt_stats()
3668 nla_put_u32(stats, TCP_NLA_DELIVERED_CE, tp->delivered_ce); in tcp_get_timestamping_opt_stats()
3670 nla_put_u32(stats, TCP_NLA_SNDQ_SIZE, tp->write_seq - tp->snd_una); in tcp_get_timestamping_opt_stats()
3673 nla_put_u64_64bit(stats, TCP_NLA_BYTES_SENT, tp->bytes_sent, in tcp_get_timestamping_opt_stats()
3675 nla_put_u64_64bit(stats, TCP_NLA_BYTES_RETRANS, tp->bytes_retrans, in tcp_get_timestamping_opt_stats()
3677 nla_put_u32(stats, TCP_NLA_DSACK_DUPS, tp->dsack_dups); in tcp_get_timestamping_opt_stats()
3678 nla_put_u32(stats, TCP_NLA_REORD_SEEN, tp->reord_seen); in tcp_get_timestamping_opt_stats()
3679 nla_put_u32(stats, TCP_NLA_SRTT, tp->srtt_us >> 3); in tcp_get_timestamping_opt_stats()
3680 nla_put_u16(stats, TCP_NLA_TIMEOUT_REHASH, tp->timeout_rehash); in tcp_get_timestamping_opt_stats()
3682 max_t(int, 0, tp->write_seq - tp->snd_nxt)); in tcp_get_timestamping_opt_stats()
3693 struct tcp_sock *tp = tcp_sk(sk); in do_tcp_getsockopt() local
3707 val = tp->mss_cache; in do_tcp_getsockopt()
3709 val = tp->rx_opt.user_mss; in do_tcp_getsockopt()
3710 if (tp->repair) in do_tcp_getsockopt()
3711 val = tp->rx_opt.mss_clamp; in do_tcp_getsockopt()
3714 val = !!(tp->nonagle&TCP_NAGLE_OFF); in do_tcp_getsockopt()
3717 val = !!(tp->nonagle&TCP_NAGLE_CORK); in do_tcp_getsockopt()
3720 val = keepalive_time_when(tp) / HZ; in do_tcp_getsockopt()
3723 val = keepalive_intvl_when(tp) / HZ; in do_tcp_getsockopt()
3726 val = keepalive_probes(tp); in do_tcp_getsockopt()
3732 val = tp->linger2; in do_tcp_getsockopt()
3741 val = tp->window_clamp; in do_tcp_getsockopt()
3824 val = tp->thin_lto; in do_tcp_getsockopt()
3832 val = tp->repair; in do_tcp_getsockopt()
3836 if (tp->repair) in do_tcp_getsockopt()
3837 val = tp->repair_queue; in do_tcp_getsockopt()
3851 if (!tp->repair) in do_tcp_getsockopt()
3854 opt.snd_wl1 = tp->snd_wl1; in do_tcp_getsockopt()
3855 opt.snd_wnd = tp->snd_wnd; in do_tcp_getsockopt()
3856 opt.max_window = tp->max_window; in do_tcp_getsockopt()
3857 opt.rcv_wnd = tp->rcv_wnd; in do_tcp_getsockopt()
3858 opt.rcv_wup = tp->rcv_wup; in do_tcp_getsockopt()
3865 if (tp->repair_queue == TCP_SEND_QUEUE) in do_tcp_getsockopt()
3866 val = tp->write_seq; in do_tcp_getsockopt()
3867 else if (tp->repair_queue == TCP_RECV_QUEUE) in do_tcp_getsockopt()
3868 val = tp->rcv_nxt; in do_tcp_getsockopt()
3882 val = tp->fastopen_connect; in do_tcp_getsockopt()
3886 val = tp->fastopen_no_cookie; in do_tcp_getsockopt()
3890 val = tp->tcp_tx_delay; in do_tcp_getsockopt()
3894 val = tcp_time_stamp_raw() + tp->tsoffset; in do_tcp_getsockopt()
3897 val = tp->notsent_lowat; in do_tcp_getsockopt()
3900 val = tp->recvmsg_inq; in do_tcp_getsockopt()
3903 val = tp->save_syn; in do_tcp_getsockopt()
3910 if (tp->saved_syn) { in do_tcp_getsockopt()
3911 if (len < tcp_saved_syn_len(tp->saved_syn)) { in do_tcp_getsockopt()
3912 if (put_user(tcp_saved_syn_len(tp->saved_syn), in do_tcp_getsockopt()
3920 len = tcp_saved_syn_len(tp->saved_syn); in do_tcp_getsockopt()
3925 if (copy_to_user(optval, tp->saved_syn->data, len)) { in do_tcp_getsockopt()
3929 tcp_saved_syn_free(tp); in do_tcp_getsockopt()
4099 const struct tcphdr *tp = tcp_hdr(skb); in tcp_md5_hash_skb_data() local
4109 sg_set_buf(&sg, ((u8 *) tp) + header_len, head_data_len); in tcp_md5_hash_skb_data()