From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out1-smtp.messagingengine.com (out1-smtp.messagingengine.com [66.111.4.25]) by dpdk.org (Postfix) with ESMTP id 8538D1B316 for ; Thu, 18 Jan 2018 15:36:15 +0100 (CET) Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 0531920BBA; Thu, 18 Jan 2018 09:36:15 -0500 (EST) Received: from frontend1 ([10.202.2.160]) by compute1.internal (MEProxy); Thu, 18 Jan 2018 09:36:15 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fridaylinux.org; h=cc:content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to:x-me-sender:x-me-sender:x-sasl-enc; s= fm1; bh=dpwuS8/kkyVXOsUMViR1lXe9yECZoqJZNKISPTjfe/I=; b=r8WO2Vfh /TJ8vrUmi3LqM5bNLXnZLzuxyTc0a51inxTHI/bycC2N1uTjHXEXUHFyYISOl4cQ 8K6evhjuJniMY3Y2pB6qGDG651FYZxsGfFR6vECXUFitcGGXqYMyDmvop92tGQ9a agj6BXrXcQ7IJa95L0EG4gkyDF2OOXOpEzHY4qJJvzQtPGNs7dez9aceIyIL2eRk oKuCqKE08QStmJv19jzYH16K83gbKt/ujkS3jyjurcpseDHxj/niAQ5caP4u+2I3 EAnLge5IaPZDlBrc9PzmVc0vgnvkdbXXePTlhz5YqBFn61UtfUmaeavgBXN0Pipe YreW2QLfQF14aQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; bh=dpwuS8/kkyVXOsUMViR1lXe9yECZo qJZNKISPTjfe/I=; b=hvEGT9Gic71uokjXUUtHFjtPNoHMCY3HRSu+I8jKFpl9M 7Vif4vEkqRhFtXpwQw2BFygvuykt23xoxh8kpdMStMMipEXfQJv/cI41hFx4iEYu vPZJi1rkD4ys61owQgs/g6EZx49q3HF05PQqNPVkMApt1+BWMC1zPFUqzsnZ/RvJ Ot3ab2fP6M7lUUU+pNrRErO40oP409qMp0TDKhyaR9DwbqaW77z4flMeBhsmNMyK u/PEolo2sNVasR+0ROkoGpLU1kaQW6qN24kEIQZxyv+hoDJ5Oi7cMXLdrUBMhzVq AOl9Tgew5LASwsfRhr7UKuxOn8nt9pDfauCxWQM2g== X-ME-Sender: Received: from yliu-mob (unknown [115.148.90.22]) by mail.messagingengine.com (Postfix) with ESMTPA id 0BA047E46B; Thu, 18 Jan 2018 09:36:13 -0500 (EST) Date: Thu, 18 Jan 2018 22:36:10 +0800 From: Yuanhan Liu To: Fan Zhang Cc: dev@dpdk.org, maxime.coquelin@redhat.com, tiwei.bie@intel.com Message-ID: <20180118143610.GL29540@yliu-mob> References: <20171127200115.31049-1-roy.fan.zhang@intel.com> <20171127200115.31049-3-roy.fan.zhang@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20171127200115.31049-3-roy.fan.zhang@intel.com> User-Agent: Mutt/1.5.24 (2015-08-30) Subject: Re: [dpdk-dev] [PATCH 02/12] lib/librte_vhost: add vhost_user private info structure 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: Thu, 18 Jan 2018 14:36:15 -0000 On Mon, Nov 27, 2017 at 08:01:05PM +0000, Fan Zhang wrote: > This patch adds a vhost_user_dev_priv structure and a vhost_user > message handler function prototype to vhost_user. This allows > different types of devices to add private information and their > device-specific vhost-user message function handlers to > virtio_net structure. The change to vhost_user_msg_handler is > also added to call the device-specific message handler. > > Signed-off-by: Fan Zhang > --- > lib/librte_vhost/vhost_user.c | 13 ++++++++++++- > lib/librte_vhost/vhost_user.h | 9 ++++++++- > 2 files changed, 20 insertions(+), 2 deletions(-) > > diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c > index f4c7ce4..c5ae85f 100644 > --- a/lib/librte_vhost/vhost_user.c > +++ b/lib/librte_vhost/vhost_user.c > @@ -1337,7 +1337,18 @@ vhost_user_msg_handler(int vid, int fd) > break; > > default: Hi Fan, Firstly, apologize for the very late review! > - ret = -1; > + if (!dev->private_data) > + ret = -1; > + else { > + struct vhost_user_dev_priv *priv = dev->private_data; > + > + if (!priv->vhost_user_msg_handler) > + ret = -1; > + else { > + ret = (*priv->vhost_user_msg_handler)(dev, > + &msg, fd); I think this is more complex than necessary. You could just add msg_handler in the virtio_net struct and do: if (dev->msg_handler) ret = dev->msg_handler(dev, &msg, fd); else ret = -1; > + } > + } > break; > > } > diff --git a/lib/librte_vhost/vhost_user.h b/lib/librte_vhost/vhost_user.h > index 76d9fe2..990b40a 100644 > --- a/lib/librte_vhost/vhost_user.h > +++ b/lib/librte_vhost/vhost_user.h > @@ -81,7 +81,7 @@ typedef enum VhostUserRequest { > VHOST_USER_NET_SET_MTU = 20, > VHOST_USER_SET_SLAVE_REQ_FD = 21, > VHOST_USER_IOTLB_MSG = 22, > - VHOST_USER_MAX > + VHOST_USER_MAX = 25 That's weird, we should list all VHOST_USER messages here. --yliu > } VhostUserRequest; > > typedef enum VhostUserSlaveRequest { > @@ -137,6 +137,13 @@ typedef struct VhostUserMsg { > /* The version of the protocol we support */ > #define VHOST_USER_VERSION 0x1 > > +typedef int (*msg_handler)(struct virtio_net *dev, struct VhostUserMsg *msg, > + int fd); > + > +struct vhost_user_dev_priv { > + msg_handler vhost_user_msg_handler; > + char data[0]; > +}; > > /* vhost_user.c */ > int vhost_user_msg_handler(int vid, int fd); > -- > 2.9.5