On Wed, 13 Aug 2025 15:48:29 +0400 (+04) Ivan Malov <ivan.ma...@arknetworks.am> wrote:
> > +static int nbl_dev_update_hw_xstats(struct nbl_dev_mgt *dev_mgt, struct > > rte_eth_xstat *xstats, > > + u16 hw_xstats_cnt, u16 *xstats_cnt) > > +{ > > + struct nbl_common_info *common = NBL_DEV_MGT_TO_COMMON(dev_mgt); > > + struct nbl_dispatch_ops *disp_ops = NBL_DEV_MGT_TO_DISP_OPS(dev_mgt); > > + u64 *hw_stats; > > + int i; > > + u16 count = *xstats_cnt; > > + > > + hw_stats = rte_zmalloc("nbl_xstats_cnt", hw_xstats_cnt * sizeof(u64), > > 0); > > Do you believe it's the best course of action, to allocate and free a bounce > buffer on each invocation? This function is not strictly fast-path, but I'd > say > semi-fast. Some applications may want to invoke it pretty often. Unless the buffer is shared with another process, better to use regular malloc or alloca for this. Using rte_malloc() is slower, and requires use of huge pages when not needed.