From: Zhike Wang <wangzh...@jd.com>

Previously large packet would be dropped, instead now it is better to keep it 
via truncating it.

Signed-off-by: Zhike Wang <wangzh...@jd.com>
---
 drivers/net/pcap/rte_eth_pcap.c | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/drivers/net/pcap/rte_eth_pcap.c b/drivers/net/pcap/rte_eth_pcap.c
index 5186d8f..4614239 100644
--- a/drivers/net/pcap/rte_eth_pcap.c
+++ b/drivers/net/pcap/rte_eth_pcap.c
@@ -313,7 +313,7 @@ struct pmd_devargs_all {
        struct pcap_pkthdr header;
        pcap_dumper_t *dumper;
        unsigned char temp_data[RTE_ETH_PCAP_SNAPLEN];
-       size_t len;
+       size_t len, caplen;
 
        pp = rte_eth_devices[dumper_q->port_id].process_private;
        dumper = pp->tx_dumper[dumper_q->queue_id];
@@ -328,25 +328,23 @@ struct pmd_devargs_all {
                len = rte_pktmbuf_pkt_len(mbuf);
                if (unlikely(!rte_pktmbuf_is_contiguous(mbuf) &&
                                len > sizeof(temp_data))) {
-                       PMD_LOG(ERR,
-                               "Dropping multi segment PCAP packet. Size (%zd) 
> max size (%zd).",
-                               len, sizeof(temp_data));
-                       rte_pktmbuf_free(mbuf);
-                       continue;
+                       caplen = sizeof(temp_data);
+               } else {
+                       caplen = len;
                }
 
                calculate_timestamp(&header.ts);
                header.len = len;
-               header.caplen = header.len;
+               header.caplen = caplen;
                /* rte_pktmbuf_read() returns a pointer to the data directly
                 * in the mbuf (when the mbuf is contiguous) or, otherwise,
                 * a pointer to temp_data after copying into it.
                 */
                pcap_dump((u_char *)dumper, &header,
-                       rte_pktmbuf_read(mbuf, 0, len, temp_data));
+                       rte_pktmbuf_read(mbuf, 0, caplen, temp_data));
 
                num_tx++;
-               tx_bytes += len;
+               tx_bytes += caplen;
                rte_pktmbuf_free(mbuf);
        }
 
-- 
1.8.3.1


Reply via email to