> -----Original Message----- > From: Burakov, Anatoly > Sent: Monday, April 23, 2018 5:55 PM > To: Tan, Jianfeng; dev@dpdk.org > Cc: tho...@monjalon.net > Subject: Re: [dpdk-dev] [PATCH v4 3/5] bus/vdev: bus scan by multi-process > channel > > On 20-Apr-18 5:57 PM, Jianfeng Tan wrote: > > To scan the vdevs in primary, we send request to primary process > > to obtain the names for vdevs. > > > > Only the name is shared from the primary. In probe(), the device > > driver is supposed to locate (or request more) the detail > > information from the primary. > > > > Signed-off-by: Jianfeng Tan <jianfeng....@intel.com> > > Reviewed-by: Qi Zhang <qi.z.zh...@intel.com> > > --- > > <...> > > > +static int > > +vdev_action(const struct rte_mp_msg *mp_msg, const void *peer) > > +{ > > + struct rte_vdev_device *dev; > > + struct rte_mp_msg mp_resp; > > + struct vdev_param *ou = (struct vdev_param *)&mp_resp.param; > > + const struct vdev_param *in = (const struct vdev_param *)mp_msg- > >param; > > + const char *devname; > > + int num; > > + > > + strcpy(mp_resp.name, "vdev"); > > This string is used in a lot of places, so... #define? also, i think > action name is a bit too short. maybe make it more descriptive, like > "bus_vdev" or something to that effect? > > Also, i think Coverity will complain about not checking string length, > so... strlcpy()?
Will do in next version. > > > + mp_resp.len_param = sizeof(*ou); > > + mp_resp.num_fds = 0; > > + > > + switch (in->type) { > > + case VDEV_SCAN_REQ: > > + ou->type = VDEV_SCAN_ONE; > > + ou->num = 1; > > + num = 0; > > + > > + rte_spinlock_lock(&vdev_device_list_lock); > > + TAILQ_FOREACH(dev, &vdev_device_list, next) { > > + devname = rte_vdev_device_name(dev); > > + if (strlen(devname) == 0) > > + VDEV_LOG(INFO, "vdev with no name is not > sent"); > > The comment says it's "not sent" but code doesn't seem to indicate that > this will happen. Forgot "continue"? Nice catch, will fix. Thanks, Jianfeng > > > + VDEV_LOG(INFO, "send vdev, %s", devname); > > + strlcpy(ou->name, devname, > RTE_DEV_NAME_MAX_LEN); > > + if (rte_mp_sendmsg(&mp_resp) < 0) > > + VDEV_LOG(ERR, "send vdev, %s, failed, %s", > > + devname, strerror(rte_errno)); > > + num++; > > + } > > Once all of that is addressed, > > Reviewed-by: Anatoly Burakov <anatoly.bura...@intel.com> > > -- > Thanks, > Anatoly