mk: add rule to print version number
[dpdk.git] / lib / librte_mbuf / rte_mbuf.h
index e0c5268..954e990 100644 (file)
@@ -1,7 +1,7 @@
 /*-
  *   BSD LICENSE
  * 
- *   Copyright(c) 2010-2013 Intel Corporation. All rights reserved.
+ *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
  *   All rights reserved.
  * 
  *   Redistribution and use in source and binary forms, with or without
@@ -659,17 +659,9 @@ static inline void rte_pktmbuf_detach(struct rte_mbuf *m)
 
 #endif /* RTE_MBUF_SCATTER_GATHER */
 
-/**
- * Free a segment of a packet mbuf into its original mempool.
- *
- * Free an mbuf, without parsing other segments in case of chained
- * buffers.
- *
- * @param m
- *   The packet mbuf segment to be freed.
- */
-static inline void __attribute__((always_inline))
-rte_pktmbuf_free_seg(struct rte_mbuf *m)
+
+static inline struct rte_mbuf* __attribute__((always_inline))
+__rte_pktmbuf_prefree_seg(struct rte_mbuf *m)
 {
        __rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 0);
 
@@ -690,12 +682,29 @@ rte_pktmbuf_free_seg(struct rte_mbuf *m)
                                __rte_mbuf_raw_free(md);
                }
 #endif
-               __rte_mbuf_raw_free(m);
+               return(m);
 #ifdef RTE_MBUF_SCATTER_GATHER
        }
+       return (NULL);
 #endif
 }
 
+/**
+ * Free a segment of a packet mbuf into its original mempool.
+ *
+ * Free an mbuf, without parsing other segments in case of chained
+ * buffers.
+ *
+ * @param m
+ *   The packet mbuf segment to be freed.
+ */
+static inline void __attribute__((always_inline))
+rte_pktmbuf_free_seg(struct rte_mbuf *m)
+{
+       if (likely(NULL != (m = __rte_pktmbuf_prefree_seg(m))))
+               __rte_mbuf_raw_free(m);
+}
+
 /**
  * Free a packet mbuf back into its original mempool.
  *