[dpdk-dev] [PATCH] pcap: set in_port value in packet mbuf data when each packet is received

Saori USAMI susami at igel.co.jp
Fri Sep 5 12:10:36 CEST 2014


The pkt.in_port parameter in mbuf should be set with an input port id
because DPDK apps may use it to know where each packet came from.

Signed-off-by: Saori USAMI <susami at igel.co.jp>
---
 lib/librte_pmd_pcap/rte_eth_pcap.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/lib/librte_pmd_pcap/rte_eth_pcap.c b/lib/librte_pmd_pcap/rte_eth_pcap.c
index eebe768..cfd3de4 100644
--- a/lib/librte_pmd_pcap/rte_eth_pcap.c
+++ b/lib/librte_pmd_pcap/rte_eth_pcap.c
@@ -63,6 +63,7 @@ static uint64_t hz;
 
 struct pcap_rx_queue {
 	pcap_t *pcap;
+	uint8_t in_port;
 	struct rte_mempool *mb_pool;
 	volatile unsigned long rx_pkts;
 	volatile unsigned long err_pkts;
@@ -154,6 +155,7 @@ eth_pcap_rx(void *queue,
 			rte_memcpy(mbuf->pkt.data, packet, header.len);
 			mbuf->pkt.data_len = (uint16_t)header.len;
 			mbuf->pkt.pkt_len = mbuf->pkt.data_len;
+			mbuf->pkt.in_port = pcap_q->in_port;
 			bufs[num_rx] = mbuf;
 			num_rx++;
 		} else {
@@ -373,6 +375,7 @@ eth_rx_queue_setup(struct rte_eth_dev *dev,
 	struct pcap_rx_queue *pcap_q = &internals->rx_queue[rx_queue_id];
 	pcap_q->mb_pool = mb_pool;
 	dev->data->rx_queues[rx_queue_id] = pcap_q;
+	pcap_q->in_port = dev->data->port_id;
 	return 0;
 }
 
-- 
1.9.1



More information about the dev mailing list