gso: remove the interface count
[vpp.git] / src / vnet / ip / ip4_forward.c
index 1550b31..bb036c8 100644 (file)
@@ -2293,8 +2293,8 @@ typedef enum
 
 always_inline void
 ip4_mtu_check (vlib_buffer_t * b, u16 packet_len,
-              u16 adj_packet_bytes, bool df, u16 * next, u32 * error,
-              u8 is_midchain)
+              u16 adj_packet_bytes, bool df, u16 * next,
+              u8 is_midchain, u32 * error)
 {
   if (packet_len > adj_packet_bytes)
     {
@@ -2312,8 +2312,8 @@ ip4_mtu_check (vlib_buffer_t * b, u16 packet_len,
          /* IP fragmentation */
          ip_frag_set_vnet_buffer (b, adj_packet_bytes,
                                   (is_midchain ?
-                                   IP4_FRAG_NEXT_IP4_REWRITE_MIDCHAIN :
-                                   IP4_FRAG_NEXT_IP4_REWRITE), 0);
+                                   IP_FRAG_NEXT_IP_REWRITE_MIDCHAIN :
+                                   IP_FRAG_NEXT_IP_REWRITE), 0);
          *next = IP4_REWRITE_NEXT_FRAGMENT;
        }
     }
@@ -2394,8 +2394,7 @@ always_inline uword
 ip4_rewrite_inline_with_gso (vlib_main_t * vm,
                             vlib_node_runtime_t * node,
                             vlib_frame_t * frame,
-                            int do_counters, int is_midchain, int is_mcast,
-                            int do_gso)
+                            int do_counters, int is_midchain, int is_mcast)
 {
   ip_lookup_main_t *lm = &ip4_main.lookup_main;
   u32 *from = vlib_frame_vector_args (frame);
@@ -2423,7 +2422,7 @@ ip4_rewrite_inline_with_gso (vlib_main_t * vm,
   b = bufs;
   while (n_left_from >= 8)
     {
-      ip_adjacency_t *adj0, *adj1;
+      const ip_adjacency_t *adj0, *adj1;
       ip4_header_t *ip0, *ip1;
       u32 rw_len0, error0, adj_index0;
       u32 rw_len1, error1, adj_index1;
@@ -2477,21 +2476,21 @@ ip4_rewrite_inline_with_gso (vlib_main_t * vm,
       u16 ip0_len = clib_net_to_host_u16 (ip0->length);
       u16 ip1_len = clib_net_to_host_u16 (ip1->length);
 
-      if (do_gso && (b[0]->flags & VNET_BUFFER_F_GSO))
+      if (b[0]->flags & VNET_BUFFER_F_GSO)
        ip0_len = gso_mtu_sz (b[0]);
-      if (do_gso && (b[1]->flags & VNET_BUFFER_F_GSO))
+      if (b[1]->flags & VNET_BUFFER_F_GSO)
        ip1_len = gso_mtu_sz (b[1]);
 
       ip4_mtu_check (b[0], ip0_len,
                     adj0[0].rewrite_header.max_l3_packet_bytes,
                     ip0->flags_and_fragment_offset &
                     clib_host_to_net_u16 (IP4_HEADER_FLAG_DONT_FRAGMENT),
-                    next + 0, &error0, is_midchain);
+                    next + 0, is_midchain, &error0);
       ip4_mtu_check (b[1], ip1_len,
                     adj1[0].rewrite_header.max_l3_packet_bytes,
                     ip1->flags_and_fragment_offset &
                     clib_host_to_net_u16 (IP4_HEADER_FLAG_DONT_FRAGMENT),
-                    next + 1, &error1, is_midchain);
+                    next + 1, is_midchain, &error1);
 
       if (is_mcast)
        {
@@ -2653,14 +2652,14 @@ ip4_rewrite_inline_with_gso (vlib_main_t * vm,
       /* Check MTU of outgoing interface. */
       u16 ip0_len = clib_net_to_host_u16 (ip0->length);
 
-      if (do_gso && (b[0]->flags & VNET_BUFFER_F_GSO))
+      if (b[0]->flags & VNET_BUFFER_F_GSO)
        ip0_len = gso_mtu_sz (b[0]);
 
       ip4_mtu_check (b[0], ip0_len,
                     adj0[0].rewrite_header.max_l3_packet_bytes,
                     ip0->flags_and_fragment_offset &
                     clib_host_to_net_u16 (IP4_HEADER_FLAG_DONT_FRAGMENT),
-                    next + 0, &error0, is_midchain);
+                    next + 0, is_midchain, &error0);
 
       if (is_mcast)
        {
@@ -2751,14 +2750,14 @@ ip4_rewrite_inline_with_gso (vlib_main_t * vm,
 
       /* Check MTU of outgoing interface. */
       u16 ip0_len = clib_net_to_host_u16 (ip0->length);
-      if (do_gso && (b[0]->flags & VNET_BUFFER_F_GSO))
+      if (b[0]->flags & VNET_BUFFER_F_GSO)
        ip0_len = gso_mtu_sz (b[0]);
 
       ip4_mtu_check (b[0], ip0_len,
                     adj0[0].rewrite_header.max_l3_packet_bytes,
                     ip0->flags_and_fragment_offset &
                     clib_host_to_net_u16 (IP4_HEADER_FLAG_DONT_FRAGMENT),
-                    next + 0, &error0, is_midchain);
+                    next + 0, is_midchain, &error0);
 
       if (is_mcast)
        {
@@ -2833,15 +2832,8 @@ ip4_rewrite_inline (vlib_main_t * vm,
                    vlib_frame_t * frame,
                    int do_counters, int is_midchain, int is_mcast)
 {
-  vnet_main_t *vnm = vnet_get_main ();
-  if (PREDICT_FALSE (vnm->interface_main.gso_interface_count > 0))
-    return ip4_rewrite_inline_with_gso (vm, node, frame, do_counters,
-                                       is_midchain, is_mcast,
-                                       1 /* do_gso */ );
-  else
-    return ip4_rewrite_inline_with_gso (vm, node, frame, do_counters,
-                                       is_midchain, is_mcast,
-                                       0 /* no do_gso */ );
+  return ip4_rewrite_inline_with_gso (vm, node, frame, do_counters,
+                                     is_midchain, is_mcast);
 }