[dpdk-dev] [PATCH v3 1/2] vhost: Add callback and private data for vhost PMD

Tetsuya Mukawa mukawa at igel.co.jp
Tue Nov 10 10:48:04 CET 2015


On 2015/11/10 16:16, Panu Matilainen wrote:
> On 11/10/2015 05:13 AM, Tetsuya Mukawa wrote:
>> On 2015/11/10 3:16, Aaron Conole wrote:
>>> Greetings,
>>>
>>> Tetsuya Mukawa <mukawa at igel.co.jp> writes:
>>>> These variables are needed to be able to manage one of virtio devices
>>>> using both vhost library APIs and vhost PMD.
>>>> For example, if vhost PMD uses current callback handler and private
>>>> data
>>>> provided by vhost library, A DPDK application that links vhost library
>>>> cannot use some of vhost library APIs. To avoid it, callback and
>>>> private
>>>> data for vhost PMD are needed.
>>>>
>>>> Signed-off-by: Tetsuya Mukawa <mukawa at igel.co.jp>
>>>> ---
>>>>   lib/librte_vhost/rte_vhost_version.map        |  6 +++
>>>>   lib/librte_vhost/rte_virtio_net.h             |  3 ++
>>>>   lib/librte_vhost/vhost_user/virtio-net-user.c | 13 +++----
>>>>   lib/librte_vhost/virtio-net.c                 | 56
>>>> +++++++++++++++++++++++++--
>>>>   lib/librte_vhost/virtio-net.h                 |  4 +-
>>>>   5 files changed, 70 insertions(+), 12 deletions(-)
>>>>
>>>> diff --git a/lib/librte_vhost/rte_vhost_version.map
>>>> b/lib/librte_vhost/rte_vhost_version.map
>>>> index 3d8709e..00a9ce5 100644
>>>> --- a/lib/librte_vhost/rte_vhost_version.map
>>>> +++ b/lib/librte_vhost/rte_vhost_version.map
>>>> @@ -20,3 +20,9 @@ DPDK_2.1 {
>>>>       rte_vhost_driver_unregister;
>>>>
>>>>   } DPDK_2.0;
>>>> +
>>>> +DPDK_2.2 {
>>>> +    global:
>>>> +
>>>> +    rte_vhost_driver_pmd_callback_register;
>>>> +} DPDK_2.1;
>>>> diff --git a/lib/librte_vhost/rte_virtio_net.h
>>>> b/lib/librte_vhost/rte_virtio_net.h
>>>> index 5687452..3ef6e58 100644
>>>> --- a/lib/librte_vhost/rte_virtio_net.h
>>>> +++ b/lib/librte_vhost/rte_virtio_net.h
>>>> @@ -128,6 +128,7 @@ struct virtio_net {
>>>>       char            ifname[IF_NAME_SZ];    /**< Name of the tap
>>>> device or socket path. */
>>>>       uint32_t        virt_qp_nb;    /**< number of queue pair we
>>>> have allocated */
>>>>       void            *priv;        /**< private context */
>>>> +    void            *pmd_priv;    /**< private context for vhost
>>>> PMD */
>>>>       struct vhost_virtqueue    *virtqueue[VHOST_MAX_QUEUE_PAIRS *
>>>> 2];    /**< Contains all virtqueue information. */
>>>>   } __rte_cache_aligned;
>>> Sorry if I'm missing something, but this is an ABI breaker, isn't it? I
>>> think this needs the RTE_NEXT_ABI tag around it.
>>
>> Hi Aaron,
>>
>> Thanks for reviewing. Yes, your are correct.
>> I guess I can implement vhost PMD without this variable, so I will
>> remove it.
>
> No need to.
>
> The librte_vhost ABI has already been broken during the DPDK 2.2 cycle
> by the multiqueue changes, but that's okay since it was announced
> during 2.1 cycle (in commit 3c848bd7b1c6f4f681b833322a748fdefbb5fb2d).
>
> What is missing right now is bumping the library version, and that
> must happen before 2.2 is released.
>
>     - Panu -
>
>

Hi Panu,

Thank you so much. Let me make sure what you mean.
I guess I need to add RTE_NEXT_ABI tags where pmd_priv is used. This is
because we don't break DPDK-2.1 ABI.
Anyway, the tag will be removed when DPDK-2.2 is released, then we can
use vhost PMD.
Is this correct?

Thanks,
Tetsuya



More information about the dev mailing list