examples: take promiscuous mode switch result into account
[dpdk.git] / examples / ptpclient / ptpclient.c
index 7d28f59..6e273f6 100644 (file)
@@ -49,7 +49,7 @@ static uint8_t ptp_enabled_ports[RTE_MAX_ETHPORTS];
 
 static const struct rte_eth_conf port_conf_default = {
        .rxmode = {
-               .max_rx_pkt_len = ETHER_MAX_LEN,
+               .max_rx_pkt_len = RTE_ETHER_MAX_LEN,
        },
 };
 
@@ -189,7 +189,14 @@ port_init(uint16_t port, struct rte_mempool *mbuf_pool)
        if (!rte_eth_dev_is_valid_port(port))
                return -1;
 
-       rte_eth_dev_info_get(port, &dev_info);
+       retval = rte_eth_dev_info_get(port, &dev_info);
+       if (retval != 0) {
+               printf("Error during getting device (port %u) info: %s\n",
+                               port, strerror(-retval));
+
+               return retval;
+       }
+
        if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_MBUF_FAST_FREE)
                port_conf.txmode.offloads |=
                        DEV_TX_OFFLOAD_MBUF_FAST_FREE;
@@ -233,10 +240,19 @@ port_init(uint16_t port, struct rte_mempool *mbuf_pool)
                return retval;
 
        /* Enable timesync timestamping for the Ethernet device */
-       rte_eth_timesync_enable(port);
+       retval = rte_eth_timesync_enable(port);
+       if (retval < 0) {
+               printf("Timesync enable failed: %d\n", retval);
+               return retval;
+       }
 
        /* Enable RX in promiscuous mode for the Ethernet device. */
-       rte_eth_promiscuous_enable(port);
+       retval = rte_eth_promiscuous_enable(port);
+       if (retval != 0) {
+               printf("Promiscuous mode enable failed: %s\n",
+                       rte_strerror(-retval));
+               return retval;
+       }
 
        return 0;
 }
@@ -401,7 +417,7 @@ parse_fup(struct ptpv2_data_slave_ordinary *ptp_data)
                rte_eth_macaddr_get(ptp_data->portid, &eth_hdr->s_addr);
 
                /* Set multicast address 01-1B-19-00-00-00. */
-               ether_addr_copy(&eth_multicast, &eth_hdr->d_addr);
+               rte_ether_addr_copy(&eth_multicast, &eth_hdr->d_addr);
 
                eth_hdr->ether_type = htons(PTP_PROTOCOL);
                ptp_msg = (struct ptp_message *)
@@ -413,6 +429,9 @@ parse_fup(struct ptpv2_data_slave_ordinary *ptp_data)
                ptp_msg->delay_req.hdr.ver = 2;
                ptp_msg->delay_req.hdr.control = 1;
                ptp_msg->delay_req.hdr.log_message_interval = 127;
+               ptp_msg->delay_req.hdr.message_length =
+                       htons(sizeof(struct delay_req_msg));
+               ptp_msg->delay_req.hdr.domain_number = ptp_hdr->domain_number;
 
                /* Set up clock id. */
                client_clkid =