[PATCH v18 10/23] net/pcap: add datapath debug logging
Stephen Hemminger
stephen at networkplumber.org
Sun Mar 1 03:05:43 CET 2026
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 <stephen at networkplumber.org>
---
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 14014a9e4b..4ae08d3b3c 100644
--- a/drivers/net/pcap/pcap_ethdev.c
+++ b/drivers/net/pcap/pcap_ethdev.c
@@ -420,7 +420,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,7 +513,7 @@ 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 {
/*
@@ -521,7 +521,7 @@ eth_pcap_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
* Assume it is EBUSY, ENOMEM, or EINTR, something that can be retried.
*/
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
More information about the dev
mailing list