| From d74a9ede9ebd2abb83d157441f3eb2248145c975 Mon Sep 17 00:00:00 2001 |
| From: Harini Katakam <harini.katakam@xilinx.com> |
| Date: Wed, 5 Feb 2020 18:08:11 +0530 |
| Subject: [PATCH] net: macb: Remove unnecessary alignment check for TSO |
| |
| commit 41c1ef978c8d0259c6636e6d2d854777e92650eb upstream. |
| |
| The IP TSO implementation does NOT require the length to be a |
| multiple of 8. That is only a requirement for UFO as per IP |
| documentation. Hence, exit macb_features_check function in the |
| beginning if the protocol is not UDP. Only when it is UDP, |
| proceed further to the alignment checks. Update comments to |
| reflect the same. Also remove dead code checking for protocol |
| TCP when calculating header length. |
| |
| Fixes: 1629dd4f763c ("cadence: Add LSO support.") |
| Signed-off-by: Harini Katakam <harini.katakam@xilinx.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c |
| index a947050c4443..cdce24e56b79 100644 |
| --- a/drivers/net/ethernet/cadence/macb_main.c |
| +++ b/drivers/net/ethernet/cadence/macb_main.c |
| @@ -1655,16 +1655,14 @@ static netdev_features_t macb_features_check(struct sk_buff *skb, |
| |
| /* Validate LSO compatibility */ |
| |
| - /* there is only one buffer */ |
| - if (!skb_is_nonlinear(skb)) |
| + /* there is only one buffer or protocol is not UDP */ |
| + if (!skb_is_nonlinear(skb) || (ip_hdr(skb)->protocol != IPPROTO_UDP)) |
| return features; |
| |
| /* length of header */ |
| hdrlen = skb_transport_offset(skb); |
| - if (ip_hdr(skb)->protocol == IPPROTO_TCP) |
| - hdrlen += tcp_hdrlen(skb); |
| |
| - /* For LSO: |
| + /* For UFO only: |
| * When software supplies two or more payload buffers all payload buffers |
| * apart from the last must be a multiple of 8 bytes in size. |
| */ |
| -- |
| 2.7.4 |
| |