From: Jesse Brandeburg <jesse.brandeb...@intel.com>

This just reorders some local vars and makes the code flow
clearer.

Signed-off-by: Jesse Brandeburg <jesse.brandeb...@intel.com>
Tested-by: Andrew Bowers <andrewx.bow...@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirs...@intel.com>
---
 drivers/net/ethernet/intel/i40e/i40e_txrx.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c 
b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
index b936febc315a..c9a149678926 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
@@ -2451,9 +2451,15 @@ static void i40e_atr(struct i40e_ring *tx_ring, struct 
sk_buff *skb,
                hlen = (hdr.network[0] & 0x0F) << 2;
                l4_proto = hdr.ipv4->protocol;
        } else {
-               hlen = hdr.network - skb->data;
-               l4_proto = ipv6_find_hdr(skb, &hlen, IPPROTO_TCP, NULL, NULL);
-               hlen -= hdr.network - skb->data;
+               /* find the start of the innermost ipv6 header */
+               unsigned int inner_hlen = hdr.network - skb->data;
+               unsigned int h_offset = inner_hlen;
+
+               /* this function updates h_offset to the end of the header */
+               l4_proto =
+                 ipv6_find_hdr(skb, &h_offset, IPPROTO_TCP, NULL, NULL);
+               /* hlen will contain our best estimate of the tcp header */
+               hlen = h_offset - inner_hlen;
        }
 
        if (l4_proto != IPPROTO_TCP)
-- 
2.13.3

Reply via email to