Message ID | 1292916171.2627.184.camel@edumazet-laptop |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
On Tue, Dec 21, 2010 at 3:22 PM, Eric Dumazet <eric.dumazet@gmail.com> wrote: > Le vendredi 17 décembre 2010 à 10:26 +0100, Eric Dumazet a écrit : > >> >> I think we can add this after latest Changli patch : >> >> He does one skb_clone() before calling the sniffers. >> We could set timestamp on this clone, instead of original skb. >> >> Problem solved. >> > > [PATCH net-next-2.6] net: timestamp cloned packet in dev_queue_xmit_nit > > Now we do one clone of skb if at least one sniffer might take packet, > we also can do the skb timestamping on the clone and let original packet > unchanged. > > This is a generalization of commit 8caf153974f2 (net: sch_netem: Fix an > inconsistency in ingress netem timestamps.) > > This way, we can have a good idea when packets are delivered to our > stack (tcpdump -i ifb0), while a tcpdump on original device gives > timestamps right before ingressing. > > This also speedup our stack, avoiding taking timestamps if not needed. > > Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> > Cc: Changli Gao <xiaosuo@gmail.com> > Cc: Patrick McHardy <kaber@trash.net> > Cc: Jarek Poplawski <jarkao2@gmail.com> Acked-by: Changli Gao <xiaosuo@gmail.com>
From: Changli Gao <xiaosuo@gmail.com> Date: Tue, 21 Dec 2010 15:56:17 +0800 > On Tue, Dec 21, 2010 at 3:22 PM, Eric Dumazet <eric.dumazet@gmail.com> wrote: >> Le vendredi 17 décembre 2010 à 10:26 +0100, Eric Dumazet a écrit : >> [PATCH net-next-2.6] net: timestamp cloned packet in dev_queue_xmit_nit >> >> Now we do one clone of skb if at least one sniffer might take packet, >> we also can do the skb timestamping on the clone and let original packet >> unchanged. >> >> This is a generalization of commit 8caf153974f2 (net: sch_netem: Fix an >> inconsistency in ingress netem timestamps.) >> >> This way, we can have a good idea when packets are delivered to our >> stack (tcpdump -i ifb0), while a tcpdump on original device gives >> timestamps right before ingressing. >> >> This also speedup our stack, avoiding taking timestamps if not needed. >> >> Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> >> Cc: Changli Gao <xiaosuo@gmail.com> >> Cc: Patrick McHardy <kaber@trash.net> >> Cc: Jarek Poplawski <jarkao2@gmail.com> > > Acked-by: Changli Gao <xiaosuo@gmail.com> Applied, thanks. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/core/dev.c b/net/core/dev.c index 5987729..a215269 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -1547,13 +1547,6 @@ static void dev_queue_xmit_nit(struct sk_buff *skb, struct net_device *dev) struct sk_buff *skb2 = NULL; struct packet_type *pt_prev = NULL; -#ifdef CONFIG_NET_CLS_ACT - if (!(skb->tstamp.tv64 && (G_TC_FROM(skb->tc_verd) & AT_INGRESS))) - net_timestamp_set(skb); -#else - net_timestamp_set(skb); -#endif - rcu_read_lock(); list_for_each_entry_rcu(ptype, &ptype_all, list) { /* Never send packets back to the socket @@ -1572,6 +1565,8 @@ static void dev_queue_xmit_nit(struct sk_buff *skb, struct net_device *dev) if (!skb2) break; + net_timestamp_set(skb2); + /* skb->nh should be correctly set by sender, so that the second statement is just protection against buggy protocols.