(unsigned) pi);
return;
}
- printf("Port %u RX timestamp value %"PRIu64"\n",
- (unsigned) pi, timestamp.tv_sec);
+ printf("Port %u RX timestamp value %lu s %lu ns\n",
+ (unsigned) pi, timestamp.tv_sec, timestamp.tv_nsec);
}
#define MAX_TX_TMST_WAIT_MICROSECS 1000 /**< 1 milli-second */
(unsigned) pi, (unsigned) MAX_TX_TMST_WAIT_MICROSECS);
return;
}
- printf("Port %u TX timestamp value %"PRIu64" validated after "
+ printf("Port %u TX timestamp value %lu s %lu ns validated after "
"%u micro-second%s\n",
- (unsigned) pi, timestamp.tv_sec, wait_us,
+ (unsigned) pi, timestamp.tv_sec, timestamp.tv_nsec, wait_us,
(wait_us == 1) ? "" : "s");
}
{
struct rte_mbuf *mb;
struct ether_hdr *eth_hdr;
+ struct ether_addr addr;
struct ptpv2_msg *ptp_hdr;
uint16_t eth_type;
uint32_t timesync_index;
/* Read and check the RX timestamp. */
port_ieee1588_rx_timestamp_check(fs->rx_port, timesync_index);
+ /* Swap dest and src mac addresses. */
+ ether_addr_copy(ð_hdr->d_addr, &addr);
+ ether_addr_copy(ð_hdr->s_addr, ð_hdr->d_addr);
+ ether_addr_copy(&addr, ð_hdr->s_addr);
+
/* Forward PTP packet with hardware TX timestamp */
mb->ol_flags |= PKT_TX_IEEE1588_TMST;
fs->tx_packets += 1;