tools/testing/selftests/net/rxtimestamp.c

Source file repositories/reference/linux-study-clean/tools/testing/selftests/net/rxtimestamp.c

File Facts

System
Linux kernel
Corpus path
tools/testing/selftests/net/rxtimestamp.c
Extension
.c
Size
10308 bytes
Lines
449
Domain
Support Tooling And Documentation
Bucket
tools
Inferred role
Support Tooling And Documentation: implementation source
Status
source implementation candidate

Why This File Exists

Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.

Dependency Surface

Detected Declarations

Annotated Snippet

struct options {
	int so_timestamp;
	int so_timestampns;
	int so_timestamping;
};

struct tstamps {
	bool tstamp;
	bool tstampns;
	bool swtstamp;
	bool hwtstamp;
};

struct socket_type {
	char *friendly_name;
	int type;
	int protocol;
	bool enabled;
};

struct test_case {
	struct options sockopt;
	struct tstamps expected;
	bool enabled;
	bool warn_on_fail;
};

struct sof_flag {
	int mask;
	char *name;
};

static struct sof_flag sof_flags[] = {
#define SOF_FLAG(f) { f, #f }
	SOF_FLAG(SOF_TIMESTAMPING_SOFTWARE),
	SOF_FLAG(SOF_TIMESTAMPING_RX_SOFTWARE),
	SOF_FLAG(SOF_TIMESTAMPING_RX_HARDWARE),
	SOF_FLAG(SOF_TIMESTAMPING_OPT_RX_FILTER),
	SOF_FLAG(SOF_TIMESTAMPING_RAW_HARDWARE),
};

static struct socket_type socket_types[] = {
	{ "ip",		SOCK_RAW,	IPPROTO_EGP },
	{ "udp",	SOCK_DGRAM,	IPPROTO_UDP },
	{ "tcp",	SOCK_STREAM,	IPPROTO_TCP },
};

static struct test_case test_cases[] = {
	{ {}, {} },
	{
		{ .so_timestamp = 1 },
		{ .tstamp = true }
	},
	{
		{ .so_timestampns = 1 },
		{ .tstampns = true }
	},
	{
		{ .so_timestamp = 1, .so_timestampns = 1 },
		{ .tstampns = true }
	},
	{
		{ .so_timestamping = SOF_TIMESTAMPING_RX_SOFTWARE },
		{}
	},
	{
		/* Loopback device does not support hw timestamps. */
		{ .so_timestamping = SOF_TIMESTAMPING_RX_HARDWARE },
		{}
	},
	{
		{ .so_timestamping = SOF_TIMESTAMPING_SOFTWARE },
		.warn_on_fail = true
	},
	{
		{ .so_timestamping = SOF_TIMESTAMPING_RX_SOFTWARE
			| SOF_TIMESTAMPING_RX_HARDWARE },
		{}
	},
	{
		{ .so_timestamping = SOF_TIMESTAMPING_RAW_HARDWARE
			| SOF_TIMESTAMPING_OPT_RX_FILTER },
		{}
	},
	{
		{ .so_timestamping = SOF_TIMESTAMPING_SOFTWARE
			| SOF_TIMESTAMPING_OPT_RX_FILTER },
		{}
	},
	{

Annotation

Implementation Notes