You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
214 lines
6.7 KiB
214 lines
6.7 KiB
# 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
|
|
|