Message ID | 20180307011230.24001-6-jesus.sanchez-palencia@intel.com |
---|---|
State | RFC, archived |
Delegated to: | David Miller |
Headers | show |
Series | Time based packet transmission | expand |
On Tue, Mar 6, 2018 at 8:12 PM, Jesus Sanchez-Palencia <jesus.sanchez-palencia@intel.com> wrote: > From: Richard Cochran <rcochran@linutronix.de> > > For raw packets, copy the desired future transmit time from the CMSG > cookie into the skb. > > Signed-off-by: Richard Cochran <rcochran@linutronix.de> > Signed-off-by: Jesus Sanchez-Palencia <jesus.sanchez-palencia@intel.com> > --- > net/ipv4/raw.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c > index 54648d20bf0f..8e05970ba7c4 100644 > --- a/net/ipv4/raw.c > +++ b/net/ipv4/raw.c > @@ -381,6 +381,7 @@ static int raw_send_hdrinc(struct sock *sk, struct flowi4 *fl4, > > skb->priority = sk->sk_priority; > skb->mark = sk->sk_mark; > + skb->tstamp = sockc->transmit_time; This implements the feature only for the hdrincl case and silently drops the txtime request on other raw sockets (incl. corked). At the least, should probably fail if sockc.transmit_time is non-zero and the hdrincl path is not taken. Or implement by passing through inet_cork and set in __ip_make_skb. Then be careful to ignore the field for other protocols, where it may be uninitialized.
diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c index 54648d20bf0f..8e05970ba7c4 100644 --- a/net/ipv4/raw.c +++ b/net/ipv4/raw.c @@ -381,6 +381,7 @@ static int raw_send_hdrinc(struct sock *sk, struct flowi4 *fl4, skb->priority = sk->sk_priority; skb->mark = sk->sk_mark; + skb->tstamp = sockc->transmit_time; skb_dst_set(skb, &rt->dst); *rtp = NULL; @@ -562,6 +563,7 @@ static int raw_sendmsg(struct sock *sk, struct msghdr *msg, size_t len) } ipc.sockc.tsflags = sk->sk_tsflags; + ipc.sockc.transmit_time = 0; ipc.addr = inet->inet_saddr; ipc.opt = NULL; ipc.tx_flags = 0;