tcp: provide earliest departure time in skb->tstamp
Switch internal TCP skb->skb_mstamp to skb->skb_mstamp_ns, from usec units to nsec units. Do not clear skb->tstamp before entering IP stacks in TX, so that qdisc or devices can implement pacing based on the earliest departure time instead of socket sk->sk_pacing_rate Packets are fed with tcp_wstamp_ns, and following patch will update tcp_wstamp_ns when both TCP and sch_fq switch to the earliest departure time mechanism. Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
9799ccb0e9
commit
d3edd06ea8
@ -761,13 +761,13 @@ static inline u32 tcp_stamp_us_delta(u64 t1, u64 t0)
|
||||
|
||||
static inline u32 tcp_skb_timestamp(const struct sk_buff *skb)
|
||||
{
|
||||
return div_u64(skb->skb_mstamp, USEC_PER_SEC / TCP_TS_HZ);
|
||||
return div_u64(skb->skb_mstamp_ns, NSEC_PER_SEC / TCP_TS_HZ);
|
||||
}
|
||||
|
||||
/* provide the departure time in us unit */
|
||||
static inline u64 tcp_skb_timestamp_us(const struct sk_buff *skb)
|
||||
{
|
||||
return skb->skb_mstamp;
|
||||
return div_u64(skb->skb_mstamp_ns, NSEC_PER_USEC);
|
||||
}
|
||||
|
||||
|
||||
@ -813,7 +813,7 @@ struct tcp_skb_cb {
|
||||
#define TCPCB_SACKED_RETRANS 0x02 /* SKB retransmitted */
|
||||
#define TCPCB_LOST 0x04 /* SKB is lost */
|
||||
#define TCPCB_TAGBITS 0x07 /* All tag bits */
|
||||
#define TCPCB_REPAIRED 0x10 /* SKB repaired (no skb_mstamp) */
|
||||
#define TCPCB_REPAIRED 0x10 /* SKB repaired (no skb_mstamp_ns) */
|
||||
#define TCPCB_EVER_RETRANS 0x80 /* Ever retransmitted frame */
|
||||
#define TCPCB_RETRANS (TCPCB_SACKED_RETRANS|TCPCB_EVER_RETRANS| \
|
||||
TCPCB_REPAIRED)
|
||||
|
Reference in New Issue
Block a user