[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