Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 9 Jun 2010 14:44:47 -0400
From:      Jung-uk Kim <jkim@FreeBSD.org>
To:        freebsd-net@FreeBSD.org
Subject:   [RFC] BPF timestamping
Message-ID:  <201006091444.50560.jkim@FreeBSD.org>

next in thread | raw e-mail | index | archive | help
bpf(4) can only timestamp packets with microtime(9).  I want to expand 
it to be able to use different format and resolution.  The patch is 
here:

http://people.freebsd.org/~jkim/bpf_tstamp.diff

With this patch, we can select different format and resolution of the 
timestamps.  It is done via ioctl(2) with BIOCSTSTAMP command.  
Similarly, you can get the current format and resolution with 
BIOCGTSTAMP command.  Currently, the following functions are 
available:

	BPF_T_MICROTIME		microtime(9)
	BPF_T_NANOTIME		nanotime(9)
	BPF_T_BINTIME		bintime(9)
	BPF_T_MICROTIME_FAST	getmicrotime(9)
	BPF_T_NANOTIME_FAST	getnanotime(9)
	BPF_T_BINTIME_FAST	getbintime(9)
	BPF_T_NONE		ignore time stamps

(Note: Additionally, there is an experimental machanism to tag packets 
with timestamps in struct bintime format via mbuf_tags(9) from lower 
layer, e.g., device driver.  However, I didn't test it because I 
wasn't sure whether this is the right thing to do.)

While I was here, I moved the bogus SIZEOF_BPF_HDR macro into bpf.c 
and tried to make it little bit more correct.  For example, the 
32-bit shim should be able to handle alignment more properly for 
non-Ethernet DLTs.  I tried my best not to break ABI/API (especially 
for 32-bit platforms) and relevant places are all marked with 
BURN_BRIDGES.

What do you think?  Is it worth committing?

Thanks,

Jung-uk Kim



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201006091444.50560.jkim>