On 11/8/2019 2:33 AM, Zhike Wang wrote: > From: Zhike Wang <wangzh...@jd.com> > > Previously large packet would be dropped, instead now it is better to keep it > via truncating it.
Looks reasonable, thanks. cc'ing Cian too, since he did some pcap work recently. > > 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; No strong opinion, but what do you think removing the else leg by assigning the 'caplen' by default to 'len': len = caplen = rte_pktmbuf_pkt_len(mbuf); > } > > 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); > } > >