eth: Pull header from first fragment via eth_get_headlen
authorAlexander Duyck <aduyck@mirantis.com>
Wed, 24 Feb 2016 17:30:04 +0000 (09:30 -0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 24 Feb 2016 18:58:05 +0000 (13:58 -0500)
We want to try and pull the L4 header in if it is available in the first
fragment.  As such add the flag to indicate we want to pull the headers on
the first fragment in.

Signed-off-by: Alexander Duyck <aduyck@mirantis.com>
Acked-by: Tom Herbert <tom@herbertland.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ethernet/eth.c

index 103871784e5085a8f16b792d2b059ea97cff9721..66dff5e3d7728bc9d302fdf6c207a6c03197affa 100644 (file)
@@ -125,6 +125,7 @@ EXPORT_SYMBOL(eth_header);
  */
 u32 eth_get_headlen(void *data, unsigned int len)
 {
+       const unsigned int flags = FLOW_DISSECTOR_F_PARSE_1ST_FRAG;
        const struct ethhdr *eth = (const struct ethhdr *)data;
        struct flow_keys keys;
 
@@ -134,7 +135,7 @@ u32 eth_get_headlen(void *data, unsigned int len)
 
        /* parse any remaining L2/L3 headers, check for L4 */
        if (!skb_flow_dissect_flow_keys_buf(&keys, data, eth->h_proto,
-                                           sizeof(*eth), len, 0))
+                                           sizeof(*eth), len, flags))
                return max_t(u32, keys.control.thoff, sizeof(*eth));
 
        /* parse for any L4 headers */
This page took 0.026869 seconds and 5 git commands to generate.