> -----Original Message-----
> From: Maxime Coquelin [mailto:[email protected]]
> Sent: Tuesday, April 3, 2018 4:19 PM
> To: Wang, Zhihong <[email protected]>; [email protected]
> Cc: Tan, Jianfeng <[email protected]>; Bie, Tiwei <[email protected]>;
> [email protected]; Liang, Cunming <[email protected]>; Wang, Xiao
> W <[email protected]>; Daly, Dan <[email protected]>
> 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;
> > +}
> > +