[dpdk-dev] [PATCH 0/2] Removal of RTE_MBUF_REFCNT

Sergio Gonzalez Monroy sergio.gonzalez.monroy at intel.com
Mon Feb 16 17:08:31 CET 2015


This patch tries to remove the RTE_MBUF_REFCNT config options and dependencies
by introducing a new mbuf flag IND_ATTACHED_MBUF that would indicate when the mbuf
is an indirect attached mbuf, to differentiate between indirect mbufs and mbufs
with external memory buffers (ie. vhost zero copy).

Previous discussion:
http://dpdk.org/ml/archives/dev/2014-October/007127.html

Currently for mbufs with refcnt, we cannot free mbufs with external memory
buffers (ie. vhost zero copy), as they are recognized as indirect
attached mbufs and therefore we free the direct mbuf it points to,
resulting in an error in the case of external memory buffers.

We solve the issue by introducing the IND_ATTACHED_MBUF flag, which indicates
that the mbuf is an indirect attached mbuf pointing to another mbuf.
When we free an mbuf, we only free the direct mbuf if the flag is set.
Freeing an mbuf with external buffer is the same as freeing a non attached mbuf.
The flag is set during attach and clear on detach.

So in the case of vhost zero copy where we have mbufs with external
buffers, by default we just free the mbuf and it is up to the user to deal with
the external buffer.

Sergio Gonzalez Monroy (2):
  mbuf: Introduce IND_ATTACHED_MBUF flag
  Remove RTE_MBUF_REFCNT references

 app/test/test_link_bonding.c            | 15 -----------
 app/test/test_mbuf.c                    | 17 +++----------
 config/common_bsdapp                    |  1 -
 config/common_linuxapp                  |  1 -
 examples/Makefile                       |  4 +--
 examples/ip_fragmentation/Makefile      |  4 ---
 examples/ip_pipeline/Makefile           |  3 ---
 examples/ip_pipeline/main.c             |  5 ----
 examples/ipv4_multicast/Makefile        |  4 ---
 examples/vhost/main.c                   | 19 +++-----------
 lib/librte_ip_frag/Makefile             |  4 ---
 lib/librte_ip_frag/rte_ip_frag.h        |  4 ---
 lib/librte_mbuf/rte_mbuf.c              |  2 --
 lib/librte_mbuf/rte_mbuf.h              | 45 +++++++--------------------------
 lib/librte_pmd_bond/Makefile            |  4 ---
 lib/librte_pmd_bond/rte_eth_bond.h      |  2 --
 lib/librte_pmd_bond/rte_eth_bond_args.c |  2 --
 lib/librte_pmd_bond/rte_eth_bond_pmd.c  | 10 --------
 lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c   |  8 ------
 lib/librte_port/Makefile                |  4 ---
 20 files changed, 19 insertions(+), 139 deletions(-)

-- 
1.9.3



More information about the dev mailing list