[dpdk-dev] [PATCH v3 1/2] net/pcap: move pcap handler to process private
Ferruh Yigit
ferruh.yigit at intel.com
Thu Nov 15 00:05:19 CET 2018
On 11/14/2018 7:56 PM, Qi Zhang wrote:
> This is prework for data path enabling for secondary process.
> To prevent pcap handler opened by one process be overwritten by
> another process, each process should have their private copy,
> `rte_eth_dev->process_private` is exactly what we needed.
>
> Signed-off-by: Qi Zhang <qi.z.zhang at intel.com>
<...>
> @@ -646,8 +652,10 @@ eth_rx_queue_setup(struct rte_eth_dev *dev,
> struct rte_mempool *mb_pool)
> {
> struct pmd_internals *internals = dev->data->dev_private;
> + struct pmd_process_private *pp = dev->process_private;
> struct pcap_rx_queue *pcap_q = &internals->rx_queue[rx_queue_id];
>
> + pcap_q->pcap = pp->rx_pcap[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;
> @@ -663,8 +671,12 @@ eth_tx_queue_setup(struct rte_eth_dev *dev,
> const struct rte_eth_txconf *tx_conf __rte_unused)
> {
> struct pmd_internals *internals = dev->data->dev_private;
> + struct pmd_process_private *pp = dev->process_private;
> + struct pcap_tx_queue *pcap_q = &internals->tx_queue[tx_queue_id];
>
> - dev->data->tx_queues[tx_queue_id] = &internals->tx_queue[tx_queue_id];
> + pcap_q->pcap = pp->tx_pcap[tx_queue_id];
> + pcap_q->dumper = pp->tx_dumper[tx_queue_id];
> + dev->data->tx_queues[tx_queue_id] = pcap_q;
We can't do this, this will be same thing as not using process_private at all,
dev->data is shared between primary and secondary.
Handlers need to be accessed directly from process_private in burst functions.
To able to match queue with handlers in process_private, queue may need to
include queue_index.
tap pmd has similar implementation already.
More information about the dev
mailing list