uint16_t sec_msb;
uint32_t sec_lsb;
uint32_t ns;
-} __attribute__((packed));
+} __rte_packed;
struct clock_id {
uint8_t id[8];
struct port_id {
struct clock_id clock_id;
uint16_t port_number;
-} __attribute__((packed));
+} __rte_packed;
struct ptp_header {
uint8_t msg_type;
uint16_t seq_id;
uint8_t control;
int8_t log_message_interval;
-} __attribute__((packed));
+} __rte_packed;
struct sync_msg {
struct ptp_header hdr;
struct tstamp origin_tstamp;
-} __attribute__((packed));
+} __rte_packed;
struct follow_up_msg {
struct ptp_header hdr;
struct tstamp precise_origin_tstamp;
uint8_t suffix[0];
-} __attribute__((packed));
+} __rte_packed;
struct delay_req_msg {
struct ptp_header hdr;
struct tstamp origin_tstamp;
-} __attribute__((packed));
+} __rte_packed;
struct delay_resp_msg {
struct ptp_header hdr;
struct tstamp rx_tstamp;
struct port_id req_port_id;
uint8_t suffix[0];
-} __attribute__((packed));
+} __rte_packed;
struct ptp_message {
union {
struct delay_req_msg delay_req;
struct follow_up_msg follow_up;
struct delay_resp_msg delay_resp;
- } __attribute__((packed));
+ } __rte_packed;
};
struct ptpv2_data_slave_ordinary {
return retval;
}
+ if (dev_info.rx_offload_capa & DEV_RX_OFFLOAD_TIMESTAMP)
+ port_conf.rxmode.offloads |= DEV_RX_OFFLOAD_TIMESTAMP;
+
if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_MBUF_FAST_FREE)
port_conf.txmode.offloads |=
DEV_TX_OFFLOAD_MBUF_FAST_FREE;
}
/*
- * Parse the PTP FOLLOWUP message and send DELAY_REQ to the master clock.
+ * Parse the PTP FOLLOWUP message and send DELAY_REQ to the main clock.
*/
static void
parse_fup(struct ptpv2_data_slave_ordinary *ptp_data)
* The lcore main. This is the main thread that does the work, reading from an
* input port and writing to an output port.
*/
-static __attribute__((noreturn)) void
+static __rte_noreturn void
lcore_main(void)
{
uint16_t portid;
unsigned nb_rx;
struct rte_mbuf *m;
- /*
- * Check that the port is on the same NUMA node as the polling thread
- * for best performance.
- */
printf("\nCore %u Waiting for SYNC packets. [Ctrl+C to quit]\n",
rte_lcore_id());
pm = strtoul(portmask, &end, 16);
if ((portmask[0] == '\0') || (end == NULL) || (*end != '\0'))
- return -1;
-
- if (pm == 0)
- return -1;
+ return 0;
return pm;
}
if (rte_lcore_count() > 1)
printf("\nWARNING: Too many lcores enabled. Only 1 used.\n");
- /* Call lcore_main on the master core only. */
+ /* Call lcore_main on the main core only. */
lcore_main();
+ /* clean up the EAL */
+ rte_eal_cleanup();
+
return 0;
}