[dpdk-dev] [PATCH v5 2/5] vhost: support selective datapath

Wang, Zhihong zhihong.wang at intel.com
Tue Apr 3 16:35:30 CEST 2018



> -----Original Message-----
> From: Maxime Coquelin [mailto:maxime.coquelin at redhat.com]
> Sent: Tuesday, April 3, 2018 4: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 v5 2/5] vhost: support selective datapath
> 
> 
> 
> On 04/02/2018 01:46 PM, Zhihong Wang wrote:
> > +int
> > +rte_vdpa_register_device(struct rte_vdpa_dev_addr *addr,
> > +		struct rte_vdpa_dev_ops *ops)
> > +{
> > +	struct rte_vdpa_device *dev;
> > +	char device_name[MAX_VDPA_NAME_LEN];
> > +	int i;
> > +
> > +	if (vdpa_device_num >= MAX_VHOST_DEVICE)
> > +		return -1;
> > +
> > +	for (i = 0; i < MAX_VHOST_DEVICE; i++) {
> > +		if (vdpa_devices[i] && is_same_vdpa_device(addr,
> > +					&vdpa_devices[i]->addr))
> > +			return -1;
> > +	}
> 
> For consistency, I changed above check to look like same one in
> _find_device_id:

That's better. Thanks.

> 
> 	for (i = 0; i < MAX_VHOST_DEVICE; i++) {
> 		dev = vdpa_devices[i];
> 		if (dev && is_same_vdpa_device(&dev->addr, addr))
> 			return -1;
> 	}
> 
> > +
> > +	for (i = 0; i < MAX_VHOST_DEVICE; i++) {
> > +		if (vdpa_devices[i] == NULL)
> > +			break;
> > +	}
> > +
> > +	sprintf(device_name, "vdpa-dev-%d", i);
> > +	dev = rte_zmalloc(device_name, sizeof(struct rte_vdpa_device),
> > +			RTE_CACHE_LINE_SIZE);
> > +	if (!dev)
> > +		return -1;
> > +
> > +	memcpy(&dev->addr, addr, sizeof(struct rte_vdpa_dev_addr));
> > +	dev->ops = ops;
> > +	vdpa_devices[i] = dev;
> > +	vdpa_device_num++;
> > +
> > +	return i;
> > +}
> > +
> > +int
> > +rte_vdpa_unregister_device(int did)
> > +{
> > +	if (did < 0 || did >= MAX_VHOST_DEVICE || vdpa_devices[did] == NULL)
> > +		return -1;
> > +
> > +	rte_free(vdpa_devices[did]);
> > +	vdpa_devices[did] = NULL;
> > +	vdpa_device_num--;
> > +
> > +	return did;
> > +}
> > +
> > +int
> > +rte_vdpa_find_device_id(struct rte_vdpa_dev_addr *addr)
> > +{
> > +	struct rte_vdpa_device *dev;
> > +	int i;
> > +
> > +	for (i = 0; i < MAX_VHOST_DEVICE; ++i) {
> > +		dev = vdpa_devices[i];
> > +		if (dev && is_same_vdpa_device(&dev->addr, addr) == 0)
> > +			return i;
> > +	}
> > +
> > +	return -1;
> > +}
> > +


More information about the dev mailing list