215 lines
6.7 KiB
Plaintext
215 lines
6.7 KiB
Plaintext
# Copyright (c) 2018 Intel Corporation.
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
menuconfig NET_GPTP
|
|
bool "IEEE 802.1AS (gPTP) support [EXPERIMENTAL]"
|
|
select NET_L2_PTP
|
|
select EXPERIMENTAL
|
|
help
|
|
Enable gPTP driver that send and receives gPTP packets
|
|
and handles network packet timestamps.
|
|
|
|
if NET_GPTP
|
|
|
|
module = NET_GPTP
|
|
module-dep = NET_LOG
|
|
module-str = Log level for gPTP
|
|
module-help = Enable logs for the gPTP stack.
|
|
source "subsys/net/Kconfig.template.log_config.net"
|
|
|
|
config NET_GPTP_GM_CAPABLE
|
|
bool "IEEE 802.1AS GrandMaster Capability"
|
|
help
|
|
Enable to mark the whole system as Grand Master Capable.
|
|
|
|
config NET_GPTP_PROBE_CLOCK_SOURCE_ON_DEMAND
|
|
bool "Probe clock source on demand"
|
|
depends on NET_GPTP_GM_CAPABLE
|
|
default y
|
|
help
|
|
This option is helpful if the driver does not fully support the
|
|
ClockSourceTime.invoke function. If this is enabled, the clock
|
|
source is probed when it is actually needed instead of being
|
|
updated on each tick.
|
|
See IEEE 802.1AS-2011, chapter 9.2 for more details.
|
|
|
|
choice
|
|
prompt "gPTP Clock Accuracy"
|
|
default NET_GPTP_CLOCK_ACCURACY_UNKNOWN
|
|
help
|
|
Specify the accuracy of the clock. This setting should reflect
|
|
the actual capabilities of the hardware.
|
|
See 7.6.2.5 of IEEE 1588-2008 for more info.
|
|
|
|
config NET_GPTP_CLOCK_ACCURACY_UNKNOWN
|
|
bool "Unknown"
|
|
config NET_GPTP_CLOCK_ACCURACY_25NS
|
|
bool "25ns"
|
|
config NET_GPTP_CLOCK_ACCURACY_100NS
|
|
bool "100ns"
|
|
config NET_GPTP_CLOCK_ACCURACY_250NS
|
|
bool "250ns"
|
|
config NET_GPTP_CLOCK_ACCURACY_1US
|
|
bool "1us"
|
|
config NET_GPTP_CLOCK_ACCURACY_2_5US
|
|
bool "2.5us"
|
|
config NET_GPTP_CLOCK_ACCURACY_10US
|
|
bool "10us"
|
|
config NET_GPTP_CLOCK_ACCURACY_25US
|
|
bool "25us"
|
|
config NET_GPTP_CLOCK_ACCURACY_100US
|
|
bool "100us"
|
|
config NET_GPTP_CLOCK_ACCURACY_250US
|
|
bool "250us"
|
|
config NET_GPTP_CLOCK_ACCURACY_1MS
|
|
bool "1ms"
|
|
config NET_GPTP_CLOCK_ACCURACY_2_5MS
|
|
bool "1.5ms"
|
|
config NET_GPTP_CLOCK_ACCURACY_10MS
|
|
bool "10ms"
|
|
config NET_GPTP_CLOCK_ACCURACY_25MS
|
|
bool "25ms"
|
|
config NET_GPTP_CLOCK_ACCURACY_100MS
|
|
bool "100ms"
|
|
config NET_GPTP_CLOCK_ACCURACY_250MS
|
|
bool "250ms"
|
|
config NET_GPTP_CLOCK_ACCURACY_1S
|
|
bool "1s"
|
|
config NET_GPTP_CLOCK_ACCURACY_10S
|
|
bool "10s"
|
|
config NET_GPTP_CLOCK_ACCURACY_GT_10S
|
|
bool "> 10s"
|
|
endchoice
|
|
|
|
config NET_GPTP_CLOCK_ACCURACY
|
|
hex
|
|
default 0x20 if NET_GPTP_CLOCK_ACCURACY_25NS
|
|
default 0x21 if NET_GPTP_CLOCK_ACCURACY_100NS
|
|
default 0x22 if NET_GPTP_CLOCK_ACCURACY_250NS
|
|
default 0x23 if NET_GPTP_CLOCK_ACCURACY_1US
|
|
default 0x24 if NET_GPTP_CLOCK_ACCURACY_2_5US
|
|
default 0x25 if NET_GPTP_CLOCK_ACCURACY_10US
|
|
default 0x26 if NET_GPTP_CLOCK_ACCURACY_25US
|
|
default 0x27 if NET_GPTP_CLOCK_ACCURACY_100US
|
|
default 0x28 if NET_GPTP_CLOCK_ACCURACY_250US
|
|
default 0x29 if NET_GPTP_CLOCK_ACCURACY_1MS
|
|
default 0x2a if NET_GPTP_CLOCK_ACCURACY_2_5MS
|
|
default 0x2b if NET_GPTP_CLOCK_ACCURACY_10MS
|
|
default 0x2c if NET_GPTP_CLOCK_ACCURACY_25MS
|
|
default 0x2d if NET_GPTP_CLOCK_ACCURACY_100MS
|
|
default 0x2e if NET_GPTP_CLOCK_ACCURACY_250MS
|
|
default 0x2f if NET_GPTP_CLOCK_ACCURACY_1S
|
|
default 0x30 if NET_GPTP_CLOCK_ACCURACY_10S
|
|
default 0x31 if NET_GPTP_CLOCK_ACCURACY_GT_10S
|
|
default 0xfe
|
|
|
|
config NET_GPTP_STACK_SIZE
|
|
int "gPTP thread stack size"
|
|
default 2048
|
|
help
|
|
Set the gPTP thread stack size in bytes. The gPTP thread handles the
|
|
gPTP state machine. There is one gPTP thread in the system.
|
|
|
|
config NET_GPTP_NUM_PORTS
|
|
int "Number of gPTP ports"
|
|
default 1
|
|
help
|
|
Configures the gPTP stack to work with the given number of ports.
|
|
The port concept is the same thing as network interface.
|
|
|
|
config NET_GPTP_NEIGHBOR_PROP_DELAY_THR
|
|
int "Set neighbor propagation delay threshold (ns)"
|
|
default 100000
|
|
help
|
|
Defines the neighbor propagation delay threshold in nanoseconds.
|
|
This is the propagation time threshold, above which a port is not
|
|
considered capable of participating in the IEEE 802.1AS protocol.
|
|
See IEEE 802.1AS chapter 11.2.12.6 for details.
|
|
|
|
config NET_GPTP_INIT_LOG_PDELAY_REQ_ITV
|
|
int "Set initial pdelay request interval in Log2 base"
|
|
default 0
|
|
help
|
|
Defines the interval at which a Path Delay Request will be sent.
|
|
The value is the converted in nanoseconds as follow:
|
|
nanoseconds = (10^9) * 2^(value)
|
|
|
|
config NET_GPTP_INIT_LOG_SYNC_ITV
|
|
int "Set initial sync interval in Log2 base"
|
|
default -3
|
|
help
|
|
Defines the interval at which a Sync message will be sent.
|
|
The value is the converted in nanoseconds as follow:
|
|
nanoseconds = (10^9) * 2^(value)
|
|
|
|
config NET_GPTP_INIT_LOG_ANNOUNCE_ITV
|
|
int "Set initial announce interval in Log2 base"
|
|
default 0
|
|
help
|
|
Defines the interval at which an Announce message will be sent.
|
|
The value is the converted in nanoseconds as follow:
|
|
nanoseconds = (10^9) * 2^(value)
|
|
|
|
config NET_GPTP_SYNC_RECEIPT_TIMEOUT
|
|
int "Number of sync intervals to wait"
|
|
default 3
|
|
help
|
|
Defines the number of sync intervals to wait without receiving
|
|
synchronization information before assuming that the master is no
|
|
longer transmitting synchronization information.
|
|
|
|
config NET_GPTP_ANNOUNCE_RECEIPT_TIMEOUT
|
|
int "Number of announce intervals to wait"
|
|
default 3
|
|
help
|
|
Defines the number of announce intervals to wait without receiving
|
|
an Announce message before assuming that the master is no longer
|
|
transmitting Announce messages.
|
|
|
|
config NET_GPTP_USE_DEFAULT_CLOCK_UPDATE
|
|
bool "Use a default clock update function"
|
|
default y
|
|
help
|
|
Use a default internal function to update port local clock.
|
|
|
|
config NET_GPTP_PATH_TRACE_ELEMENTS
|
|
int "How many path trace elements to track"
|
|
default 8
|
|
help
|
|
This tells the number of time-aware systems that transmits the
|
|
Announce message. Each array element takes 8 bytes. If this value
|
|
is set to 8, then 8 * 8 = 64 bytes of memory is used.
|
|
|
|
config NET_GPTP_BMCA_PRIORITY1
|
|
int "BMCA priority1 value"
|
|
default 248 if NET_GPTP_GM_CAPABLE
|
|
default $(UINT8_MAX)
|
|
range 0 $(UINT8_MAX)
|
|
help
|
|
The priority1 attribute of the local clock. It is used in the
|
|
Best Master Clock selection Algorithm (BMCA), lower values take
|
|
precedence. The default value is 255 if the device is non grand
|
|
master capable, and 248 if it is GM capable.
|
|
See Chapter 8.6.2.1 of IEEE 802.1AS for a more detailed description
|
|
of priority1. Note that if the system is non GM capable, then the
|
|
value 255 is used always and this setting is ignored.
|
|
|
|
config NET_GPTP_BMCA_PRIORITY2
|
|
int "BMCA priority2 value"
|
|
default 248
|
|
range 0 $(UINT8_MAX)
|
|
help
|
|
The priority2 attribute of the local clock. It is used in the BMCA
|
|
(Best Master Clock selection Algorithm), lower values take
|
|
precedence. The default value is 248.
|
|
See Chapter 8.6.2.5 of IEEE 802.1AS for a more detailed description
|
|
of priority2.
|
|
|
|
config NET_GPTP_STATISTICS
|
|
bool "Collect gPTP statistics"
|
|
help
|
|
Enable this if you need to collect gPTP statistics. The statistics
|
|
can be seen in net-shell if needed.
|
|
|
|
endif # NET_GPTP
|