Add datapath debug logging macros (PMD_RX_LOG, PMD_TX_LOG) gated
on RTE_ETHDEV_DEBUG_RX/TX. Use PMD_TX_LOG in transmit error paths
to aid debugging without impacting normal datapath performance.

Signed-off-by: Stephen Hemminger <[email protected]>
---
 drivers/net/pcap/pcap_ethdev.c |  8 ++++----
 drivers/net/pcap/pcap_osdep.h  | 14 ++++++++++++++
 2 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/drivers/net/pcap/pcap_ethdev.c b/drivers/net/pcap/pcap_ethdev.c
index 42c5a37177..8162e611e4 100644
--- a/drivers/net/pcap/pcap_ethdev.c
+++ b/drivers/net/pcap/pcap_ethdev.c
@@ -419,7 +419,7 @@ eth_pcap_tx_dumper(void *queue, struct rte_mbuf **bufs, 
uint16_t nb_pkts)
                data = rte_pktmbuf_read(mbuf, 0, caplen, temp_data);
                if (unlikely(data == NULL)) {
                        /* This only happens if mbuf is bogus pkt_len > 
data_len */
-                       PMD_LOG(ERR, "rte_pktmbuf_read failed");
+                       PMD_TX_LOG(ERR, "rte_pktmbuf_read failed");
                        dumper_q->tx_stat.err_pkts++;
                } else {
                        pcap_dump((u_char *)dumper, &header, data);
@@ -502,7 +502,7 @@ eth_pcap_tx(void *queue, struct rte_mbuf **bufs, uint16_t 
nb_pkts)
                const uint8_t *data;
 
                if (unlikely(!rte_pktmbuf_is_contiguous(mbuf) && len > 
RTE_ETH_PCAP_SNAPSHOT_LEN)) {
-                       PMD_LOG(ERR,
+                       PMD_TX_LOG(ERR,
                                "Dropping multi segment PCAP packet. Size (%u) 
> max size (%u).",
                                len, RTE_ETH_PCAP_SNAPSHOT_LEN);
                        tx_queue->tx_stat.err_pkts++;
@@ -513,12 +513,12 @@ eth_pcap_tx(void *queue, struct rte_mbuf **bufs, uint16_t 
nb_pkts)
                data = rte_pktmbuf_read(mbuf, 0, len, temp_data);
                if (unlikely(data == NULL)) {
                        /* This only happens if mbuf is bogus pkt_len > 
data_len */
-                       PMD_LOG(ERR, "rte_pktmbuf_read failed");
+                       PMD_TX_LOG(ERR, "rte_pktmbuf_read failed");
                        tx_queue->tx_stat.err_pkts++;
                } else {
                        /* Unfortunately, libpcap collapses transient (-EBUSY) 
and hard errors. */
                        if (pcap_sendpacket(pcap, data, len) != 0) {
-                               PMD_LOG(ERR, "pcap_sendpacket() failed: %s", 
pcap_geterr(pcap));
+                               PMD_TX_LOG(ERR, "pcap_sendpacket() failed: %s", 
pcap_geterr(pcap));
                                break;
                        }
                        num_tx++;
diff --git a/drivers/net/pcap/pcap_osdep.h b/drivers/net/pcap/pcap_osdep.h
index a0e2b5ace9..fe7399ff9f 100644
--- a/drivers/net/pcap/pcap_osdep.h
+++ b/drivers/net/pcap/pcap_osdep.h
@@ -13,6 +13,20 @@
 extern int eth_pcap_logtype;
 #define RTE_LOGTYPE_ETH_PCAP eth_pcap_logtype
 
+#ifdef RTE_ETHDEV_DEBUG_RX
+#define PMD_RX_LOG(level, ...) \
+       RTE_LOG_LINE_PREFIX(level, ETH_PCAP, "%s() rx: ", __func__, __VA_ARGS__)
+#else
+#define PMD_RX_LOG(...) do { } while (0)
+#endif
+
+#ifdef RTE_ETHDEV_DEBUG_TX
+#define PMD_TX_LOG(level, ...) \
+       RTE_LOG_LINE_PREFIX(level, ETH_PCAP, "%s() tx: ", __func__, __VA_ARGS__)
+#else
+#define PMD_TX_LOG(...) do { } while (0)
+#endif
+
 int osdep_iface_index_get(const char *name);
 int osdep_iface_mac_get(const char *name, struct rte_ether_addr *mac);
 
-- 
2.51.0

Reply via email to