net/null: fix secondary burst function selection
authorFerruh Yigit <ferruh.yigit@intel.com>
Mon, 2 Mar 2020 17:36:40 +0000 (17:36 +0000)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 21 Apr 2020 11:57:07 +0000 (13:57 +0200)
Secondary process uses the primary process device and while setting the
Rx/Tx functions it uses the device arguments from the secondary process
instead of the primary ones.

This may cause primary and secondary process use different Rx/Tx
functions unintentionally.

Fixes: bccc77a6a74a ("net/null: fix multi-process Rx and Tx")
Cc: stable@dpdk.org
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
drivers/net/null/rte_eth_null.c

index 025b73a..87a29b8 100644 (file)
@@ -584,6 +584,7 @@ rte_pmd_null_probe(struct rte_vdev_device *dev)
        PMD_LOG(INFO, "Initializing pmd_null for %s", name);
 
        if (rte_eal_process_type() == RTE_PROC_SECONDARY) {
+               struct pmd_internals *internals;
                eth_dev = rte_eth_dev_attach_secondary(name);
                if (!eth_dev) {
                        PMD_LOG(ERR, "Failed to probe %s", name);
@@ -592,7 +593,8 @@ rte_pmd_null_probe(struct rte_vdev_device *dev)
                /* TODO: request info from primary to set up Rx and Tx */
                eth_dev->dev_ops = &ops;
                eth_dev->device = &dev->device;
-               if (packet_copy) {
+               internals = eth_dev->data->dev_private;
+               if (internals->packet_copy) {
                        eth_dev->rx_pkt_burst = eth_null_copy_rx;
                        eth_dev->tx_pkt_burst = eth_null_copy_tx;
                } else {