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 --- |