23/07/2019 14:11, Andrew Rybchenko: > rte_eth_dev_info_get() returns void and caller does know if the function > does its job or not. Changing of the return value to int would be > API/ABI breakage which requires deprecation process and cannot be > backported to stable branches. For now, make sure that device info is > initialized even in the case of invalid port ID. > > Fixes: a30268e9a2d0 ("ethdev: reset whole dev info structure before filling") > Cc: sta...@dpdk.org > > Signed-off-by: Andrew Rybchenko <arybche...@solarflare.com> > --- > --- a/lib/librte_ethdev/rte_ethdev.c > +++ b/lib/librte_ethdev/rte_ethdev.c > + /* > + * Init dev_info before port_id check since caller does not have > + * return status and does not know if get is successful or not. > + */ > + memset(dev_info, 0, sizeof(struct rte_eth_dev_info));
If someone was using a canary to detect failure, it will be resetted. Why is it urgent to have this workaround? Can we wait one more release for the definitive fix with error code? > + > RTE_ETH_VALID_PORTID_OR_RET(port_id); > dev = &rte_eth_devices[port_id]; > > - memset(dev_info, 0, sizeof(struct rte_eth_dev_info)); > dev_info->rx_desc_lim = lim; > dev_info->tx_desc_lim = lim; > dev_info->device = dev->device;