From: Stephen Hemminger <stephen@networkplumber.org>
To: dev@dpdk.org
Cc: Stephen Hemminger <stephen@networkplumber.org>,
Ajit Khaparde <ajit.khaparde@broadcom.com>,
Somnath Kotur <somnath.kotur@broadcom.com>,
Kirill Rybalchenko <kirill.rybalchenko@intel.com>
Subject: [PATCH] ptp: replace terms master/slave
Date: Fri, 19 May 2023 11:15:49 -0700 [thread overview]
Message-ID: <20230519181549.4341-1-stephen@networkplumber.org> (raw)
The IEEE has revised the naming in PTP protocol.
Use these new terms to replace master and slave.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
doc/guides/nics/bnxt.rst | 7 +--
doc/guides/sample_app_ug/img/ptpclient.svg | 4 +-
doc/guides/sample_app_ug/intro.rst | 4 +-
doc/guides/sample_app_ug/ptpclient.rst | 29 +++++------
examples/ptpclient/ptpclient.c | 56 +++++++++++-----------
5 files changed, 51 insertions(+), 49 deletions(-)
diff --git a/doc/guides/nics/bnxt.rst b/doc/guides/nics/bnxt.rst
index 0b09b0c50a7b..bb126689c204 100644
--- a/doc/guides/nics/bnxt.rst
+++ b/doc/guides/nics/bnxt.rst
@@ -538,10 +538,11 @@ Time Synchronization
~~~~~~~~~~~~~~~~~~~~
System operators may run a PTP (Precision Time Protocol) client application to
-synchronize the time on the NIC (and optionally, on the system) to a PTP master.
+synchronize the time on the NIC (and optionally, on the system) to a PTP time transmitter.
-The BNXT PMD supports a PTP client application to communicate with a PTP master
-clock using DPDK IEEE1588 APIs. Note that the PTP client application needs to
+The BNXT PMD supports a PTP client application to communicate with a PTP time
+transmitter using DPDK IEEE1588 APIs.
+Note that the PTP client application needs to
run on PF and vector mode needs to be disabled.
.. code-block:: console
diff --git a/doc/guides/sample_app_ug/img/ptpclient.svg b/doc/guides/sample_app_ug/img/ptpclient.svg
index fd78ef839b91..aaf49ea274b1 100644
--- a/doc/guides/sample_app_ug/img/ptpclient.svg
+++ b/doc/guides/sample_app_ug/img/ptpclient.svg
@@ -488,7 +488,7 @@
sodipodi:role="line"
id="tspan7096"
x="38.764343"
- y="590.47479">master</tspan></text>
+ y="590.47479">sender</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:47.51625061px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
@@ -510,7 +510,7 @@
sodipodi:role="line"
id="tspan7104"
x="271.23392"
- y="593.71478">slave</tspan></text>
+ y="593.71478">receiver</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20.3917141px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#800080;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
diff --git a/doc/guides/sample_app_ug/intro.rst b/doc/guides/sample_app_ug/intro.rst
index e765f1fd6b12..aaa064ea63d6 100644
--- a/doc/guides/sample_app_ug/intro.rst
+++ b/doc/guides/sample_app_ug/intro.rst
@@ -85,8 +85,8 @@ examples are highlighted below.
* :doc:`Precision Time Protocol (PTP) client<ptpclient>`: The PTP
client is another minimal implementation of a real world application.
In this case the application is a PTP client that communicates with a PTP
- master clock to synchronize time on a Network Interface Card (NIC) using the
- IEEE1588 protocol.
+ time transmitter to synchronize time on a Network Interface Card (NIC)
+ using the IEEE1588 protocol.
* :doc:`Quality of Service (QoS) Scheduler<qos_scheduler>`: The QoS
Scheduler application demonstrates the use of DPDK to provide QoS scheduling.
diff --git a/doc/guides/sample_app_ug/ptpclient.rst b/doc/guides/sample_app_ug/ptpclient.rst
index d47e942738d0..ef8846f27436 100644
--- a/doc/guides/sample_app_ug/ptpclient.rst
+++ b/doc/guides/sample_app_ug/ptpclient.rst
@@ -5,8 +5,9 @@ PTP Client Sample Application
=============================
The PTP (Precision Time Protocol) client sample application is a simple
-example of using the DPDK IEEE1588 API to communicate with a PTP master clock
-to synchronize the time on the NIC and, optionally, on the Linux system.
+example of using the DPDK IEEE1588 API to communicate with a PTP time
+transmitter to synchronize the time on the NIC and, optionally,
+on the Linux system.
Note, PTP is a time syncing protocol and cannot be used within DPDK as a
time-stamping mechanism. See the following for an explanation of the protocol:
@@ -21,10 +22,10 @@ The PTP sample application is intended as a simple reference implementation of
a PTP client using the DPDK IEEE1588 API.
In order to keep the application simple the following assumptions are made:
-* The first discovered master is the main for the session.
+* The first discovered transmitter is the main for the session.
* Only L2 PTP packets are supported.
* Only the PTP v2 protocol is supported.
-* Only the slave clock is implemented.
+* Only the time receiver clock is implemented.
How the Application Works
@@ -38,12 +39,12 @@ How the Application Works
The PTP synchronization in the sample application works as follows:
-* Master sends *Sync* message - the slave saves it as T2.
-* Master sends *Follow Up* message and sends time of T1.
-* Slave sends *Delay Request* frame to PTP Master and stores T3.
-* Master sends *Delay Response* T4 time which is time of received T3.
+* TimeTransmitter sends *Sync* message - the TimeReceiver saves it as T2.
+* TimeTransmitter sends *Follow Up* message and sends time of T1.
+* TimeReceiver sends *Delay Request* frame to PTP TimeTransmitter and stores T3.
+* TimeTransmitter sends *Delay Response* T4 time which is time of received T3.
-The adjustment for slave can be represented as:
+The adjustment for time receiver can be represented as:
adj = -[(T2-T1)-(T4 - T3)]/2
@@ -71,8 +72,8 @@ Refer to *DPDK Getting Started Guide* for general information on running
applications and the Environment Abstraction Layer (EAL) options.
* ``-p portmask``: Hexadecimal portmask.
-* ``-T 0``: Update only the PTP slave clock.
-* ``-T 1``: Update the PTP slave clock and synchronize the Linux Kernel to the PTP clock.
+* ``-T 0``: Update only the PTP time receiver clock.
+* ``-T 1``: Update the PTP time receiver clock and synchronize the Linux Kernel to the PTP clock.
Code Explanation
@@ -178,7 +179,7 @@ The forwarding loop can be interrupted and the application closed using
PTP parsing
~~~~~~~~~~~
-The ``parse_ptp_frames()`` function processes PTP packets, implementing slave
+The ``parse_ptp_frames()`` function processes PTP packets, implementing time receiver
PTP IEEE1588 L2 functionality.
.. literalinclude:: ../../../examples/ptpclient/ptpclient.c
@@ -187,11 +188,11 @@ PTP IEEE1588 L2 functionality.
:end-before: >8 End of function processes PTP packets.
There are 3 types of packets on the RX path which we must parse to create a minimal
-implementation of the PTP slave client:
+implementation of the PTP time receiver client:
* SYNC packet.
* FOLLOW UP packet
* DELAY RESPONSE packet.
When we parse the *FOLLOW UP* packet we also create and send a *DELAY_REQUEST* packet.
-Also when we parse the *DELAY RESPONSE* packet, and all conditions are met we adjust the PTP slave clock.
+Also when we parse the *DELAY RESPONSE* packet, and all conditions are met we adjust the PTP time receiver clock.
diff --git a/examples/ptpclient/ptpclient.c b/examples/ptpclient/ptpclient.c
index cdf2da64dfee..d87d19c74e2f 100644
--- a/examples/ptpclient/ptpclient.c
+++ b/examples/ptpclient/ptpclient.c
@@ -116,14 +116,14 @@ struct ptp_message {
} __rte_packed;
};
-struct ptpv2_data_slave_ordinary {
+struct ptpv2_receiver_ordinary {
struct rte_mbuf *m;
struct timespec tstamp1;
struct timespec tstamp2;
struct timespec tstamp3;
struct timespec tstamp4;
struct clock_id client_clock_id;
- struct clock_id master_clock_id;
+ struct clock_id sender_clock_id;
struct timeval new_adj;
int64_t delta;
uint16_t portid;
@@ -134,7 +134,7 @@ struct ptpv2_data_slave_ordinary {
uint16_t current_ptp_port;
};
-static struct ptpv2_data_slave_ordinary ptp_data;
+static struct ptpv2_receiver_ordinary ptp_data;
static inline uint64_t timespec64_to_ns(const struct timespec *ts)
{
@@ -263,38 +263,38 @@ port_init(uint16_t port, struct rte_mempool *mbuf_pool)
}
static void
-print_clock_info(struct ptpv2_data_slave_ordinary *ptp_data)
+print_clock_info(struct ptpv2_receiver_ordinary *ptp_data)
{
int64_t nsec;
struct timespec net_time, sys_time;
- printf("Master Clock id: %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x",
- ptp_data->master_clock_id.id[0],
- ptp_data->master_clock_id.id[1],
- ptp_data->master_clock_id.id[2],
- ptp_data->master_clock_id.id[3],
- ptp_data->master_clock_id.id[4],
- ptp_data->master_clock_id.id[5],
- ptp_data->master_clock_id.id[6],
- ptp_data->master_clock_id.id[7]);
-
- printf("\nT2 - Slave Clock. %lds %ldns",
+ printf("Transmitter id: %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x",
+ ptp_data->sender_clock_id.id[0],
+ ptp_data->sender_clock_id.id[1],
+ ptp_data->sender_clock_id.id[2],
+ ptp_data->sender_clock_id.id[3],
+ ptp_data->sender_clock_id.id[4],
+ ptp_data->sender_clock_id.id[5],
+ ptp_data->sender_clock_id.id[6],
+ ptp_data->sender_clock_id.id[7]);
+
+ printf("\nT2 - Receiver. %lds %ldns",
(ptp_data->tstamp2.tv_sec),
(ptp_data->tstamp2.tv_nsec));
- printf("\nT1 - Master Clock. %lds %ldns ",
+ printf("\nT1 - Transmitter. %lds %ldns ",
ptp_data->tstamp1.tv_sec,
(ptp_data->tstamp1.tv_nsec));
- printf("\nT3 - Slave Clock. %lds %ldns",
+ printf("\nT3 - Receiver. %lds %ldns",
ptp_data->tstamp3.tv_sec,
(ptp_data->tstamp3.tv_nsec));
- printf("\nT4 - Master Clock. %lds %ldns ",
+ printf("\nT4 - Transmitter. %lds %ldns ",
ptp_data->tstamp4.tv_sec,
(ptp_data->tstamp4.tv_nsec));
- printf("\nDelta between master and slave clocks:%"PRId64"ns\n",
+ printf("\nDelta between transmitter and receiver clocks:%"PRId64"ns\n",
ptp_data->delta);
clock_gettime(CLOCK_REALTIME, &sys_time);
@@ -328,7 +328,7 @@ print_clock_info(struct ptpv2_data_slave_ordinary *ptp_data)
}
static int64_t
-delta_eval(struct ptpv2_data_slave_ordinary *ptp_data)
+delta_eval(struct ptpv2_receiver_ordinary *ptp_data)
{
int64_t delta;
uint64_t t1 = 0;
@@ -350,7 +350,7 @@ delta_eval(struct ptpv2_data_slave_ordinary *ptp_data)
* Parse the PTP SYNC message.
*/
static void
-parse_sync(struct ptpv2_data_slave_ordinary *ptp_data, uint16_t rx_tstamp_idx)
+parse_sync(struct ptpv2_receiver_ordinary *ptp_data, uint16_t rx_tstamp_idx)
{
struct ptp_header *ptp_hdr;
@@ -359,7 +359,7 @@ parse_sync(struct ptpv2_data_slave_ordinary *ptp_data, uint16_t rx_tstamp_idx)
ptp_data->seqID_SYNC = rte_be_to_cpu_16(ptp_hdr->seq_id);
if (ptp_data->ptpset == 0) {
- rte_memcpy(&ptp_data->master_clock_id,
+ rte_memcpy(&ptp_data->sender_clock_id,
&ptp_hdr->source_port_id.clock_id,
sizeof(struct clock_id));
ptp_data->ptpset = 1;
@@ -380,7 +380,7 @@ parse_sync(struct ptpv2_data_slave_ordinary *ptp_data, uint16_t rx_tstamp_idx)
* Parse the PTP FOLLOWUP message and send DELAY_REQ to the main clock.
*/
static void
-parse_fup(struct ptpv2_data_slave_ordinary *ptp_data)
+parse_fup(struct ptpv2_receiver_ordinary *ptp_data)
{
struct rte_ether_hdr *eth_hdr;
struct rte_ether_addr eth_addr;
@@ -399,7 +399,7 @@ parse_fup(struct ptpv2_data_slave_ordinary *ptp_data)
eth_hdr = rte_pktmbuf_mtod(m, struct rte_ether_hdr *);
ptp_hdr = (struct ptp_header *)(rte_pktmbuf_mtod(m, char *)
+ sizeof(struct rte_ether_hdr));
- if (memcmp(&ptp_data->master_clock_id,
+ if (memcmp(&ptp_data->sender_clock_id,
&ptp_hdr->source_port_id.clock_id,
sizeof(struct clock_id)) != 0)
return;
@@ -530,7 +530,7 @@ update_kernel_time(void)
* Parse the DELAY_RESP message.
*/
static void
-parse_drsp(struct ptpv2_data_slave_ordinary *ptp_data)
+parse_drsp(struct ptpv2_receiver_ordinary *ptp_data)
{
struct rte_mbuf *m = ptp_data->m;
struct ptp_message *ptp_msg;
@@ -568,8 +568,8 @@ parse_drsp(struct ptpv2_data_slave_ordinary *ptp_data)
}
}
-/* This function processes PTP packets, implementing slave PTP IEEE1588 L2
- * functionality.
+/* This function processes PTP packets,
+ * implementing receiver PTP IEEE1588 L2 functionality.
*/
/* Parse ptp frames. 8< */
@@ -753,7 +753,7 @@ main(int argc, char *argv[])
rte_exit(EXIT_FAILURE, "Error with EAL initialization\n");
/* >8 End of initialization of EAL. */
- memset(&ptp_data, '\0', sizeof(struct ptpv2_data_slave_ordinary));
+ memset(&ptp_data, '\0', sizeof(struct ptpv2_receiver_ordinary));
/* Parse specific arguments. 8< */
argc -= ret;
--
2.39.2
next reply other threads:[~2023-05-19 18:15 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-19 18:15 Stephen Hemminger [this message]
2023-05-19 20:06 ` [PATCH] ptp: replace terms master/slave Tyler Retzlaff
2023-05-19 20:08 ` Ajit Khaparde
2023-07-05 17:27 ` Stephen Hemminger
2023-11-29 16:43 ` [PATCH v2] examples/ptp: replace terms master and slave Stephen Hemminger
2023-11-30 3:30 ` Somnath Kotur
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230519181549.4341-1-stephen@networkplumber.org \
--to=stephen@networkplumber.org \
--cc=ajit.khaparde@broadcom.com \
--cc=dev@dpdk.org \
--cc=kirill.rybalchenko@intel.com \
--cc=somnath.kotur@broadcom.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.