app/testpmd: fix physical port socket initialization
authorPhil Yang <phil.yang@arm.com>
Wed, 17 Oct 2018 01:36:30 +0000 (09:36 +0800)
committerFerruh Yigit <ferruh.yigit@intel.com>
Thu, 18 Oct 2018 08:24:39 +0000 (10:24 +0200)
Once the lcore list setting excluded the socket which physical device
attached, it will cause failure. Meanwhile, it will disable Testpmd
cross NUMA scenario.

Fixes: dbfb8ec7094c ("app/testpmd: optimize mbuf pool allocation")
Cc: stable@dpdk.org
Signed-off-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Gavin Hu <gavin.hu@arm.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
app/test-pmd/testpmd.c

index cce5a97..404d8fe 100644 (file)
@@ -565,9 +565,21 @@ set_default_fwd_ports_config(void)
        portid_t pt_id;
        int i = 0;
 
-       RTE_ETH_FOREACH_DEV(pt_id)
+       RTE_ETH_FOREACH_DEV(pt_id) {
                fwd_ports_ids[i++] = pt_id;
 
+               /* Update sockets info according to the attached device */
+               int socket_id = rte_eth_dev_socket_id(pt_id);
+               if (socket_id >= 0 && new_socket_id(socket_id)) {
+                       if (num_sockets >= RTE_MAX_NUMA_NODES) {
+                               rte_exit(EXIT_FAILURE,
+                                        "Total sockets greater than %u\n",
+                                        RTE_MAX_NUMA_NODES);
+                       }
+                       socket_ids[num_sockets++] = socket_id;
+               }
+       }
+
        nb_cfg_ports = nb_ports;
        nb_fwd_ports = nb_ports;
 }