On Wed, Jun 08, 2016 at 10:34:17AM +0000, Ananyev, Konstantin wrote: > Hi Adrien, > > > > > An assertion failure occurs in __rte_mbuf_raw_free() (called by a few PMDs) > > when compiling DPDK with CONFIG_RTE_LOG_LEVEL=RTE_LOG_DEBUG and starting > > applications with a log level high enough to trigger it. > > > > While rte_mbuf_raw_alloc() sets refcount to 1, __rte_mbuf_raw_free() > > expects it to be 0. > >Considering users are not expected to reset the > > reference count to satisfy assert() and that raw functions are designed on > > purpose without safety belts, remove these checks. > > Yes, it refcnt supposed to be set to 0 by __rte_pktmbuf_prefree_seg(). > Wright now, it is a user responsibility to make sure refcnt==0 before pushing > mbuf back to the pool. > Not sure why do you consider that wrong? > If the user calls __rte_mbuf_raw_free() manualy it is his responsibility to > make > sure mbuf's refcn==0. > BTW, why are you doing it? > The comment clearly states that the function is for internal use: > /** > * @internal Put mbuf back into its original mempool. > * The use of that function is reserved for RTE internal needs. > * Please use rte_pktmbuf_free(). > * > * @param m > * The mbuf to be freed. > */ > static inline void __attribute__((always_inline)) > __rte_mbuf_raw_free(struct rte_mbuf *m)
Bottom line is that I'm dropping this patch for now. We'll update our last mlx5 patchset to do it properly and keep these assert in place. Thanks. -- Adrien Mazarguil 6WIND