diff --git a/helper/Makefile.am b/helper/Makefile.am
index 140f2f4..6820532 100644
--- a/helper/Makefile.am
+++ b/helper/Makefile.am
@@ -15,6 +15,7 @@ AM_LDFLAGS += -version-number '$(ODPHELPER_LIBSO_VERSION)'
 helperincludedir = $(includedir)/odp/helper/
 helperinclude_HEADERS = \
 		  $(srcdir)/include/odp/helper/chksum.h\
+		  $(srcdir)/include/odp/helper/chksum_inlines.h\
 		  $(srcdir)/include/odp/helper/chksum_types.h\
 		  $(srcdir)/include/odp/helper/eth.h\
 		  $(srcdir)/include/odp/helper/icmp.h\
diff --git a/helper/chksum.c b/helper/chksum.c
index f740618..c809bc0 100644
--- a/helper/chksum.c
+++ b/helper/chksum.c
@@ -12,6 +12,10 @@
 #include <stddef.h>
 #include <stdbool.h>
 
+#if ODP_ABI_COMPAT == 1
+#include <odp/helper/chksum_inlines.h>
+#endif
+
 /* The following union type is used to "view" an ordered set of bytes (either
  * 2 or 4) as 1 or 2 16-bit quantities - using host endian order. */
 typedef union {
diff --git a/helper/include/odp/helper/chksum.h b/helper/include/odp/helper/chksum.h
index 94c9305..ddca0e1 100644
--- a/helper/include/odp/helper/chksum.h
+++ b/helper/include/odp/helper/chksum.h
@@ -24,6 +24,7 @@ extern "C" {
  */
 
 /**
+ * @fn odph_chksum(void *buffer, int len)
  * Checksum
  *
  * @param buffer calculate chksum for buffer
@@ -31,24 +32,6 @@ extern "C" {
  *
  * @return checksum value in host cpu order
  */
-static inline odp_u16sum_t odph_chksum(void *buffer, int len)
-{
-	uint16_t *buf = (uint16_t *)buffer;
-	uint32_t sum = 0;
-	uint16_t result;
-
-	for (sum = 0; len > 1; len -= 2)
-		sum += *buf++;
-
-	if (len == 1)
-		sum += *(unsigned char *)buf;
-
-	sum = (sum >> 16) + (sum & 0xFFFF);
-	sum += (sum >> 16);
-	result = ~sum;
-
-	return  (__odp_force odp_u16sum_t) result;
-}
 
 /**
  * General Purpose TCP/UDP checksum function
@@ -94,6 +77,7 @@ int odph_udp_tcp_chksum(odp_packet_t     odp_pkt,
 			uint16_t        *chksum_ptr);
 
 /**
+ * @fn odph_tcp_chksum_set(odp_packet_t odp_pkt)
  * Generate TCP checksum
  *
  * This function supports TCP over either IPv4 or IPV6 - including handling
@@ -112,15 +96,9 @@ int odph_udp_tcp_chksum(odp_packet_t     odp_pkt,
  *                     be over IPv4 or IPv6.
  * @return             0 upon success and < 0 upon failure.
  */
-static inline int odph_tcp_chksum_set(odp_packet_t odp_pkt)
-{
-	if (!odp_packet_has_tcp(odp_pkt))
-		return -1;
-
-	return odph_udp_tcp_chksum(odp_pkt, ODPH_CHKSUM_GENERATE, NULL);
-}
 
 /**
+ * @fn odph_udp_chksum_set(odp_packet_t odp_pkt)
  * Generate UDP checksum
  *
  * This function supports UDP over either IPv4 or IPV6 - including handling
@@ -139,15 +117,9 @@ static inline int odph_tcp_chksum_set(odp_packet_t odp_pkt)
  *                     be over IPv4 or IPv6.
  * @return             0 upon success and < 0 upon failure.
  */
-static inline int odph_udp_chksum_set(odp_packet_t odp_pkt)
-{
-	if (!odp_packet_has_udp(odp_pkt))
-		return -1;
-
-	return odph_udp_tcp_chksum(odp_pkt, ODPH_CHKSUM_GENERATE, NULL);
-}
 
 /**
+ * @fn odph_tcp_chksum_verify(odp_packet_t odp_pkt)
  * Verify TCP checksum
  *
  * This function supports TCP over either IPv4 or IPV6 - including handling
@@ -167,15 +139,9 @@ static inline int odph_udp_chksum_set(odp_packet_t odp_pkt)
  *                     the incoming chksum field is correct, else returns 2
  *                     when the chksum field is incorrect or 0.
  */
-static inline int odph_tcp_chksum_verify(odp_packet_t odp_pkt)
-{
-	if (!odp_packet_has_tcp(odp_pkt))
-		return -1;
-
-	return odph_udp_tcp_chksum(odp_pkt, ODPH_CHKSUM_VERIFY, NULL);
-}
 
 /**
+ * @fn odph_udp_chksum_verify(odp_packet_t odp_pkt)
  * Verify UDP checksum
  *
  * This function supports UDP over either IPv4 or IPV6 - including handling
@@ -197,13 +163,16 @@ static inline int odph_tcp_chksum_verify(odp_packet_t odp_pkt)
  *                     if the incoming chksum field is correct, else returns 2
  *                     when the chksum field is incorrect.
  */
-static inline int odph_udp_chksum_verify(odp_packet_t odp_pkt)
-{
-	if (!odp_packet_has_udp(odp_pkt))
-		return -1;
 
-	return odph_udp_tcp_chksum(odp_pkt, ODPH_CHKSUM_VERIFY, NULL);
-}
+#if ODP_HELPER_ABI_COMPAT == 0
+#include <odp/helper/chksum_inlines.h>
+#else
+odp_u16sum_t odph_chksum(void *buffer, int len);
+int odph_tcp_chksum_set(odp_packet_t odp_pkt);
+int odph_udp_chksum_set(odp_packet_t odp_pkt);
+int odph_tcp_chksum_verify(odp_packet_t odp_pkt);
+int odph_udp_chksum_verify(odp_packet_t odp_pkt);
+#endif
 
 /**
  * @}
diff --git a/helper/include/odp/helper/chksum_inlines.h b/helper/include/odp/helper/chksum_inlines.h
new file mode 100644
index 0000000..c022061
--- /dev/null
+++ b/helper/include/odp/helper/chksum_inlines.h
@@ -0,0 +1,77 @@
+/* Copyright (c) 2017, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier:     BSD-3-Clause
+ */
+
+/**
+ * @file
+ *
+ * ODP checksum inlne helper
+ */
+#ifndef ODPH_CHKSUM_INLINE_H_
+#define ODPH_CHKSUM_INLINE_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <odp/helper/static_inline.h>
+#include <odp/helper/chksum.h>
+
+_HELPER_STATIC odp_u16sum_t odph_chksum(void *buffer, int len)
+{
+	uint16_t *buf = (uint16_t *)buffer;
+	uint32_t sum = 0;
+	uint16_t result;
+
+	for (sum = 0; len > 1; len -= 2)
+		sum += *buf++;
+
+	if (len == 1)
+		sum += *(unsigned char *)buf;
+
+	sum = (sum >> 16) + (sum & 0xFFFF);
+	sum += (sum >> 16);
+	result = ~sum;
+
+	return  (__odp_force odp_u16sum_t) result;
+}
+
+_HELPER_STATIC int odph_tcp_chksum_set(odp_packet_t odp_pkt)
+{
+	if (!odp_packet_has_tcp(odp_pkt))
+		return -1;
+
+	return odph_udp_tcp_chksum(odp_pkt, ODPH_CHKSUM_GENERATE, NULL);
+}
+
+_HELPER_STATIC int odph_udp_chksum_set(odp_packet_t odp_pkt)
+{
+	if (!odp_packet_has_udp(odp_pkt))
+		return -1;
+
+	return odph_udp_tcp_chksum(odp_pkt, ODPH_CHKSUM_GENERATE, NULL);
+}
+
+_HELPER_STATIC int odph_tcp_chksum_verify(odp_packet_t odp_pkt)
+{
+	if (!odp_packet_has_tcp(odp_pkt))
+		return -1;
+
+	return odph_udp_tcp_chksum(odp_pkt, ODPH_CHKSUM_VERIFY, NULL);
+}
+
+_HELPER_STATIC int odph_udp_chksum_verify(odp_packet_t odp_pkt)
+{
+	if (!odp_packet_has_udp(odp_pkt))
+		return -1;
+
+	return odph_udp_tcp_chksum(odp_pkt, ODPH_CHKSUM_VERIFY, NULL);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
