Hi Chenbo, Thanks for your reply. I will send a new version to address these.
> -----Original Message----- > From: Xia, Chenbo <chenbo....@intel.com> > Sent: Monday, May 23, 2022 3:26 PM > To: Pei, Andy <andy....@intel.com>; dev@dpdk.org > Cc: maxime.coque...@redhat.com; Cao, Gang <gang....@intel.com>; Liu, > Changpeng <changpeng....@intel.com>; Xu, Rosen <rosen...@intel.com>; > Xiao, QimaiX <qimaix.x...@intel.com> > Subject: RE: [PATCH v8 07/13] vhost: add API to get vDPA device type > > > -----Original Message----- > > From: Pei, Andy <andy....@intel.com> > > Sent: Wednesday, May 18, 2022 8:14 PM > > To: dev@dpdk.org > > Cc: Xia, Chenbo <chenbo....@intel.com>; maxime.coque...@redhat.com; > > Cao, Gang <gang....@intel.com>; Liu, Changpeng > > <changpeng....@intel.com>; Xu, Rosen <rosen...@intel.com>; Xiao, > > QimaiX <qimaix.x...@intel.com> > > Subject: [PATCH v8 07/13] vhost: add API to get vDPA device type > > > > Vhost backend of different devices have different features. > > Add a API to get vDPA device type, net device or blk device > > an API > > > currently, so users can set different features for different kinds of > > devices. > > > > Signed-off-by: Andy Pei <andy....@intel.com> > > --- > > doc/guides/prog_guide/vhost_lib.rst | 5 ++++ > > doc/guides/rel_notes/release_22_07.rst | 4 ++++ > > lib/vhost/rte_vhost.h | 17 +++++++++++++ > > lib/vhost/socket.c | 44 > > ++++++++++++++++++++++++++++++++++ > > lib/vhost/vdpa_driver.h | 3 +++ > > lib/vhost/version.map | 1 + > > 6 files changed, 74 insertions(+) > > > > diff --git a/doc/guides/prog_guide/vhost_lib.rst > > b/doc/guides/prog_guide/vhost_lib.rst > > index f287b76..0337b38 100644 > > --- a/doc/guides/prog_guide/vhost_lib.rst > > +++ b/doc/guides/prog_guide/vhost_lib.rst > > @@ -282,6 +282,11 @@ The following is an overview of some key Vhost > > API > > functions: > > Clear inflight packets which are submitted to DMA engine in vhost > > async data > > path. Completed packets are returned to applications through ``pkts``. > > > > +* ``rte_vhost_driver_get_vdpa_dev_type(path, type)`` > > + > > + Get device type of vDPA device, such as VDPA_DEVICE_TYPE_NET, > > + VDPA_DEVICE_TYPE_BLK. > > + > > Vhost-user Implementations > > -------------------------- > > > > diff --git a/doc/guides/rel_notes/release_22_07.rst > > b/doc/guides/rel_notes/release_22_07.rst > > index e49cace..9550977 100644 > > --- a/doc/guides/rel_notes/release_22_07.rst > > +++ b/doc/guides/rel_notes/release_22_07.rst > > @@ -104,6 +104,10 @@ New Features > > * ``RTE_EVENT_QUEUE_ATTR_WEIGHT`` > > * ``RTE_EVENT_QUEUE_ATTR_AFFINITY`` > > > > +* **Added vhost API to get the device type of a vDPA device.** > > + > > + Added an API which can get the device type of vDPA device. > > + > > Release note has a requirement of order, check comment under 'New > features' > in release notes. > > Based on these comments, you should put this after 'Added vhost API to get > the number of in-flight packets' > > > > > Removed Items > > ------------- > > diff --git a/lib/vhost/rte_vhost.h b/lib/vhost/rte_vhost.h index > > c733f85..c977a24 100644 > > --- a/lib/vhost/rte_vhost.h > > +++ b/lib/vhost/rte_vhost.h > > @@ -117,6 +117,9 @@ > > > > #define RTE_MAX_VHOST_DEVICE 1024 > > > > +#define VDPA_DEVICE_TYPE_NET 0 > > +#define VDPA_DEVICE_TYPE_BLK 1 > > These will be new APIs of vhost lib. I suggest to rename them by adding > prefix 'RTE_VHOST_' > > Thanks, > Chenbo > > > + > > struct rte_vdpa_device; > > > > /** > > @@ -486,6 +489,20 @@ struct rte_vdpa_device * > > rte_vhost_driver_get_vdpa_device(const char *path); > > > > /** > > + * Get the device type of the vdpa device. > > + * > > + * @param path > > + * The vhost-user socket file path > > + * @param type > > + * the device type of the vdpa device > > + * @return > > + * 0 on success, -1 on failure > > + */ > > +__rte_experimental > > +int > > +rte_vhost_driver_get_vdpa_dev_type(const char *path, uint32_t *type); > > + > > +/** > > * Set the feature bits the vhost-user driver supports. > > * > > * @param path > > diff --git a/lib/vhost/socket.c b/lib/vhost/socket.c index > > b304339..ef0f401 100644 > > --- a/lib/vhost/socket.c > > +++ b/lib/vhost/socket.c > > @@ -619,6 +619,50 @@ struct rte_vdpa_device * } > > > > int > > +rte_vhost_driver_get_vdpa_dev_type(const char *path, uint32_t *type) > > +{ > > + struct vhost_user_socket *vsocket; > > + struct rte_vdpa_device *vdpa_dev; > > + uint32_t vdpa_type = 0; > > + int ret = 0; > > + > > + pthread_mutex_lock(&vhost_user.mutex); > > + vsocket = find_vhost_user_socket(path); > > + if (!vsocket) { > > + VHOST_LOG_CONFIG(ERR, > > + "(%s) socket file is not registered yet.\n", > > + path); > > + ret = -1; > > + goto unlock_exit; > > + } > > + > > + vdpa_dev = vsocket->vdpa_dev; > > + if (!vdpa_dev) { > > + ret = -1; > > + goto unlock_exit; > > + } > > + > > + if (vdpa_dev->ops->get_dev_type) { > > + ret = vdpa_dev->ops->get_dev_type(vdpa_dev, &vdpa_type); > > + if (ret) { > > + VHOST_LOG_CONFIG(ERR, > > + "(%s) failed to get vdpa dev type for > > socket file.\n", > > + path); > > + ret = -1; > > + goto unlock_exit; > > + } > > + } else { > > + vdpa_type = VDPA_DEVICE_TYPE_NET; > > + } > > + > > + *type = vdpa_type; > > + > > +unlock_exit: > > + pthread_mutex_unlock(&vhost_user.mutex); > > + return ret; > > +} > > + > > +int > > rte_vhost_driver_disable_features(const char *path, uint64_t > > features) { > > struct vhost_user_socket *vsocket; > > diff --git a/lib/vhost/vdpa_driver.h b/lib/vhost/vdpa_driver.h index > > e59a834..9cbd7cd 100644 > > --- a/lib/vhost/vdpa_driver.h > > +++ b/lib/vhost/vdpa_driver.h > > @@ -78,6 +78,9 @@ struct rte_vdpa_dev_ops { > > /** Set the device configuration space */ > > int (*set_config)(int vid, uint8_t *config, uint32_t offset, > > uint32_t size, uint32_t flags); > > + > > + /** get device type: net device, blk device... */ > > + int (*get_dev_type)(struct rte_vdpa_device *dev, uint32_t *type); > > }; > > > > /** > > diff --git a/lib/vhost/version.map b/lib/vhost/version.map index > > 5841315..583b4f3 100644 > > --- a/lib/vhost/version.map > > +++ b/lib/vhost/version.map > > @@ -90,6 +90,7 @@ EXPERIMENTAL { > > > > # added in 22.07 > > rte_vhost_async_get_inflight_thread_unsafe; > > + rte_vhost_driver_get_vdpa_dev_type; > > > > }; > > > > -- > > 1.8.3.1