On 2015/11/10 19:05, Panu Matilainen wrote: > On 11/10/2015 11:48 AM, Tetsuya Mukawa wrote: >> 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? > > Not quite. Because the ABI has already been broken between 2.1 and > 2.2, you can ride the same wave without messing with NEXT_ABI and such. > > Like said, librte_vhost is pending a LIBABIVER bump to 2, but that is > regardless of this patch. > > - Panu - >
Thanks. I can clearly understand. Tetsuya