diff --git a/src/vnet/CMakeLists.txt b/src/vnet/CMakeLists.txt
index f8948de..69e041b 100644
--- a/src/vnet/CMakeLists.txt
+++ b/src/vnet/CMakeLists.txt
@@ -56,6 +56,7 @@
   handoff.h
   interface.h
   interface_funcs.h
+  interface_output.h
   ip/ip4_to_ip6.h
   ip/ip6_to_ip4.h
   ip/ip_types_api.h
diff --git a/src/vnet/interface_output.c b/src/vnet/interface_output.c
index eadee69..f289fcc 100644
--- a/src/vnet/interface_output.c
+++ b/src/vnet/interface_output.c
@@ -38,13 +38,13 @@
  */
 
 #include <vnet/vnet.h>
-#include <vnet/gso/gso.h>
 #include <vnet/ip/icmp46_packet.h>
 #include <vnet/ip/ip4.h>
 #include <vnet/ip/ip6.h>
 #include <vnet/udp/udp_packet.h>
 #include <vnet/feature/feature.h>
 #include <vnet/classify/trace_classify.h>
+#include <vnet/interface_output.h>
 
 typedef struct
 {
@@ -159,66 +159,6 @@
     }
 }
 
-static_always_inline void
-calc_checksums (vlib_main_t * vm, vlib_buffer_t * b)
-{
-  tcp_header_t *th;
-  udp_header_t *uh;
-  gso_header_offset_t gho = { 0 };
-
-  int is_ip4 = (b->flags & VNET_BUFFER_F_IS_IP4) != 0;
-  int is_ip6 = (b->flags & VNET_BUFFER_F_IS_IP6) != 0;
-
-  ASSERT (!(is_ip4 && is_ip6));
-
-  gho = vnet_gso_header_offset_parser (b, is_ip6);
-  th = (tcp_header_t *) (vlib_buffer_get_current (b) + gho.l4_hdr_offset);
-  uh = (udp_header_t *) (vlib_buffer_get_current (b) + gho.l4_hdr_offset);
-
-  if (is_ip4)
-    {
-      ip4_header_t *ip4;
-
-      ip4 =
-	(ip4_header_t *) (vlib_buffer_get_current (b) + gho.l3_hdr_offset);
-      if (b->flags & VNET_BUFFER_F_OFFLOAD_IP_CKSUM)
-	ip4->checksum = ip4_header_checksum (ip4);
-      if (b->flags & VNET_BUFFER_F_OFFLOAD_TCP_CKSUM)
-	{
-	  th->checksum = 0;
-	  th->checksum = ip4_tcp_udp_compute_checksum (vm, b, ip4);
-	}
-      else if (b->flags & VNET_BUFFER_F_OFFLOAD_UDP_CKSUM)
-	{
-	  uh->checksum = 0;
-	  uh->checksum = ip4_tcp_udp_compute_checksum (vm, b, ip4);
-	}
-    }
-  else if (is_ip6)
-    {
-      int bogus;
-      ip6_header_t *ip6;
-
-      ip6 =
-	(ip6_header_t *) (vlib_buffer_get_current (b) + gho.l3_hdr_offset);
-      if (b->flags & VNET_BUFFER_F_OFFLOAD_TCP_CKSUM)
-	{
-	  th->checksum = 0;
-	  th->checksum =
-	    ip6_tcp_udp_icmp_compute_checksum (vm, b, ip6, &bogus);
-	}
-      else if (b->flags & VNET_BUFFER_F_OFFLOAD_UDP_CKSUM)
-	{
-	  uh->checksum = 0;
-	  uh->checksum =
-	    ip6_tcp_udp_icmp_compute_checksum (vm, b, ip6, &bogus);
-	}
-    }
-  b->flags &= ~VNET_BUFFER_F_OFFLOAD_TCP_CKSUM;
-  b->flags &= ~VNET_BUFFER_F_OFFLOAD_UDP_CKSUM;
-  b->flags &= ~VNET_BUFFER_F_OFFLOAD_IP_CKSUM;
-}
-
 static_always_inline uword
 vnet_interface_output_node_inline (vlib_main_t * vm,
 				   vlib_node_runtime_t * node,
@@ -399,10 +339,22 @@
 		   VNET_BUFFER_F_OFFLOAD_UDP_CKSUM |
 		   VNET_BUFFER_F_OFFLOAD_IP_CKSUM))
 		{
-		  calc_checksums (vm, b[0]);
-		  calc_checksums (vm, b[1]);
-		  calc_checksums (vm, b[2]);
-		  calc_checksums (vm, b[3]);
+		  vnet_calc_checksums_inline
+		    (vm, b[0],
+		     b[0]->flags & VNET_BUFFER_F_IS_IP4,
+		     b[0]->flags & VNET_BUFFER_F_IS_IP6, 1 /* with gso */ );
+		  vnet_calc_checksums_inline
+		    (vm, b[1],
+		     b[1]->flags & VNET_BUFFER_F_IS_IP4,
+		     b[1]->flags & VNET_BUFFER_F_IS_IP6, 1 /* with gso */ );
+		  vnet_calc_checksums_inline
+		    (vm, b[2],
+		     b[2]->flags & VNET_BUFFER_F_IS_IP4,
+		     b[2]->flags & VNET_BUFFER_F_IS_IP6, 1 /* with gso */ );
+		  vnet_calc_checksums_inline
+		    (vm, b[3],
+		     b[3]->flags & VNET_BUFFER_F_IS_IP4,
+		     b[3]->flags & VNET_BUFFER_F_IS_IP6, 1 /* with gso */ );
 		}
 	    }
 	  b += 4;
@@ -450,7 +402,10 @@
 		  (VNET_BUFFER_F_OFFLOAD_TCP_CKSUM |
 		   VNET_BUFFER_F_OFFLOAD_UDP_CKSUM |
 		   VNET_BUFFER_F_OFFLOAD_IP_CKSUM))
-		calc_checksums (vm, b[0]);
+		vnet_calc_checksums_inline
+		  (vm, b[0],
+		   b[0]->flags & VNET_BUFFER_F_IS_IP4,
+		   b[0]->flags & VNET_BUFFER_F_IS_IP6, 1 /* with gso */ );
 	    }
 	  b += 1;
 	}
diff --git a/src/vnet/interface_output.h b/src/vnet/interface_output.h
index f1fa4d8..198ca28 100644
--- a/src/vnet/interface_output.h
+++ b/src/vnet/interface_output.h
@@ -41,24 +41,37 @@
 #define __INTERFACE_INLINES_H__
 
 #include <vnet/vnet.h>
+#include <vnet/gso/gso.h>
 
 static_always_inline void
-calc_checksums (vlib_main_t * vm, vlib_buffer_t * b)
+vnet_calc_checksums_inline (vlib_main_t * vm, vlib_buffer_t * b,
+			    int is_ip4, int is_ip6, int with_gso)
 {
   ip4_header_t *ip4;
   ip6_header_t *ip6;
   tcp_header_t *th;
   udp_header_t *uh;
 
-  int is_ip4 = (b->flags & VNET_BUFFER_F_IS_IP4) != 0;
-  int is_ip6 = (b->flags & VNET_BUFFER_F_IS_IP6) != 0;
-
   ASSERT (!(is_ip4 && is_ip6));
 
-  ip4 = (ip4_header_t *) (b->data + vnet_buffer (b)->l3_hdr_offset);
-  ip6 = (ip6_header_t *) (b->data + vnet_buffer (b)->l3_hdr_offset);
-  th = (tcp_header_t *) (b->data + vnet_buffer (b)->l4_hdr_offset);
-  uh = (udp_header_t *) (b->data + vnet_buffer (b)->l4_hdr_offset);
+  if (with_gso)
+    {
+      gso_header_offset_t gho;
+      gho = vnet_gso_header_offset_parser (b, is_ip6);
+      ip4 = (ip4_header_t *)
+	(vlib_buffer_get_current (b) + gho.l3_hdr_offset);
+      ip6 = (ip6_header_t *)
+	(vlib_buffer_get_current (b) + gho.l3_hdr_offset);
+      th = (tcp_header_t *) (vlib_buffer_get_current (b) + gho.l4_hdr_offset);
+      uh = (udp_header_t *) (vlib_buffer_get_current (b) + gho.l4_hdr_offset);
+    }
+  else
+    {
+      ip4 = (ip4_header_t *) (b->data + vnet_buffer (b)->l3_hdr_offset);
+      ip6 = (ip6_header_t *) (b->data + vnet_buffer (b)->l3_hdr_offset);
+      th = (tcp_header_t *) (b->data + vnet_buffer (b)->l4_hdr_offset);
+      uh = (udp_header_t *) (b->data + vnet_buffer (b)->l4_hdr_offset);
+    }
 
   if (is_ip4)
     {
diff --git a/src/vnet/ip/ip4_forward.c b/src/vnet/ip/ip4_forward.c
index 4ba0a73..952915f 100644
--- a/src/vnet/ip/ip4_forward.c
+++ b/src/vnet/ip/ip4_forward.c
@@ -2161,7 +2161,9 @@
 				    tx_sw_if_index0, &next_index, b[0]);
 	  next[0] = next_index;
 	  if (is_midchain)
-	    calc_checksums (vm, b[0]);
+	    vnet_calc_checksums_inline (vm, b[0], 1 /* is_ip4 */ ,
+					0 /* is_ip6 */ ,
+					0 /* with gso */ );
 	}
       else
 	{
@@ -2183,7 +2185,9 @@
 				    tx_sw_if_index1, &next_index, b[1]);
 	  next[1] = next_index;
 	  if (is_midchain)
-	    calc_checksums (vm, b[1]);
+	    vnet_calc_checksums_inline (vm, b[0], 1 /* is_ip4 */ ,
+					0 /* is_ip6 */ ,
+					0 /* with gso */ );
 	}
       else
 	{
@@ -2327,7 +2331,9 @@
 	  next[0] = next_index;
 
 	  if (is_midchain)
-	    calc_checksums (vm, b[0]);
+	    vnet_calc_checksums_inline (vm, b[0], 1 /* is_ip4 */ ,
+					0 /* is_ip6 */ ,
+					0 /* with gso */ );
 
 	  /* Guess we are only writing on simple Ethernet header. */
 	  vnet_rewrite_one_header (adj0[0], ip0, sizeof (ethernet_header_t));
@@ -2426,7 +2432,9 @@
 
 	  if (is_midchain)
 	    /* this acts on the packet that is about to be encapped */
-	    calc_checksums (vm, b[0]);
+	    vnet_calc_checksums_inline (vm, b[0], 1 /* is_ip4 */ ,
+					0 /* is_ip6 */ ,
+					0 /* with gso */ );
 
 	  /* Guess we are only writing on simple Ethernet header. */
 	  vnet_rewrite_one_header (adj0[0], ip0, sizeof (ethernet_header_t));
diff --git a/src/vnet/ip/ip6_forward.c b/src/vnet/ip/ip6_forward.c
index b7cdb1a..9c195e6 100644
--- a/src/vnet/ip/ip6_forward.c
+++ b/src/vnet/ip/ip6_forward.c
@@ -1859,8 +1859,12 @@
 	    {
 	      /* before we paint on the next header, update the L4
 	       * checksums if required, since there's no offload on a tunnel */
-	      calc_checksums (vm, p0);
-	      calc_checksums (vm, p1);
+	      vnet_calc_checksums_inline (vm, p0, 0 /* is_ip4 */ ,
+					  1 /* is_ip6 */ ,
+					  0 /* with gso */ );
+	      vnet_calc_checksums_inline (vm, p1, 0 /* is_ip4 */ ,
+					  1 /* is_ip6 */ ,
+					  0 /* with gso */ );
 	    }
 
 	  /* Guess we are only writing on simple Ethernet header. */
@@ -1955,7 +1959,9 @@
 
 	  if (is_midchain)
 	    {
-	      calc_checksums (vm, p0);
+	      vnet_calc_checksums_inline (vm, p0, 0 /* is_ip4 */ ,
+					  1 /* is_ip6 */ ,
+					  0 /* with gso */ );
 	    }
 
 	  /* Guess we are only writing on simple Ethernet header. */
