All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Hemminger <stephen@networkplumber.org>
To: Quentin Armitage <quentin@armitage.org.uk>
Cc: Reshma Pattan <reshma.pattan@intel.com>,
	Ray Kinsella <mdr@ashroe.eu>,
	dev@dpdk.org, stable@dpdk.org
Subject: Re: [PATCH v2] libpcapng: fix timestamp wrapping in output files
Date: Tue, 17 May 2022 14:04:40 -0700	[thread overview]
Message-ID: <20220517140440.44776434@hermes.local> (raw)
In-Reply-To: <20220517100115.157888-1-quentin@armitage.org.uk>

On Tue, 17 May 2022 11:01:15 +0100
Quentin Armitage <quentin@armitage.org.uk> wrote:

> In pcap_tsc_to_ns(), delta * NSEC_PER_SEC will overflow approx 8
> seconds after pcap_init is called when using a TSC with a frequency
> of 2.5GHz.
> 
> To avoid the overflow, update the saved time and TSC value once
> delta >= tsc_hz.
> 
> Fixes: 8d23ce8f5ee ("pcapng: add new library for writing pcapng files")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Quentin Armitage <quentin@armitage.org.uk>
> ---
> v2:
>   - Don't call clock_gettime() in fast path
>   - Update pcapng_time.ns and pcapng_time.cycles to ensure delta < tsc_hz
>   - Stop using constructor to initialise pcapng_time.tsc_hz since
>      it is not initialised until rte_eal_init() is called
>   - use mean value of TSC before and after call to clock_gettime()
>   - only call rte_get_tsc_hz() once
>   - use rte_reciprocal functions instead of division
> 
>  lib/pcapng/rte_pcapng.c | 47 ++++++++++++++++++++++++++++++++++++-----
>  1 file changed, 42 insertions(+), 5 deletions(-)

Side note: looked at an alternative using the timestamp offset option described in the
PCAPNG IETF standard.  

if_tsoffset:
	The if_tsoffset option is a 64-bit signed integer value that
specifies an offset (in seconds) that must be added to the timestamp of
each packet to obtain the absolute timestamp of a packet. If the option
is missing, the timestamps stored in the packet MUST be considered
absolute timestamps. The time zone of the offset can be specified with
the option if_tzone.


But not supported even by current wireshark so not useful.


      parent reply	other threads:[~2022-05-17 21:04 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-07 16:12 [PATCH] libpcapng: fix timestamp wrapping in output files Quentin Armitage
2022-05-11 16:08 ` Stephen Hemminger
2022-05-11 16:46 ` Stephen Hemminger
2022-05-14 17:14   ` Quentin Armitage
2022-05-16 13:26     ` Stephen Hemminger
2022-05-17 10:01   ` [PATCH v2] " Quentin Armitage
2022-05-17 15:15     ` Stephen Hemminger
2022-06-01 14:38       ` Thomas Monjalon
2022-05-17 21:04     ` Stephen Hemminger [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220517140440.44776434@hermes.local \
    --to=stephen@networkplumber.org \
    --cc=dev@dpdk.org \
    --cc=mdr@ashroe.eu \
    --cc=quentin@armitage.org.uk \
    --cc=reshma.pattan@intel.com \
    --cc=stable@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.