| From foo@baz Sun 09 Feb 2020 10:56:46 PM CET |
| From: Harini Katakam <harini.katakam@xilinx.com> |
| Date: Wed, 5 Feb 2020 18:08:11 +0530 |
| Subject: net: macb: Remove unnecessary alignment check for TSO |
| |
| From: Harini Katakam <harini.katakam@xilinx.com> |
| |
| [ Upstream commit 41c1ef978c8d0259c6636e6d2d854777e92650eb ] |
| |
| 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: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/ethernet/cadence/macb_main.c | 8 +++----- |
| 1 file changed, 3 insertions(+), 5 deletions(-) |
| |
| --- a/drivers/net/ethernet/cadence/macb_main.c |
| +++ b/drivers/net/ethernet/cadence/macb_main.c |
| @@ -1654,16 +1654,14 @@ static netdev_features_t macb_features_c |
| |
| /* 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. |
| */ |