In preparation for TSO over representors make sure the port id
prepend will always fit in the frame.  The current max header
length is 255, which is ample, so assume worst case scenario
of 8 byte prepend and save ourselves the conditionals.

Signed-off-by: Jakub Kicinski <[email protected]>
Reviewed-by: Dirk van der Merwe <[email protected]>
---
 drivers/net/ethernet/netronome/nfp/nfp_net_common.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c 
b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
index 9cc2c204baa3..3cb7dceca2d9 100644
--- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
+++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
@@ -3284,7 +3284,10 @@ nfp_net_features_check(struct sk_buff *skb, struct 
net_device *dev,
                hdrlen = skb_inner_transport_header(skb) - skb->data +
                        inner_tcp_hdrlen(skb);
 
-               if (unlikely(hdrlen > NFP_NET_LSO_MAX_HDR_SZ))
+               /* Assume worst case scenario of having longest possible
+                * metadata prepend - 8B
+                */
+               if (unlikely(hdrlen > NFP_NET_LSO_MAX_HDR_SZ - 8))
                        features &= ~NETIF_F_GSO_MASK;
        }
 
-- 
2.17.1

Reply via email to