tcp_output.c (05e22e8395058745bd0312bc488b522197852aff) tcp_output.c (dd2e0b86fc4ee146ac8f3275833d0187efeb950a)
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * INET An implementation of the TCP/IP protocol suite for the LINUX
4 * operating system. INET is implemented using the BSD Socket
5 * interface as the means of communication with the user level.
6 *
7 * Implementation of the Transmission Control Protocol(TCP).
8 *

--- 1052 unchanged lines hidden (view full) ---

1061 tp->tcp_wstamp_ns += len_ns;
1062 }
1063 }
1064 list_move_tail(&skb->tcp_tsorted_anchor, &tp->tsorted_sent_queue);
1065}
1066
1067INDIRECT_CALLABLE_DECLARE(int ip_queue_xmit(struct sock *sk, struct sk_buff *skb, struct flowi *fl));
1068INDIRECT_CALLABLE_DECLARE(int inet6_csk_xmit(struct sock *sk, struct sk_buff *skb, struct flowi *fl));
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * INET An implementation of the TCP/IP protocol suite for the LINUX
4 * operating system. INET is implemented using the BSD Socket
5 * interface as the means of communication with the user level.
6 *
7 * Implementation of the Transmission Control Protocol(TCP).
8 *

--- 1052 unchanged lines hidden (view full) ---

1061 tp->tcp_wstamp_ns += len_ns;
1062 }
1063 }
1064 list_move_tail(&skb->tcp_tsorted_anchor, &tp->tsorted_sent_queue);
1065}
1066
1067INDIRECT_CALLABLE_DECLARE(int ip_queue_xmit(struct sock *sk, struct sk_buff *skb, struct flowi *fl));
1068INDIRECT_CALLABLE_DECLARE(int inet6_csk_xmit(struct sock *sk, struct sk_buff *skb, struct flowi *fl));
1069INDIRECT_CALLABLE_DECLARE(void tcp_v4_send_check(struct sock *sk, struct sk_buff *skb));
1069
1070/* This routine actually transmits TCP packets queued in by
1071 * tcp_do_sendmsg(). This is used by both the initial
1072 * transmission and possible later retransmissions.
1073 * All SKB's seen here are completely headerless. It is our
1074 * job to build the TCP header, and pass the packet down to
1075 * IP so it can do the same plus pass the packet off to the
1076 * device.

--- 128 unchanged lines hidden (view full) ---

1205 /* Calculate the MD5 hash, as we have all we need now */
1206 if (md5) {
1207 sk_nocaps_add(sk, NETIF_F_GSO_MASK);
1208 tp->af_specific->calc_md5_hash(opts.hash_location,
1209 md5, sk, skb);
1210 }
1211#endif
1212
1070
1071/* This routine actually transmits TCP packets queued in by
1072 * tcp_do_sendmsg(). This is used by both the initial
1073 * transmission and possible later retransmissions.
1074 * All SKB's seen here are completely headerless. It is our
1075 * job to build the TCP header, and pass the packet down to
1076 * IP so it can do the same plus pass the packet off to the
1077 * device.

--- 128 unchanged lines hidden (view full) ---

1206 /* Calculate the MD5 hash, as we have all we need now */
1207 if (md5) {
1208 sk_nocaps_add(sk, NETIF_F_GSO_MASK);
1209 tp->af_specific->calc_md5_hash(opts.hash_location,
1210 md5, sk, skb);
1211 }
1212#endif
1213
1213 icsk->icsk_af_ops->send_check(sk, skb);
1214 INDIRECT_CALL_INET(icsk->icsk_af_ops->send_check,
1215 tcp_v6_send_check, tcp_v4_send_check,
1216 sk, skb);
1214
1215 if (likely(tcb->tcp_flags & TCPHDR_ACK))
1216 tcp_event_ack_sent(sk, tcp_skb_pcount(skb), rcv_nxt);
1217
1218 if (skb->len != tcp_header_size) {
1219 tcp_event_data_sent(tp, sk);
1220 tp->data_segs_out += tcp_skb_pcount(skb);
1221 tp->bytes_sent += skb->len - tcp_header_size;

--- 2716 unchanged lines hidden ---
1217
1218 if (likely(tcb->tcp_flags & TCPHDR_ACK))
1219 tcp_event_ack_sent(sk, tcp_skb_pcount(skb), rcv_nxt);
1220
1221 if (skb->len != tcp_header_size) {
1222 tcp_event_data_sent(tp, sk);
1223 tp->data_segs_out += tcp_skb_pcount(skb);
1224 tp->bytes_sent += skb->len - tcp_header_size;

--- 2716 unchanged lines hidden ---