|
@@ -469,8 +469,10 @@ void tcp_init_transfer(struct sock *sk, int bpf_op)
|
|
tcp_init_buffer_space(sk);
|
|
tcp_init_buffer_space(sk);
|
|
}
|
|
}
|
|
|
|
|
|
-static void tcp_tx_timestamp(struct sock *sk, u16 tsflags, struct sk_buff *skb)
|
|
|
|
|
|
+static void tcp_tx_timestamp(struct sock *sk, u16 tsflags)
|
|
{
|
|
{
|
|
|
|
+ struct sk_buff *skb = tcp_write_queue_tail(sk);
|
|
|
|
+
|
|
if (tsflags && skb) {
|
|
if (tsflags && skb) {
|
|
struct skb_shared_info *shinfo = skb_shinfo(skb);
|
|
struct skb_shared_info *shinfo = skb_shinfo(skb);
|
|
struct tcp_skb_cb *tcb = TCP_SKB_CB(skb);
|
|
struct tcp_skb_cb *tcb = TCP_SKB_CB(skb);
|
|
@@ -1041,7 +1043,7 @@ wait_for_memory:
|
|
|
|
|
|
out:
|
|
out:
|
|
if (copied) {
|
|
if (copied) {
|
|
- tcp_tx_timestamp(sk, sk->sk_tsflags, tcp_write_queue_tail(sk));
|
|
|
|
|
|
+ tcp_tx_timestamp(sk, sk->sk_tsflags);
|
|
if (!(flags & MSG_SENDPAGE_NOTLAST))
|
|
if (!(flags & MSG_SENDPAGE_NOTLAST))
|
|
tcp_push(sk, flags, mss_now, tp->nonagle, size_goal);
|
|
tcp_push(sk, flags, mss_now, tp->nonagle, size_goal);
|
|
}
|
|
}
|
|
@@ -1418,7 +1420,7 @@ wait_for_memory:
|
|
|
|
|
|
out:
|
|
out:
|
|
if (copied) {
|
|
if (copied) {
|
|
- tcp_tx_timestamp(sk, sockc.tsflags, tcp_write_queue_tail(sk));
|
|
|
|
|
|
+ tcp_tx_timestamp(sk, sockc.tsflags);
|
|
tcp_push(sk, flags, mss_now, tp->nonagle, size_goal);
|
|
tcp_push(sk, flags, mss_now, tp->nonagle, size_goal);
|
|
}
|
|
}
|
|
out_nopush:
|
|
out_nopush:
|