Replace local PTP struct and constant definitions with the shared
rte_ptp.h library types introduced earlier in this series:
- struct ptp_header  -> struct rte_ptp_hdr
- struct tstamp      -> struct rte_ptp_timestamp
- struct clock_id    -> uint8_t clock_id[8] (from rte_ptp_port_id)
- SYNC/FOLLOW_UP/DELAY_* defines -> RTE_PTP_MSGTYPE_* constants
- PTP_PROTOCOL       -> RTE_PTP_ETHERTYPE
- hardcoded multicast -> RTE_PTP_MULTICAST_MAC
- ptp_hdr->msg_type switch -> rte_ptp_msg_type() accessor

No functional change.

Signed-off-by: Rajesh Kumar <[email protected]>
---
 examples/ptpclient/meson.build |   1 +
 examples/ptpclient/ptpclient.c | 188 +++++++++++++--------------------
 2 files changed, 73 insertions(+), 116 deletions(-)

diff --git a/examples/ptpclient/meson.build b/examples/ptpclient/meson.build
index 2e9b7625fc..ab074c9cb1 100644
--- a/examples/ptpclient/meson.build
+++ b/examples/ptpclient/meson.build
@@ -7,6 +7,7 @@
 # DPDK instance, use 'make'
 
 allow_experimental_apis = true
+deps += ['ptp']
 sources = files(
         'ptpclient.c',
 )
diff --git a/examples/ptpclient/ptpclient.c b/examples/ptpclient/ptpclient.c
index 174ca5dd70..ee93f511d7 100644
--- a/examples/ptpclient/ptpclient.c
+++ b/examples/ptpclient/ptpclient.c
@@ -17,6 +17,7 @@
 #include <rte_lcore.h>
 #include <rte_mbuf.h>
 #include <rte_ip.h>
+#include <rte_ptp.h>
 #include <limits.h>
 #include <sys/time.h>
 #include <getopt.h>
@@ -30,21 +31,8 @@ static volatile bool force_quit;
 #define NUM_MBUFS            8191
 #define MBUF_CACHE_SIZE       250
 
-/* Values for the PTP messageType field. */
-#define SYNC                  0x0
-#define DELAY_REQ             0x1
-#define PDELAY_REQ            0x2
-#define PDELAY_RESP           0x3
-#define FOLLOW_UP             0x8
-#define DELAY_RESP            0x9
-#define PDELAY_RESP_FOLLOW_UP 0xA
-#define ANNOUNCE              0xB
-#define SIGNALING             0xC
-#define MANAGEMENT            0xD
-
 #define NSEC_PER_SEC        1000000000L
 #define KERNEL_TIME_ADJUST_LIMIT  20000
-#define PTP_PROTOCOL             0x88F7
 
 struct rte_mempool *mbuf_pool;
 uint32_t ptp_enabled_port_mask;
@@ -52,66 +40,36 @@ uint8_t ptp_enabled_port_nb;
 static uint8_t ptp_enabled_ports[RTE_MAX_ETHPORTS];
 
 static const struct rte_ether_addr ether_multicast = {
-       .addr_bytes = {0x01, 0x1b, 0x19, 0x0, 0x0, 0x0}
-};
-
-/* Structs used for PTP handling. */
-struct __rte_packed_begin tstamp {
-       uint16_t   sec_msb;
-       uint32_t   sec_lsb;
-       uint32_t   ns;
-} __rte_packed_end;
-
-struct clock_id {
-       uint8_t id[8];
+       .addr_bytes = RTE_PTP_MULTICAST_MAC
 };
 
-struct __rte_packed_begin port_id {
-       struct clock_id        clock_id;
-       uint16_t               port_number;
-} __rte_packed_end;
-
-struct __rte_packed_begin ptp_header {
-       uint8_t              msg_type;
-       uint8_t              ver;
-       uint16_t             message_length;
-       uint8_t              domain_number;
-       uint8_t              reserved1;
-       uint8_t              flag_field[2];
-       int64_t              correction;
-       uint32_t             reserved2;
-       struct port_id       source_port_id;
-       uint16_t             seq_id;
-       uint8_t              control;
-       int8_t               log_message_interval;
-} __rte_packed_end;
-
+/* Message body structs using the library PTP header and timestamp. */
 struct __rte_packed_begin sync_msg {
-       struct ptp_header   hdr;
-       struct tstamp       origin_tstamp;
+       struct rte_ptp_hdr       hdr;
+       struct rte_ptp_timestamp origin_tstamp;
 } __rte_packed_end;
 
 struct __rte_packed_begin follow_up_msg {
-       struct ptp_header   hdr;
-       struct tstamp       precise_origin_tstamp;
-       uint8_t             suffix[];
+       struct rte_ptp_hdr       hdr;
+       struct rte_ptp_timestamp precise_origin_tstamp;
+       uint8_t                  suffix[];
 } __rte_packed_end;
 
 struct __rte_packed_begin delay_req_msg {
-       struct ptp_header   hdr;
-       struct tstamp       origin_tstamp;
+       struct rte_ptp_hdr       hdr;
+       struct rte_ptp_timestamp origin_tstamp;
 } __rte_packed_end;
 
 struct __rte_packed_begin delay_resp_msg {
-       struct ptp_header    hdr;
-       struct tstamp        rx_tstamp;
-       struct port_id       req_port_id;
-       uint8_t              suffix[];
+       struct rte_ptp_hdr       hdr;
+       struct rte_ptp_timestamp rx_tstamp;
+       struct rte_ptp_port_id   req_port_id;
+       uint8_t                  suffix[];
 } __rte_packed_end;
 
 struct ptp_message {
        union __rte_packed_begin {
-               struct ptp_header          header;
+               struct rte_ptp_hdr         header;
                struct sync_msg            sync;
                struct delay_req_msg       delay_req;
                struct follow_up_msg       follow_up;
@@ -125,8 +83,8 @@ struct ptpv2_time_receiver_ordinary {
        struct timespec tstamp2;
        struct timespec tstamp3;
        struct timespec tstamp4;
-       struct clock_id client_clock_id;
-       struct clock_id transmitter_clock_id;
+       uint8_t client_clock_id[8];
+       uint8_t transmitter_clock_id[8];
        struct timeval new_adj;
        int64_t delta;
        uint16_t portid;
@@ -272,14 +230,14 @@ print_clock_info(struct ptpv2_time_receiver_ordinary 
*ptp_data)
        struct timespec net_time, sys_time;
 
        printf("time transmitter clock id: 
%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x",
-               ptp_data->transmitter_clock_id.id[0],
-               ptp_data->transmitter_clock_id.id[1],
-               ptp_data->transmitter_clock_id.id[2],
-               ptp_data->transmitter_clock_id.id[3],
-               ptp_data->transmitter_clock_id.id[4],
-               ptp_data->transmitter_clock_id.id[5],
-               ptp_data->transmitter_clock_id.id[6],
-               ptp_data->transmitter_clock_id.id[7]);
+               ptp_data->transmitter_clock_id[0],
+               ptp_data->transmitter_clock_id[1],
+               ptp_data->transmitter_clock_id[2],
+               ptp_data->transmitter_clock_id[3],
+               ptp_data->transmitter_clock_id[4],
+               ptp_data->transmitter_clock_id[5],
+               ptp_data->transmitter_clock_id[6],
+               ptp_data->transmitter_clock_id[7]);
 
        printf("\nT2 - time receiver clock.  %lds %ldns",
                        (ptp_data->tstamp2.tv_sec),
@@ -356,20 +314,20 @@ delta_eval(struct ptpv2_time_receiver_ordinary *ptp_data)
 static void
 parse_sync(struct ptpv2_time_receiver_ordinary *ptp_data, uint16_t 
rx_tstamp_idx)
 {
-       struct ptp_header *ptp_hdr;
+       struct rte_ptp_hdr *ptp_hdr;
 
-       ptp_hdr = rte_pktmbuf_mtod_offset(ptp_data->m, struct ptp_header *,
+       ptp_hdr = rte_pktmbuf_mtod_offset(ptp_data->m, struct rte_ptp_hdr *,
                                          sizeof(struct rte_ether_hdr));
-       ptp_data->seqID_SYNC = rte_be_to_cpu_16(ptp_hdr->seq_id);
+       ptp_data->seqID_SYNC = rte_be_to_cpu_16(ptp_hdr->sequence_id);
 
        if (ptp_data->ptpset == 0) {
-               ptp_data->transmitter_clock_id = 
ptp_hdr->source_port_id.clock_id;
+               memcpy(ptp_data->transmitter_clock_id,
+                      ptp_hdr->source_port_id.clock_id, 8);
                ptp_data->ptpset = 1;
        }
 
-       if (memcmp(&ptp_data->transmitter_clock_id,
-                       &ptp_hdr->source_port_id.clock_id,
-                       sizeof(struct clock_id)) == 0) {
+       if (memcmp(ptp_data->transmitter_clock_id,
+                       ptp_hdr->source_port_id.clock_id, 8) == 0) {
 
                if (ptp_data->ptpset == 1)
                        rte_eth_timesync_read_rx_timestamp(ptp_data->portid,
@@ -386,12 +344,12 @@ parse_fup(struct ptpv2_time_receiver_ordinary *ptp_data)
 {
        struct rte_ether_hdr *eth_hdr;
        struct rte_ether_addr eth_addr;
-       struct ptp_header *ptp_hdr;
-       struct clock_id *client_clkid;
+       struct rte_ptp_hdr *ptp_hdr;
+       uint8_t *client_clkid;
        struct ptp_message *ptp_msg;
        struct delay_req_msg *req_msg;
        struct rte_mbuf *created_pkt;
-       struct tstamp *origin_tstamp;
+       struct rte_ptp_timestamp *origin_tstamp;
        struct rte_ether_addr eth_multicast = ether_multicast;
        size_t pkt_size;
        int wait_us;
@@ -399,22 +357,21 @@ parse_fup(struct ptpv2_time_receiver_ordinary *ptp_data)
        int ret;
 
        eth_hdr = rte_pktmbuf_mtod(m, struct rte_ether_hdr *);
-       ptp_hdr = rte_pktmbuf_mtod_offset(m, struct ptp_header *,
+       ptp_hdr = rte_pktmbuf_mtod_offset(m, struct rte_ptp_hdr *,
                                          sizeof(struct rte_ether_hdr));
-       if (memcmp(&ptp_data->transmitter_clock_id,
-                       &ptp_hdr->source_port_id.clock_id,
-                       sizeof(struct clock_id)) != 0)
+       if (memcmp(ptp_data->transmitter_clock_id,
+                       ptp_hdr->source_port_id.clock_id, 8) != 0)
                return;
 
-       ptp_data->seqID_FOLLOWUP = rte_be_to_cpu_16(ptp_hdr->seq_id);
+       ptp_data->seqID_FOLLOWUP = rte_be_to_cpu_16(ptp_hdr->sequence_id);
        ptp_msg = rte_pktmbuf_mtod_offset(m, struct ptp_message *,
                                          sizeof(struct rte_ether_hdr));
 
        origin_tstamp = &ptp_msg->follow_up.precise_origin_tstamp;
-       ptp_data->tstamp1.tv_nsec = ntohl(origin_tstamp->ns);
+       ptp_data->tstamp1.tv_nsec = ntohl(origin_tstamp->nanoseconds);
        ptp_data->tstamp1.tv_sec =
-               ((uint64_t)ntohl(origin_tstamp->sec_lsb)) |
-               (((uint64_t)ntohs(origin_tstamp->sec_msb)) << 32);
+               ((uint64_t)ntohl(origin_tstamp->seconds_lo)) |
+               (((uint64_t)ntohs(origin_tstamp->seconds_hi)) << 32);
 
        if (ptp_data->seqID_FOLLOWUP == ptp_data->seqID_SYNC) {
                ret = rte_eth_macaddr_get(ptp_data->portid, &eth_addr);
@@ -441,34 +398,34 @@ parse_fup(struct ptpv2_time_receiver_ordinary *ptp_data)
                /* Set multicast address 01-1B-19-00-00-00. */
                rte_ether_addr_copy(&eth_multicast, &eth_hdr->dst_addr);
 
-               eth_hdr->ether_type = htons(PTP_PROTOCOL);
+               eth_hdr->ether_type = htons(RTE_PTP_ETHERTYPE);
                req_msg = rte_pktmbuf_mtod_offset(created_pkt,
                        struct delay_req_msg *, sizeof(struct
                        rte_ether_hdr));
 
-               req_msg->hdr.seq_id = htons(ptp_data->seqID_SYNC);
-               req_msg->hdr.msg_type = DELAY_REQ;
-               req_msg->hdr.ver = 2;
+               req_msg->hdr.sequence_id = htons(ptp_data->seqID_SYNC);
+               req_msg->hdr.msg_type = RTE_PTP_MSGTYPE_DELAY_REQ;
+               req_msg->hdr.version = 2;
                req_msg->hdr.control = 1;
-               req_msg->hdr.log_message_interval = 127;
-               req_msg->hdr.message_length =
+               req_msg->hdr.log_msg_interval = 127;
+               req_msg->hdr.msg_length =
                        htons(sizeof(struct delay_req_msg));
                req_msg->hdr.domain_number = ptp_hdr->domain_number;
 
                /* Set up clock id. */
                client_clkid =
-                       &req_msg->hdr.source_port_id.clock_id;
+                       req_msg->hdr.source_port_id.clock_id;
 
-               client_clkid->id[0] = eth_hdr->src_addr.addr_bytes[0];
-               client_clkid->id[1] = eth_hdr->src_addr.addr_bytes[1];
-               client_clkid->id[2] = eth_hdr->src_addr.addr_bytes[2];
-               client_clkid->id[3] = 0xFF;
-               client_clkid->id[4] = 0xFE;
-               client_clkid->id[5] = eth_hdr->src_addr.addr_bytes[3];
-               client_clkid->id[6] = eth_hdr->src_addr.addr_bytes[4];
-               client_clkid->id[7] = eth_hdr->src_addr.addr_bytes[5];
+               client_clkid[0] = eth_hdr->src_addr.addr_bytes[0];
+               client_clkid[1] = eth_hdr->src_addr.addr_bytes[1];
+               client_clkid[2] = eth_hdr->src_addr.addr_bytes[2];
+               client_clkid[3] = 0xFF;
+               client_clkid[4] = 0xFE;
+               client_clkid[5] = eth_hdr->src_addr.addr_bytes[3];
+               client_clkid[6] = eth_hdr->src_addr.addr_bytes[4];
+               client_clkid[7] = eth_hdr->src_addr.addr_bytes[5];
 
-               ptp_data->client_clock_id = *client_clkid;
+               memcpy(ptp_data->client_clock_id, client_clkid, 8);
 
                /* Enable flag for hardware timestamping. */
                created_pkt->ol_flags |= RTE_MBUF_F_TX_IEEE1588_TMST;
@@ -534,21 +491,20 @@ parse_drsp(struct ptpv2_time_receiver_ordinary *ptp_data)
 {
        struct rte_mbuf *m = ptp_data->m;
        struct ptp_message *ptp_msg;
-       struct tstamp *rx_tstamp;
+       struct rte_ptp_timestamp *rx_tstamp;
        uint16_t seq_id;
 
        ptp_msg = rte_pktmbuf_mtod_offset(m, struct ptp_message *,
                                          sizeof(struct rte_ether_hdr));
-       seq_id = rte_be_to_cpu_16(ptp_msg->delay_resp.hdr.seq_id);
-       if (memcmp(&ptp_data->client_clock_id,
-                  &ptp_msg->delay_resp.req_port_id.clock_id,
-                  sizeof(struct clock_id)) == 0) {
+       seq_id = rte_be_to_cpu_16(ptp_msg->delay_resp.hdr.sequence_id);
+       if (memcmp(ptp_data->client_clock_id,
+                  ptp_msg->delay_resp.req_port_id.clock_id, 8) == 0) {
                if (seq_id == ptp_data->seqID_FOLLOWUP) {
                        rx_tstamp = &ptp_msg->delay_resp.rx_tstamp;
-                       ptp_data->tstamp4.tv_nsec = ntohl(rx_tstamp->ns);
+                       ptp_data->tstamp4.tv_nsec = 
ntohl(rx_tstamp->nanoseconds);
                        ptp_data->tstamp4.tv_sec =
-                               ((uint64_t)ntohl(rx_tstamp->sec_lsb)) |
-                               (((uint64_t)ntohs(rx_tstamp->sec_msb)) << 32);
+                               ((uint64_t)ntohl(rx_tstamp->seconds_lo)) |
+                               (((uint64_t)ntohs(rx_tstamp->seconds_hi)) << 
32);
 
                        /* Evaluate the delta for adjustment. */
                        ptp_data->delta = delta_eval(ptp_data);
@@ -575,27 +531,27 @@ parse_drsp(struct ptpv2_time_receiver_ordinary *ptp_data)
 /* Parse ptp frames. 8< */
 static void
 parse_ptp_frames(uint16_t portid, struct rte_mbuf *m) {
-       struct ptp_header *ptp_hdr;
+       struct rte_ptp_hdr *ptp_hdr;
        struct rte_ether_hdr *eth_hdr;
        uint16_t eth_type;
 
        eth_hdr = rte_pktmbuf_mtod(m, struct rte_ether_hdr *);
        eth_type = rte_be_to_cpu_16(eth_hdr->ether_type);
 
-       if (eth_type == PTP_PROTOCOL) {
+       if (eth_type == RTE_PTP_ETHERTYPE) {
                ptp_data.m = m;
                ptp_data.portid = portid;
-               ptp_hdr = rte_pktmbuf_mtod_offset(m, struct ptp_header *,
+               ptp_hdr = rte_pktmbuf_mtod_offset(m, struct rte_ptp_hdr *,
                                                  sizeof(struct rte_ether_hdr));
 
-               switch (ptp_hdr->msg_type) {
-               case SYNC:
+               switch (rte_ptp_msg_type(ptp_hdr)) {
+               case RTE_PTP_MSGTYPE_SYNC:
                        parse_sync(&ptp_data, m->timesync);
                        break;
-               case FOLLOW_UP:
+               case RTE_PTP_MSGTYPE_FOLLOW_UP:
                        parse_fup(&ptp_data);
                        break;
-               case DELAY_RESP:
+               case RTE_PTP_MSGTYPE_DELAY_RESP:
                        parse_drsp(&ptp_data);
                        print_clock_info(&ptp_data);
                        break;
-- 
2.53.0

Reply via email to