[dpdk-dev] [PATCH v6 3/3] net/tap: allow secondary process to access primary device queues
Ferruh Yigit
ferruh.yigit at intel.com
Tue Oct 16 13:27:41 CEST 2018
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.
>
> 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++;
>
More information about the dev
mailing list