Commit d1a02ed6 authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller

tcp: rename tcp_skb_timestamp()

This helper returns a 32bit TCP TSval from skb->tstamp.

As we are going to support usec or ms units soon, rename it
to tcp_skb_timestamp_ts() and add a boolean to select the unit.
Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 16cf6477
...@@ -837,17 +837,21 @@ static inline u32 tcp_stamp_us_delta(u64 t1, u64 t0) ...@@ -837,17 +837,21 @@ static inline u32 tcp_stamp_us_delta(u64 t1, u64 t0)
return max_t(s64, t1 - t0, 0); return max_t(s64, t1 - t0, 0);
} }
static inline u32 tcp_skb_timestamp(const struct sk_buff *skb)
{
return tcp_ns_to_ts(skb->skb_mstamp_ns);
}
/* provide the departure time in us unit */ /* provide the departure time in us unit */
static inline u64 tcp_skb_timestamp_us(const struct sk_buff *skb) static inline u64 tcp_skb_timestamp_us(const struct sk_buff *skb)
{ {
return div_u64(skb->skb_mstamp_ns, NSEC_PER_USEC); return div_u64(skb->skb_mstamp_ns, NSEC_PER_USEC);
} }
/* Provide skb TSval in usec or ms unit */
static inline u32 tcp_skb_timestamp_ts(bool usec_ts, const struct sk_buff *skb)
{
if (usec_ts)
return tcp_skb_timestamp_us(skb);
return div_u64(skb->skb_mstamp_ns, NSEC_PER_MSEC);
}
static inline u32 tcp_tw_tsval(const struct tcp_timewait_sock *tcptw) static inline u32 tcp_tw_tsval(const struct tcp_timewait_sock *tcptw)
{ {
return tcp_clock_ts(false) + tcptw->tw_ts_offset; return tcp_clock_ts(false) + tcptw->tw_ts_offset;
......
...@@ -2442,7 +2442,7 @@ static bool tcp_skb_spurious_retrans(const struct tcp_sock *tp, ...@@ -2442,7 +2442,7 @@ static bool tcp_skb_spurious_retrans(const struct tcp_sock *tp,
const struct sk_buff *skb) const struct sk_buff *skb)
{ {
return (TCP_SKB_CB(skb)->sacked & TCPCB_RETRANS) && return (TCP_SKB_CB(skb)->sacked & TCPCB_RETRANS) &&
tcp_tsopt_ecr_before(tp, tcp_skb_timestamp(skb)); tcp_tsopt_ecr_before(tp, tcp_skb_timestamp_ts(false, skb));
} }
/* Nothing was retransmitted or returned timestamp is less /* Nothing was retransmitted or returned timestamp is less
......
...@@ -799,7 +799,7 @@ static unsigned int tcp_syn_options(struct sock *sk, struct sk_buff *skb, ...@@ -799,7 +799,7 @@ static unsigned int tcp_syn_options(struct sock *sk, struct sk_buff *skb,
if (likely(READ_ONCE(sock_net(sk)->ipv4.sysctl_tcp_timestamps) && !*md5)) { if (likely(READ_ONCE(sock_net(sk)->ipv4.sysctl_tcp_timestamps) && !*md5)) {
opts->options |= OPTION_TS; opts->options |= OPTION_TS;
opts->tsval = tcp_skb_timestamp(skb) + tp->tsoffset; opts->tsval = tcp_skb_timestamp_ts(false, skb) + tp->tsoffset;
opts->tsecr = tp->rx_opt.ts_recent; opts->tsecr = tp->rx_opt.ts_recent;
remaining -= TCPOLEN_TSTAMP_ALIGNED; remaining -= TCPOLEN_TSTAMP_ALIGNED;
} }
...@@ -884,7 +884,7 @@ static unsigned int tcp_synack_options(const struct sock *sk, ...@@ -884,7 +884,7 @@ static unsigned int tcp_synack_options(const struct sock *sk,
} }
if (likely(ireq->tstamp_ok)) { if (likely(ireq->tstamp_ok)) {
opts->options |= OPTION_TS; opts->options |= OPTION_TS;
opts->tsval = tcp_skb_timestamp(skb) + tcp_rsk(req)->ts_off; opts->tsval = tcp_skb_timestamp_ts(false, skb) + tcp_rsk(req)->ts_off;
opts->tsecr = READ_ONCE(req->ts_recent); opts->tsecr = READ_ONCE(req->ts_recent);
remaining -= TCPOLEN_TSTAMP_ALIGNED; remaining -= TCPOLEN_TSTAMP_ALIGNED;
} }
...@@ -943,7 +943,7 @@ static unsigned int tcp_established_options(struct sock *sk, struct sk_buff *skb ...@@ -943,7 +943,7 @@ static unsigned int tcp_established_options(struct sock *sk, struct sk_buff *skb
if (likely(tp->rx_opt.tstamp_ok)) { if (likely(tp->rx_opt.tstamp_ok)) {
opts->options |= OPTION_TS; opts->options |= OPTION_TS;
opts->tsval = skb ? tcp_skb_timestamp(skb) + tp->tsoffset : 0; opts->tsval = skb ? tcp_skb_timestamp_ts(false, skb) + tp->tsoffset : 0;
opts->tsecr = tp->rx_opt.ts_recent; opts->tsecr = tp->rx_opt.ts_recent;
size += TCPOLEN_TSTAMP_ALIGNED; size += TCPOLEN_TSTAMP_ALIGNED;
} }
...@@ -3379,7 +3379,7 @@ int tcp_retransmit_skb(struct sock *sk, struct sk_buff *skb, int segs) ...@@ -3379,7 +3379,7 @@ int tcp_retransmit_skb(struct sock *sk, struct sk_buff *skb, int segs)
/* Save stamp of the first (attempted) retransmit. */ /* Save stamp of the first (attempted) retransmit. */
if (!tp->retrans_stamp) if (!tp->retrans_stamp)
tp->retrans_stamp = tcp_skb_timestamp(skb); tp->retrans_stamp = tcp_skb_timestamp_ts(false, skb);
if (tp->undo_retrans < 0) if (tp->undo_retrans < 0)
tp->undo_retrans = 0; tp->undo_retrans = 0;
......
...@@ -479,7 +479,7 @@ static bool tcp_rtx_probe0_timed_out(const struct sock *sk, ...@@ -479,7 +479,7 @@ static bool tcp_rtx_probe0_timed_out(const struct sock *sk,
return false; return false;
rtx_delta = (u32)msecs_to_jiffies(tcp_time_stamp(tp) - rtx_delta = (u32)msecs_to_jiffies(tcp_time_stamp(tp) -
(tp->retrans_stamp ?: tcp_skb_timestamp(skb))); (tp->retrans_stamp ?: tcp_skb_timestamp_ts(false, skb)));
return rtx_delta > timeout; return rtx_delta > timeout;
} }
...@@ -534,7 +534,7 @@ void tcp_retransmit_timer(struct sock *sk) ...@@ -534,7 +534,7 @@ void tcp_retransmit_timer(struct sock *sk)
struct inet_sock *inet = inet_sk(sk); struct inet_sock *inet = inet_sk(sk);
u32 rtx_delta; u32 rtx_delta;
rtx_delta = tcp_time_stamp(tp) - (tp->retrans_stamp ?: tcp_skb_timestamp(skb)); rtx_delta = tcp_time_stamp(tp) - (tp->retrans_stamp ?: tcp_skb_timestamp_ts(false, skb));
if (sk->sk_family == AF_INET) { if (sk->sk_family == AF_INET) {
net_dbg_ratelimited("Probing zero-window on %pI4:%u/%u, seq=%u:%u, recv %ums ago, lasting %ums\n", net_dbg_ratelimited("Probing zero-window on %pI4:%u/%u, seq=%u:%u, recv %ums ago, lasting %ums\n",
&inet->inet_daddr, ntohs(inet->inet_dport), &inet->inet_daddr, ntohs(inet->inet_dport),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment