[dpdk-dev] [PATCH 1/7] vhost: make capabilities configurable

Wang, Zhihong zhihong.wang at intel.com
Thu Feb 8 04:03:17 CET 2018


Hi Maxime,

> -----Original Message-----
> From: Maxime Coquelin [mailto:maxime.coquelin at redhat.com]
> Sent: Tuesday, February 6, 2018 6:19 PM
> To: Wang, Zhihong <zhihong.wang at intel.com>; dev at dpdk.org
> Cc: Tan, Jianfeng <jianfeng.tan at intel.com>; Bie, Tiwei
> <tiwei.bie at intel.com>; yliu at fridaylinux.org; Liang, Cunming
> <cunming.liang at intel.com>; Wang, Xiao W <xiao.w.wang at intel.com>; Daly,
> Dan <dan.daly at intel.com>
> Subject: Re: [PATCH 1/7] vhost: make capabilities configurable
> 
> Hi Zhihong,
> 
...
> > +int rte_vhost_driver_set_queue_num(const char *path, uint16_t
> queue_num)
> > +{
> > +	struct vhost_user_socket *vsocket;
> > +
> > +	pthread_mutex_lock(&vhost_user.mutex);
> > +	vsocket = find_vhost_user_socket(path);
> > +	if (vsocket)
> > +		vsocket->queue_num = queue_num;
> 
> Shouldn't be MIN(queue_num, VHOST_MAX_QUEUE_PAIRS) to be sure you
> can
> switch from HW offload to SW processing?

Yes, the check is necessary.

> 
> > +	pthread_mutex_unlock(&vhost_user.mutex);
> > +
> > +	return vsocket ? 0 : -1;
> > +}
...
> > -static void
> > +static int
> >   vhost_user_set_protocol_features(struct virtio_net *dev,
> >   				 uint64_t protocol_features)
> >   {
> > -	if (protocol_features & ~VHOST_USER_PROTOCOL_FEATURES)
> 
> I think the above check is still necessary, or it should be checked
> in rte_vhost_driver_set_protocol_features().

Thanks. Yes I think all set capabilities should be contained in the
capabilities of the vhost-user lib.

Will update rte_vhost_driver_set_*().

-Zhihong

> 
> Indeed, the application shouldn't set a protocol feature bit that isn't
> supported by the libvhost-user library.
> 
> > -		return;
> > +	uint64_t vhost_protocol_features = 0;
> > +
> > +	rte_vhost_driver_get_protocol_features(dev->ifname,
> > +			&vhost_protocol_features);
> > +	if (protocol_features & ~vhost_protocol_features) {
> > +		RTE_LOG(ERR, VHOST_CONFIG,
> > +			"(%d) received invalid negotiated
> protocol_features.\n",
> > +			dev->vid);
> > +		return -1;
> > +	}
> >
> >   	dev->protocol_features = protocol_features;
> > +
> > +	return 0;
> >   }
> >
> >   static int
> > @@ -1391,7 +1416,8 @@ vhost_user_msg_handler(int vid, int fd)
> >   		break;
> >
> >   	case VHOST_USER_GET_PROTOCOL_FEATURES:
> > -		vhost_user_get_protocol_features(dev, &msg);
> > +		msg.payload.u64 = vhost_user_get_protocol_features(dev);
> > +		msg.size = sizeof(msg.payload.u64);
> >   		send_vhost_reply(fd, &msg);
> >   		break;
> >   	case VHOST_USER_SET_PROTOCOL_FEATURES:
> > @@ -1451,7 +1477,7 @@ vhost_user_msg_handler(int vid, int fd)
> >   		break;
> >
> >   	case VHOST_USER_GET_QUEUE_NUM:
> > -		msg.payload.u64 = VHOST_MAX_QUEUE_PAIRS;
> > +		msg.payload.u64 = vhost_user_get_queue_num(dev);
> >   		msg.size = sizeof(msg.payload.u64);
> >   		send_vhost_reply(fd, &msg);
> >   		break;
> >
> 
> Maxime


More information about the dev mailing list