parent
0c71bd4bc2
commit
3cb7a15496
82
linuxptp-deftxtout.patch
Normal file
82
linuxptp-deftxtout.patch
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
commit 1a2dfe9b00b79a59acf905476bbc33c74d5770a3
|
||||||
|
Author: Jacob Keller <jacob.e.keller@intel.com>
|
||||||
|
Date: Thu Jul 8 12:59:30 2021 -0700
|
||||||
|
|
||||||
|
Increase the default tx_timestamp_timeout to 10
|
||||||
|
|
||||||
|
The tx_timestamp_timeout configuration defines the number of
|
||||||
|
milliseconds to wait for a Tx timestamp from the kernel stack. This
|
||||||
|
delay is necessary as Tx timestamps are captured after a packet is sent
|
||||||
|
and reported back via the socket error queue.
|
||||||
|
|
||||||
|
The current default is to poll for up to 1 millisecond. In practice, it
|
||||||
|
turns out that this is not always enough time for hardware and software
|
||||||
|
to capture the timestamp and report it back. Some hardware designs
|
||||||
|
require reading timestamps over registers or other slow mechanisms.
|
||||||
|
|
||||||
|
This extra delay results in the timestamp not being sent back to
|
||||||
|
userspace within the default 1 millisecond polling time. If that occurs
|
||||||
|
the following can be seen from ptp4l:
|
||||||
|
|
||||||
|
ptp4l[4756.840]: timed out while polling for tx timestamp
|
||||||
|
ptp4l[4756.840]: increasing tx_timestamp_timeout may correct this issue,
|
||||||
|
but it is likely caused by a driver bug
|
||||||
|
ptp4l[4756.840]: port 1 (p2p1): send sync failed
|
||||||
|
ptp4l[4756.840]: port 1 (p2p1): MASTER to FAULTY on FAULT_DETECTED
|
||||||
|
(FT_UNSPECIFIED)
|
||||||
|
|
||||||
|
This can confuse users because it implies this is a bug, when the
|
||||||
|
correct solution in many cases is to just increase the timeout to
|
||||||
|
a slightly higher value.
|
||||||
|
|
||||||
|
Since we know this is a problem for many drivers and hardware designs,
|
||||||
|
lets increase the default timeout.
|
||||||
|
|
||||||
|
Note that a longer timeout should not affect setups which return the
|
||||||
|
timestamp quickly. On modern kernels, the poll() call will return once
|
||||||
|
the timestamp is reported back to the socket error queue. (On old
|
||||||
|
kernels around the 3.x era the poll will sleep for the full duration
|
||||||
|
before reporting the timestamp, but this is now quite an old kernel
|
||||||
|
release).
|
||||||
|
|
||||||
|
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
|
||||||
|
|
||||||
|
diff --git a/config.c b/config.c
|
||||||
|
index 760b395..03d981e 100644
|
||||||
|
--- a/config.c
|
||||||
|
+++ b/config.c
|
||||||
|
@@ -324,7 +324,7 @@ struct config_item config_tab[] = {
|
||||||
|
GLOB_ITEM_INT("ts2phc.pulsewidth", 500000000, 1000000, 999000000),
|
||||||
|
PORT_ITEM_ENU("tsproc_mode", TSPROC_FILTER, tsproc_enu),
|
||||||
|
GLOB_ITEM_INT("twoStepFlag", 1, 0, 1),
|
||||||
|
- GLOB_ITEM_INT("tx_timestamp_timeout", 1, 1, INT_MAX),
|
||||||
|
+ GLOB_ITEM_INT("tx_timestamp_timeout", 10, 1, INT_MAX),
|
||||||
|
PORT_ITEM_INT("udp_ttl", 1, 1, 255),
|
||||||
|
PORT_ITEM_INT("udp6_scope", 0x0E, 0x00, 0x0F),
|
||||||
|
GLOB_ITEM_STR("uds_address", "/var/run/ptp4l"),
|
||||||
|
diff --git a/configs/default.cfg b/configs/default.cfg
|
||||||
|
index 64ef3bd..d615610 100644
|
||||||
|
--- a/configs/default.cfg
|
||||||
|
+++ b/configs/default.cfg
|
||||||
|
@@ -51,7 +51,7 @@ hybrid_e2e 0
|
||||||
|
inhibit_multicast_service 0
|
||||||
|
net_sync_monitor 0
|
||||||
|
tc_spanning_tree 0
|
||||||
|
-tx_timestamp_timeout 1
|
||||||
|
+tx_timestamp_timeout 10
|
||||||
|
unicast_listen 0
|
||||||
|
unicast_master_table 0
|
||||||
|
unicast_req_duration 3600
|
||||||
|
diff --git a/ptp4l.8 b/ptp4l.8
|
||||||
|
index fe9e150..7ca3474 100644
|
||||||
|
--- a/ptp4l.8
|
||||||
|
+++ b/ptp4l.8
|
||||||
|
@@ -496,7 +496,7 @@ switches all implement this option together with the BMCA.
|
||||||
|
.B tx_timestamp_timeout
|
||||||
|
The number of milliseconds to poll waiting for the tx time stamp from the kernel
|
||||||
|
when a message has recently been sent.
|
||||||
|
-The default is 1.
|
||||||
|
+The default is 10.
|
||||||
|
.TP
|
||||||
|
.B check_fup_sync
|
||||||
|
Because of packet reordering that can occur in the network, in the
|
@ -25,6 +25,8 @@ Source11: https://github.com/mlichvar/clknetsim/archive/%{clknetsim_ver}/clknets
|
|||||||
Patch1: linuxptp-logmsgs.patch
|
Patch1: linuxptp-logmsgs.patch
|
||||||
# add option to set clockClass threshold
|
# add option to set clockClass threshold
|
||||||
Patch2: linuxptp-classthreshold.patch
|
Patch2: linuxptp-classthreshold.patch
|
||||||
|
# increase default TX timestamp timeout to 10 ms
|
||||||
|
Patch3: linuxptp-deftxtout.patch
|
||||||
# limit unicast message rate per address and grant duration
|
# limit unicast message rate per address and grant duration
|
||||||
Patch4: linuxptp-ucastrate.patch
|
Patch4: linuxptp-ucastrate.patch
|
||||||
# fix quoting in ptp4l man page
|
# fix quoting in ptp4l man page
|
||||||
@ -51,6 +53,7 @@ Supporting legacy APIs and other platforms is not a goal.
|
|||||||
%setup -q -a 10 -a 11 -n %{name}-%{!?gitfullver:%{version}}%{?gitfullver}
|
%setup -q -a 10 -a 11 -n %{name}-%{!?gitfullver:%{version}}%{?gitfullver}
|
||||||
%patch1 -p1 -b .logmsgs
|
%patch1 -p1 -b .logmsgs
|
||||||
%patch2 -p1 -b .classthreshold
|
%patch2 -p1 -b .classthreshold
|
||||||
|
%patch3 -p1 -b .deftxtout
|
||||||
%patch4 -p1 -b .ucastrate
|
%patch4 -p1 -b .ucastrate
|
||||||
%patch7 -p1 -b .manfix
|
%patch7 -p1 -b .manfix
|
||||||
%patch8 -p1 -b .fclose
|
%patch8 -p1 -b .fclose
|
||||||
|
Loading…
Reference in New Issue
Block a user