# 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