[dpdk-dev] [PATCH v6 3/3] net/tap: allow secondary process to access primary device queues

Raslan Darawsheh rasland at mellanox.com
Wed Oct 17 08:54:15 CEST 2018


Hi,

> -----Original Message-----
> From: Ferruh Yigit <ferruh.yigit at intel.com>
> Sent: Tuesday, October 16, 2018 2:28 PM
> To: Raslan Darawsheh <rasland at mellanox.com>; keith.wiles at intel.com
> Cc: Thomas Monjalon <thomas at monjalon.net>; dev at dpdk.org; Shahaf
> Shuler <shahafs at mellanox.com>; Ori Kam <orika at mellanox.com>
> Subject: Re: [PATCH v6 3/3] net/tap: allow secondary process to access
> primary device queues
> 
> On 10/16/2018 11:06 AM, Raslan Darawsheh wrote:
> > Hi Ferruh,
> >
> > I didn't do it this way since I don't want it to unregister in case it was the
> second device for example and it failed to prob.
> > Which means only the first probed tap and the last removed tap will handle
> this registration and deregistration.
> 
> What I am saying will do the same, only register in the first device probed and
> unregister in the last device.
> 
> `tap_devices_count` is already there, why you don't rely on it, but call
> rte_mp_action_register() anyway and rely on it will return EEXIST in second
> and later calls.
> 
> Both will work, just I think using `tap_devices_count` is simpler.
> 
You are right about probing.
but, not in the closing of the ports, 
since any port will try to unregister the first one which will do the unregister will succeed.
meanwhile, I need only the last one to unregister.

> >
> > Kindest regards,
> > Raslan Darawsheh
> >
> >> -----Original Message-----
> >> From: Ferruh Yigit <ferruh.yigit at intel.com>
> >> Sent: Thursday, October 11, 2018 7:33 PM
> >> To: Raslan Darawsheh <rasland at mellanox.com>; keith.wiles at intel.com
> >> Cc: Thomas Monjalon <thomas at monjalon.net>; dev at dpdk.org; Shahaf
> >> Shuler <shahafs at mellanox.com>; Ori Kam <orika at mellanox.com>
> >> Subject: Re: [PATCH v6 3/3] net/tap: allow secondary process to
> >> access primary device queues
> >>
> >> On 10/10/2018 3:39 PM, Raslan Darawsheh wrote:
> >>> @@ -2082,6 +2214,14 @@ 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_devices_count) {
> >>> +		TAP_LOG(ERR, "%s: Failed to register IPC callback: %s",
> >>> +			tuntap_name, strerror(rte_errno));
> >>> +		goto leave;
> >>> +	}
> >>> +	tap_devices_count++;
> >>>  	ret = eth_dev_tap_create(dev, tap_name, remote_iface,
> >> &user_mac,
> >>>  		ETH_TUNTAP_TYPE_TAP);
> >>
> >> Why not rely on "tap_devices_count" but call rte_mp_action_register()
> >> every time and try to figure out status from ret?
> >>
> >> if (tap_devices_count == 0) {
> >>   ret = rte_mp_action_register(TAP_MP_KEY, tap_mp_sync_queues);
> >>   if (ret < 0) {
> >>     TAP_LOG();
> >>     goto leave;
> >>   }
> >> }
> >> tap_devices_count++;
> >


Kindest regards,
Raslan Darawsheh


More information about the dev mailing list