Skip to content

Commit

Permalink
net-timestamp: cumulative tcp timestamping fixes
Browse files Browse the repository at this point in the history
A set of small fixes pointed out just after the merge:
- make tcp_tx_timestamp static
- make tcp_gso_tstamp static
- use before() to compare TCP seqno, instead of cast to u64
- add tstamp to tx_flags in GSO, instead of overwrite tx_flags
- record skb_shinfo(skb)->tskey for all timestamps, also HW.
- optimization in tcp_tx_timestamp:
  call sock_tx_timestamp only if a tstamp option is set.

Signed-off-by: Willem de Bruijn <[email protected]>
Fixes: 4ed2d76 ("net-timestamp: TCP timestamping")
Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
wdebruij authored and davem330 committed Aug 6, 2014
1 parent be136ed commit f066e2b
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 9 deletions.
12 changes: 7 additions & 5 deletions net/ipv4/tcp.c
Original file line number Diff line number Diff line change
Expand Up @@ -426,13 +426,15 @@ void tcp_init_sock(struct sock *sk)
}
EXPORT_SYMBOL(tcp_init_sock);

void tcp_tx_timestamp(struct sock *sk, struct sk_buff *skb)
static void tcp_tx_timestamp(struct sock *sk, struct sk_buff *skb)
{
struct skb_shared_info *shinfo = skb_shinfo(skb);
if (sk->sk_tsflags) {
struct skb_shared_info *shinfo = skb_shinfo(skb);

sock_tx_timestamp(sk, &shinfo->tx_flags);
if (shinfo->tx_flags & SKBTX_ANY_SW_TSTAMP)
shinfo->tskey = TCP_SKB_CB(skb)->seq + skb->len - 1;
sock_tx_timestamp(sk, &shinfo->tx_flags);
if (shinfo->tx_flags & SKBTX_ANY_TSTAMP)
shinfo->tskey = TCP_SKB_CB(skb)->seq + skb->len - 1;
}
}

/*
Expand Down
8 changes: 4 additions & 4 deletions net/ipv4/tcp_offload.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@
#include <net/tcp.h>
#include <net/protocol.h>

void tcp_gso_tstamp(struct sk_buff *skb, unsigned int ts_seq, unsigned int seq,
unsigned int mss)
static void tcp_gso_tstamp(struct sk_buff *skb, unsigned int ts_seq,
unsigned int seq, unsigned int mss)
{
while (skb) {
if (ts_seq < (__u64) seq + mss) {
skb_shinfo(skb)->tx_flags = SKBTX_SW_TSTAMP;
if (before(ts_seq, seq + mss)) {
skb_shinfo(skb)->tx_flags |= SKBTX_SW_TSTAMP;
skb_shinfo(skb)->tskey = ts_seq;
return;
}
Expand Down

0 comments on commit f066e2b

Please sign in to comment.