By moving code around, we avoid :
1) A reload of iph->ihl (bit field, so needs a mask)
2) A conditional test (replaced by a conditional mov on x86)
   Fast path loads iph->protocol anyway.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
                iph = skb_header_pointer(skb, nhoff, sizeof(_iph), &_iph);
                if (!iph || iph->ihl < 5)
                        return false;
+               nhoff += iph->ihl * 4;
 
+               ip_proto = iph->protocol;
                if (ip_is_fragment(iph))
                        ip_proto = 0;
-               else
-                       ip_proto = iph->protocol;
+
                iph_to_flow_copy_addrs(flow, iph);
-               nhoff += iph->ihl * 4;
                break;
        }
        case __constant_htons(ETH_P_IPV6): {