examples/ipsec-secgw: add framework for event helper
[dpdk.git] / examples / ptpclient / ptpclient.c
index 6e273f6..a1a7ae6 100644 (file)
@@ -378,6 +378,7 @@ static void
 parse_fup(struct ptpv2_data_slave_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 ptp_message *ptp_msg;
@@ -387,6 +388,7 @@ parse_fup(struct ptpv2_data_slave_ordinary *ptp_data)
        size_t pkt_size;
        int wait_us;
        struct rte_mbuf *m = ptp_data->m;
+       int ret;
 
        eth_hdr = rte_pktmbuf_mtod(m, struct rte_ether_hdr *);
        ptp_hdr = (struct ptp_header *)(rte_pktmbuf_mtod(m, char *)
@@ -407,6 +409,13 @@ parse_fup(struct ptpv2_data_slave_ordinary *ptp_data)
                (((uint64_t)ntohs(origin_tstamp->sec_msb)) << 32);
 
        if (ptp_data->seqID_FOLLOWUP == ptp_data->seqID_SYNC) {
+               ret = rte_eth_macaddr_get(ptp_data->portid, &eth_addr);
+               if (ret != 0) {
+                       printf("\nCore %u: port %u failed to get MAC address: %s\n",
+                               rte_lcore_id(), ptp_data->portid,
+                               rte_strerror(-ret));
+                       return;
+               }
 
                created_pkt = rte_pktmbuf_alloc(mbuf_pool);
                pkt_size = sizeof(struct rte_ether_hdr) +
@@ -414,7 +423,7 @@ parse_fup(struct ptpv2_data_slave_ordinary *ptp_data)
                created_pkt->data_len = pkt_size;
                created_pkt->pkt_len = pkt_size;
                eth_hdr = rte_pktmbuf_mtod(created_pkt, struct rte_ether_hdr *);
-               rte_eth_macaddr_get(ptp_data->portid, &eth_hdr->s_addr);
+               rte_ether_addr_copy(&eth_addr, &eth_hdr->s_addr);
 
                /* Set multicast address 01-1B-19-00-00-00. */
                rte_ether_addr_copy(&eth_multicast, &eth_hdr->d_addr);