On 10/2/2018 12:38 PM, Thomas Monjalon wrote: > 02/10/2018 12:50, Raslan Darawsheh: >> From: Thomas Monjalon <tho...@monjalon.net> >>> 02/10/2018 12:34, Raslan Darawsheh: >>>> @@ -2056,6 +2179,13 @@ rte_pmd_tap_probe(struct rte_vdev_device *dev) >>>> >>>> TAP_LOG(NOTICE, "Initializing pmd_tap for %s as %s", >>>> >>>> name, tap_name); >>>> >>>> + /* Register IPC feed callback */ >>>> + ret = rte_mp_action_register(TAP_MP_KEY, tap_mp_sync_queues); >>>> + if (ret < 0 && rte_errno != EEXIST) { >>>> + TAP_LOG(ERR, "%s: Failed to register IPC callback: %s", >>>> + tuntap_name, strerror(rte_errno)); >>>> + goto leave; >>>> + } >>>> >>>> ret = eth_dev_tap_create(dev, tap_name, remote_iface, &user_mac, >>>> >>>> ETH_TUNTAP_TYPE_TAP); >>> >>> Is it an issue registering tap_mp_sync_queues at each tap probing? >>> Should we do it only once? >> >> It should be as of per device so we should do it for each port alone since >> several ports can have different queues. >> >> Moreover, if the port that has the registration was closed or unplugged >> we'll not be able to sync qeues for other ports. > > I think we should do register on first tap device probing and never > unregisters. > > Ferruh, any opinion?
I think it is good to unregister, but we need to keep number of active tap devices, so register if "active_tap == 1", unregister when "active_tap == 0" ?