From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id 95C502BCE for ; Mon, 23 Apr 2018 11:54:50 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 23 Apr 2018 02:54:49 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,317,1520924400"; d="scan'208";a="218647273" Received: from aburakov-mobl.ger.corp.intel.com (HELO [10.237.220.109]) ([10.237.220.109]) by orsmga005.jf.intel.com with ESMTP; 23 Apr 2018 02:54:48 -0700 To: Jianfeng Tan , dev@dpdk.org Cc: thomas@monjalon.net References: <1520177405-59091-1-git-send-email-jianfeng.tan@intel.com> <1524243463-143438-1-git-send-email-jianfeng.tan@intel.com> <1524243463-143438-4-git-send-email-jianfeng.tan@intel.com> From: "Burakov, Anatoly" Message-ID: Date: Mon, 23 Apr 2018 10:54:47 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 In-Reply-To: <1524243463-143438-4-git-send-email-jianfeng.tan@intel.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: Re: [dpdk-dev] [PATCH v4 3/5] bus/vdev: bus scan by multi-process channel X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 Apr 2018 09:54:51 -0000 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 > Reviewed-by: Qi Zhang > --- <...> > +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()? > + 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"? > + 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 -- Thanks, Anatoly