Commit 27390db9 authored by Miroslav Lichvar's avatar Miroslav Lichvar Committed by David S. Miller
Browse files

testptp: add option to enable external timestamping edges



Some drivers (e.g. ice) don't enable any edges by default when external
timestamping is requested by the PTP_EXTTS_REQUEST ioctl, which makes
testptp -e unusable for testing hardware supported by these drivers.

Add -E option to specify if the rising, falling, or both edges should
be enabled by the ioctl.

Signed-off-by: default avatarMiroslav Lichvar <mlichvar@redhat.com>
Cc: Richard Cochran <richardcochran@gmail.com>
Cc: Jacob Keller <jacob.e.keller@intel.com>
Reviewed-by: default avatarVadim Fedorenko <vadim.fedorenko@linux.dev>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 5e95c0a3
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -120,6 +120,7 @@ static void usage(char *progname)
		" -c         query the ptp clock's capabilities\n"
		" -d name    device to open\n"
		" -e val     read 'val' external time stamp events\n"
		" -E val     enable rising (1), falling (2), or both (3) edges\n"
		" -f val     adjust the ptp clock frequency by 'val' ppb\n"
		" -F chan    Enable single channel mask and keep device open for debugfs verification.\n"
		" -g         get the ptp clock time\n"
@@ -178,6 +179,7 @@ int main(int argc, char *argv[])
	int adjphase = 0;
	int capabilities = 0;
	int extts = 0;
	int edge = 0;
	int flagtest = 0;
	int gettime = 0;
	int index = 0;
@@ -202,7 +204,7 @@ int main(int argc, char *argv[])

	progname = strrchr(argv[0], '/');
	progname = progname ? 1+progname : argv[0];
	while (EOF != (c = getopt(argc, argv, "cd:e:f:F:ghH:i:k:lL:n:o:p:P:rsSt:T:w:x:Xy:z"))) {
	while (EOF != (c = getopt(argc, argv, "cd:e:E:f:F:ghH:i:k:lL:n:o:p:P:rsSt:T:w:x:Xy:z"))) {
		switch (c) {
		case 'c':
			capabilities = 1;
@@ -213,6 +215,11 @@ int main(int argc, char *argv[])
		case 'e':
			extts = atoi(optarg);
			break;
		case 'E':
			edge = atoi(optarg);
			edge = (edge & 1 ? PTP_RISING_EDGE : 0) |
				(edge & 2 ? PTP_FALLING_EDGE : 0);
			break;
		case 'f':
			adjfreq = atoi(optarg);
			break;
@@ -444,7 +451,7 @@ int main(int argc, char *argv[])
		if (!readonly) {
			memset(&extts_request, 0, sizeof(extts_request));
			extts_request.index = index;
			extts_request.flags = PTP_ENABLE_FEATURE;
			extts_request.flags = PTP_ENABLE_FEATURE | edge;
			if (ioctl(fd, PTP_EXTTS_REQUEST, &extts_request)) {
				perror("PTP_EXTTS_REQUEST");
				extts = 0;