> -----Original Message----- > From: Maxime Coquelin [mailto:maxime.coque...@redhat.com] > Sent: Tuesday, April 3, 2018 4:19 PM > To: Wang, Zhihong <zhihong.w...@intel.com>; dev@dpdk.org > Cc: Tan, Jianfeng <jianfeng....@intel.com>; Bie, Tiwei <tiwei....@intel.com>; > y...@fridaylinux.org; Liang, Cunming <cunming.li...@intel.com>; Wang, Xiao > W <xiao.w.w...@intel.com>; Daly, Dan <dan.d...@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; > > +} > > +