<div dir="ltr">I have an application where a call netOpen() and netClose() multiple times within the same process (see below) to create, use, and destroy a session. The first session works fine, however after the second netOpen() call I never receive any packets from the destination device on the network. I tried various sequences with the API that seemed reasonable, but I cannot get the second netOpen() to receive any packets. It may also be the case that the transmit never happens and as a consequence nothing is received from the destination device on the network. Note that netInit() is called once at the start of the application process and netShutdown() is called when the application terminates. Are there any obvious issues with the sequences listed that would prevent a subsequent session from working in terms of transmit and receive?<div><br></div><div>netInit() // Called once at start of application<br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>rte_log_set_global_level(…) // Set global log level</div><div>rte_eal_init(…)  // Initialize EAL</div><div>rte_eth_dev_count_avail // Determine the number of ports</div><div>rte_pktmbuf_pool_create(…)  // Create memory pool</div><div>rte_lcore_count()  // Validate cores</div><div>For each port</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>rte_eth_dev_reset(…)  // Reset port</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>rte_eth_dev_set_link_up(…)  // Bring up link on port</div></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>Wait for link to come up or timeout</div></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>rte_eth_link_get_nowait(…)</div></blockquote></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>For each port</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>rte_eth_dev_socket_id(…)  // Validate polling threads</div></blockquote></blockquote><div>netOpen() // Called by the application when creating a session<br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>rte_eth_dev_get_port_by_name(…) // Get the name of the port</div><div>rte_eth_dev_stop(…)  // Stop the port</div><div>rte_eth_dev_info_get(…)  // Get device info</div><div>rte_eth_dev_configure(…)  // Configure device</div><div>rte_eth_dev_adjust_nb_rx_tx_desc(…)  // Adjust descriptors</div><div>For each rx queue</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>rte_eth_rx_queue_setup(…)  // Setup receive queues</div></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>For each tx queue</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>rte_eth_tx_queue_setup(…)  // Setup transmit queues</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>rte_eth_promiscuous_enable(…)  // Enable promiscuous mode</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>rte_eth_macaddr_get(…)  // Store MAC address</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>rte_ring_create(…)  // Create receive ring</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>rte_eth_dev_start(…)   // Start the port</div></blockquote></blockquote><div>netClose()  // Called by the application when destroying a session<br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>rte_eth_dev_stop(…)  // Stop the port</div><div>rte_ring_free(…)  // Free the receive ring</div></blockquote><div>netShutdown() // Called once at termination of application<br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>rte_eal_cleanup()  // Release all resources</div></blockquote></div>