From patchwork Tue Nov 29 20:06:52 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Coco Li X-Patchwork-Id: 27485 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp544885wrr; Tue, 29 Nov 2022 12:09:55 -0800 (PST) X-Google-Smtp-Source: AA0mqf7kTXvCRTlQ63ZqxsSy8DmY5FnyfOrf0EPR6CQR1KET/dJ3PzPBwYR6n4vkGoh3mmdsrdxA X-Received: by 2002:a17:906:dfef:b0:7ae:db2:f10a with SMTP id lc15-20020a170906dfef00b007ae0db2f10amr35294950ejc.709.1669752595527; Tue, 29 Nov 2022 12:09:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1669752595; cv=none; d=google.com; s=arc-20160816; b=yhcvexb7A0UCpYWJW9PSUF/1F0leNrEXl6J9Jbn/8HAmeQ4hVhiaT1Agli0aXJS18m CWzbvRpX+rslYwduBgXUNa6Nmowiy65txGGE4KmnUz3oHpXdIYH3Jw0wVN7JCNb2YbJw DeJiRoeAFNyn+UeslxJ+01FkIhCj4bygCnmuCQaRxJ3EPDKRX1c4udMHeYAqPKENZE8h yXLKwbEb0thHzVmJXKudlJ40U219fJBVLb+yeGnU9Hh8JIk8YZeAHunwroB1iGbrfsUN QNR1d4hxecDBlFWZP4ZfKKgzM3l2vaP8L2IOCiK2EuOg3cUMRF6xeeDxad6ZGB8K97Sg 3Eyg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:mime-version:date :dkim-signature; bh=GYy/8BW3WAe+pF6I2ukMLCY23QDbJtir2+qtUsjll+s=; b=JjeFZgGBcftNUwOzhD7w5CYhGH86ESpVqoY2DxVlsuJQSNvBHXRsasX4y35m3IuOyJ xH1JomrUuj4Fvvq9Jmb1urdxCZ0Y89ua+UUE1LSo3vFBSK9z4N5csVD2SKmykyzXDgzN /B4BE+3WsJbo4EqYryI/EsssWjbt5UsPblof7ZQbjDTfDabb1yde5zC1wTWRLUM1AtLy sLuHxgjOLhyJ1sSDI+qcCCa0qAqQbqGg/4udp4soX5gkKiQS6/llgMMf3Xs1og34Jyvu Oz4AYeS/xrie4dmihSmQ3Mnne84ryYiL0Pw8kRX2cL5+KJgQcPPN//Mffy+5krDpALHl 42Lg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=GB2cmrUO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w22-20020a05640234d600b0045b293121f1si1496837edc.12.2022.11.29.12.09.30; Tue, 29 Nov 2022 12:09:55 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=GB2cmrUO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237212AbiK2UHC (ORCPT + 99 others); Tue, 29 Nov 2022 15:07:02 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47802 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237203AbiK2UG7 (ORCPT ); Tue, 29 Nov 2022 15:06:59 -0500 Received: from mail-pf1-x449.google.com (mail-pf1-x449.google.com [IPv6:2607:f8b0:4864:20::449]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 155882CCB8 for ; Tue, 29 Nov 2022 12:06:58 -0800 (PST) Received: by mail-pf1-x449.google.com with SMTP id b13-20020a056a000a8d00b0057348c50123so12129244pfl.18 for ; Tue, 29 Nov 2022 12:06:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=GYy/8BW3WAe+pF6I2ukMLCY23QDbJtir2+qtUsjll+s=; b=GB2cmrUO3A78wrpfDHZV4b5pymx9bFEHccxTiTpmtkVerXODXn+CrBvnKsTzONHGu6 jBxJfKmv38lBbSM3DetdND9GBRjTB4CYk2o4ssEA8G/N4A65bGCTrpKrk5zlyrCTW7ae 6+aEVV/6JrX6+qHRlvSIjD8YIBqFm4MH9GqA9D4CdiUa4mztUi2qNo35O/BR+8xYiBJr up525YZ57m1zvrm1bDSs1jHtZZDydGvCfUE8kN7d/g7CeVeS5MagJlcRGkcHH+g2ZzRQ ITcS20qSQGbV1KOhgmjp18U/OB0qNYvfwy0/OSt6JQFyaNP8oGN9MfF5MQNUVEcdG4C+ j5Tg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=GYy/8BW3WAe+pF6I2ukMLCY23QDbJtir2+qtUsjll+s=; b=SyLbJp1tTiozrFrI1vpeyqaEZ8xzIBtgcMOPhiWojxOxB8J6+iteUnWvtZn1wz0/OZ PP/d1tM1EtTGJ9CZz+nQ7PRxQLfA1vK9SxcltnwVP54178HSolpnZxcvdPMPjpE+yfbY 1BnjtTWpy4NUCtSLWA2djroUpjbvRMX9cCztf5gPD/T/BovtCL+AGYZ32Bpu29VUmj7D WVdsRI0EG7f5wmyxd4gjBP0+g/BauIp7wpkkzRp8EmViNPG22vOz3K1Buxildjg0xObj eHpfIJXbrOTSnDmR0UXLC59uxlfeRmf9RF+iQQfnXycDv6KhjopWI6xJpNqc6pjbtBhS /zPA== X-Gm-Message-State: ANoB5pnsyOhC+0jCimDzi25rWsnCadqicMzM6xWtc4rTDRXFOmKxTG8l I+Q3/0q+mX43A+nZiRu10qQcLPYRD4RfiNs= X-Received: from coco0920.c.googlers.com ([fda3:e722:ac3:cc00:24:72f4:c0a8:5738]) (user=lixiaoyan job=sendgmr) by 2002:a17:90a:458a:b0:214:166e:e202 with SMTP id v10-20020a17090a458a00b00214166ee202mr62027256pjg.165.1669752417447; Tue, 29 Nov 2022 12:06:57 -0800 (PST) Date: Tue, 29 Nov 2022 20:06:52 +0000 Mime-Version: 1.0 X-Mailer: git-send-email 2.38.1.584.g0f3c55d4c2-goog Message-ID: <20221129200653.962019-1-lixiaoyan@google.com> Subject: [RFC net-next v3 1/2] IPv6/GRO: generic helper to remove temporary HBH/jumbo header in driver From: Coco Li To: "David S. Miller" , Hideaki YOSHIFUJI , David Ahern , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Michael Chan Cc: netdev@vger.kernel.org, Daisuke Nishimura , linux-kernel@vger.kernel.org, Coco Li X-Spam-Status: No, score=-8.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,HK_RANDOM_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1750862497937501156?= X-GMAIL-MSGID: =?utf-8?q?1750862497937501156?= IPv6/TCP and GRO stacks can build big TCP packets with an added temporary Hop By Hop header. Is GSO is not involved, then the temporary header needs to be removed in the driver. This patch provides a generic helper for drivers that need to modify their headers in place. Signed-off-by: Coco Li --- include/net/ipv6.h | 35 +++++++++++++++++++++++++++++++++++ net/ipv6/ip6_offload.c | 27 ++++----------------------- 2 files changed, 39 insertions(+), 23 deletions(-) diff --git a/include/net/ipv6.h b/include/net/ipv6.h index d383c895592a..08adec74f067 100644 --- a/include/net/ipv6.h +++ b/include/net/ipv6.h @@ -500,6 +500,41 @@ static inline int ipv6_has_hopopt_jumbo(const struct sk_buff *skb) return jhdr->nexthdr; } +/* Return 0 if HBH header is successfully removed + * Or if HBH removal is unnecessary (packet is not big TCP) + * Return error to indicate dropping the packet + */ +static inline int ipv6_hopopt_jumbo_remove(struct sk_buff *skb) +{ + const int hophdr_len = sizeof(struct hop_jumbo_hdr); + int nexthdr = ipv6_has_hopopt_jumbo(skb); + struct ipv6hdr *h6; + + if (!nexthdr) + return 0; + + if (skb_cow_head(skb, 0)) + return -1; + + /* Remove the HBH header. + * Layout: [Ethernet header][IPv6 header][HBH][L4 Header] + */ + memmove(skb_mac_header(skb) + hophdr_len, skb_mac_header(skb), + skb_network_header(skb) - skb_mac_header(skb) + + sizeof(struct ipv6hdr)); + + if (unlikely(!pskb_may_pull(skb, hophdr_len))) + return -1; + + skb->network_header += hophdr_len; + skb->mac_header += hophdr_len; + + h6 = ipv6_hdr(skb); + h6->nexthdr = nexthdr; + + return 0; +} + static inline bool ipv6_accept_ra(struct inet6_dev *idev) { /* If forwarding is enabled, RA are not accepted unless the special diff --git a/net/ipv6/ip6_offload.c b/net/ipv6/ip6_offload.c index 3ee345672849..00dc2e3b0184 100644 --- a/net/ipv6/ip6_offload.c +++ b/net/ipv6/ip6_offload.c @@ -77,7 +77,7 @@ static struct sk_buff *ipv6_gso_segment(struct sk_buff *skb, struct sk_buff *segs = ERR_PTR(-EINVAL); struct ipv6hdr *ipv6h; const struct net_offload *ops; - int proto, nexthdr; + int proto, err; struct frag_hdr *fptr; unsigned int payload_len; u8 *prevhdr; @@ -87,28 +87,9 @@ static struct sk_buff *ipv6_gso_segment(struct sk_buff *skb, bool gso_partial; skb_reset_network_header(skb); - nexthdr = ipv6_has_hopopt_jumbo(skb); - if (nexthdr) { - const int hophdr_len = sizeof(struct hop_jumbo_hdr); - int err; - - err = skb_cow_head(skb, 0); - if (err < 0) - return ERR_PTR(err); - - /* remove the HBH header. - * Layout: [Ethernet header][IPv6 header][HBH][TCP header] - */ - memmove(skb_mac_header(skb) + hophdr_len, - skb_mac_header(skb), - ETH_HLEN + sizeof(struct ipv6hdr)); - skb->data += hophdr_len; - skb->len -= hophdr_len; - skb->network_header += hophdr_len; - skb->mac_header += hophdr_len; - ipv6h = (struct ipv6hdr *)skb->data; - ipv6h->nexthdr = nexthdr; - } + err = ipv6_hopopt_jumbo_remove(skb); + if (err) + return ERR_PTR(err); nhoff = skb_network_header(skb) - skb_mac_header(skb); if (unlikely(!pskb_may_pull(skb, sizeof(*ipv6h)))) goto out; From patchwork Tue Nov 29 20:06:53 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Coco Li X-Patchwork-Id: 27486 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp548219wrr; Tue, 29 Nov 2022 12:17:40 -0800 (PST) X-Google-Smtp-Source: AA0mqf5GOkCjhEFPY6a0VFQLkF7uQKRERORYjgyagSb+47RNgS3PquQ28Fys9XuwoapgTdf2sGWs X-Received: by 2002:a17:906:ce30:b0:7c0:7cf2:1abc with SMTP id sd16-20020a170906ce3000b007c07cf21abcmr7790162ejb.225.1669753060238; Tue, 29 Nov 2022 12:17:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1669753060; cv=none; d=google.com; s=arc-20160816; b=i9HLLVkJjdU1nI60bG6JRCkZAVM4RkLr3JLffYgRKW4wa0rPxQ2XA+pwZuR12luHeZ Yf9FEPK0DRpqLEMoNb0UcnVnpKKQosvupghRV9E0lFGuUdavqcdtllKrWuibrJLtnTp3 BuSe7ABSLecrWlQWEQt/ruxmxwAvuqyiV6sxgTFv8tcEdpWv90fV4ezGOrfPdqWIIh+K wewcqXTcpUqiSa/mj0V2gob2/mjpnG8GREfate2cApP7bVoF/OC4yeHJM3tjxl0DUNNc DDtFhEGbtij/3Dvi7nQeplvqvVDR3KSGp4Mm+WHrV6DR7I+sz22JwxOTVQfL8WO1C1io KZvg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:dkim-signature; bh=IJZlDWY2h6FAZWMEwD5hO6Ky1u9533DiRDKfw2y50P4=; b=hqTf1qiI6u/YZELsDwJnhBdHETN8sElmB5vbxKc24SYOTeHM/c+bHq4Hf0rjzgV9+I /Cy19qrnjz3QQd6s94raEY9N7QNzo1MYmrn7c2oIO4Kjh/111r4dId3BMayLtDQPGqe0 YTvB/VVXP1g/6OPHJXUyA6EMaQAtNdRlTSUQErT1stLWeIpCNdnojH6KWGX3mscMIm2i 2t73bFMblUGWA7bBlk6K/1p/lCmsm8+X/C01BKbiLLrDjCbXmpknJha1xoPp+RwFYbvq rl/puHA4lmzTSUKOBy5PxZu/TCDTcNDLIzLQi4ap03+jXYNrWzqKgMbZix1PAJlvNTSn eHEA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=W4HO3RNv; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id qb35-20020a1709077ea300b007ae43ee86aesi14180042ejc.69.2022.11.29.12.17.15; Tue, 29 Nov 2022 12:17:40 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=W4HO3RNv; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237219AbiK2UHH (ORCPT + 99 others); Tue, 29 Nov 2022 15:07:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47838 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230346AbiK2UHB (ORCPT ); Tue, 29 Nov 2022 15:07:01 -0500 Received: from mail-pf1-x44a.google.com (mail-pf1-x44a.google.com [IPv6:2607:f8b0:4864:20::44a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 741DC2EF0E for ; Tue, 29 Nov 2022 12:07:00 -0800 (PST) Received: by mail-pf1-x44a.google.com with SMTP id a24-20020a056a001d1800b00575cd7524a2so556056pfx.5 for ; Tue, 29 Nov 2022 12:07:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=IJZlDWY2h6FAZWMEwD5hO6Ky1u9533DiRDKfw2y50P4=; b=W4HO3RNvc/Y74RIPeU4zMBsbAqmOEReI49UwtMVn/t0kBzZv4AT9l/wnqrvOP3Hb3b 6r2Sl5Ai6aChrf2k0HSJGuoCGVJow34rGusWwatQWfjkMn+j+CjOHtsQ2dKjk0BGhDNJ 109Ba3AbXkj4cTcwIa6gmzR2T/6RTzgImRL1o3yD5TOQTeFeGwlRgV3IQ+Gkv8w9dtPW QI0Oq/UVmi9IdOPYgT8VfIo7U48DzDMnKJiRyoKdKJfHYjtCWC8G8cMDXcN0MzbKfhLj saGs8eXdSK7MQweB7pZyur62dT648rhNge9q5oBzGMmkDE1j4FFpEIWbPsHf2WIiTz77 40rg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=IJZlDWY2h6FAZWMEwD5hO6Ky1u9533DiRDKfw2y50P4=; b=uoUbsAQia0U8c6E6KuFV89fkHHtYtr0ztDAC6p6OxXW0qVOB2FgzsSRjinZYpxtS2B q/bYiacTuUO6orIR7nUGU3r+U6/KkctzbsYE8U0iRI1PFcYl/zWSq5jmqXkEbMrNgSEa x4w++asx1gxCmxw58MhlQUza277JUiuJ4WUUO+1Y6u0Nb2d5ovlUGVFHZ0S8bdLZKhAF AVn36XzCl2TABYAzqEKhbOdMbIradUCFP9k6UUY0R517goV3HMmUmkerjiZROjhT0AI5 93Yj88TJlCCw9GVPDusFvpJ8cmO8f6jGMaIV23I9YtmNkOCKccrrk83oybcZPlASOTKF uyCw== X-Gm-Message-State: ANoB5pn5FknvDA92SU0ECmWDMSqy3n/lZ7eKyChbzmp6DMH+e5Fc+F9q rQ8lTml/7CmkdfCtKGAw6IXf+TIgPeWFFrs= X-Received: from coco0920.c.googlers.com ([fda3:e722:ac3:cc00:24:72f4:c0a8:5738]) (user=lixiaoyan job=sendgmr) by 2002:a17:90a:9606:b0:213:2411:50e8 with SMTP id v6-20020a17090a960600b00213241150e8mr59998140pjo.181.1669752420003; Tue, 29 Nov 2022 12:07:00 -0800 (PST) Date: Tue, 29 Nov 2022 20:06:53 +0000 In-Reply-To: <20221129200653.962019-1-lixiaoyan@google.com> Mime-Version: 1.0 References: <20221129200653.962019-1-lixiaoyan@google.com> X-Mailer: git-send-email 2.38.1.584.g0f3c55d4c2-goog Message-ID: <20221129200653.962019-2-lixiaoyan@google.com> Subject: [RFC net-next v3 2/2] bnxt: Use generic HBH removal helper in tx path From: Coco Li To: "David S. Miller" , Hideaki YOSHIFUJI , David Ahern , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Michael Chan Cc: netdev@vger.kernel.org, Daisuke Nishimura , linux-kernel@vger.kernel.org, Coco Li X-Spam-Status: No, score=-8.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,HK_RANDOM_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1750862984953697039?= X-GMAIL-MSGID: =?utf-8?q?1750862984953697039?= Eric Dumazet implemented Big TCP that allowed bigger TSO/GRO packet sizes for IPv6 traffic. See patch series: 'commit 89527be8d8d6 ("net: add IFLA_TSO_{MAX_SIZE|SEGS} attributes")' This reduces the number of packets traversing the networking stack and should usually improves performance. However, it also inserts a temporary Hop-by-hop IPv6 extension header. Using the HBH header removal method in the previous path, the extra header be removed in bnxt drivers to allow it to send big TCP packets (bigger TSO packets) as well. Tested: Compiled locally To further test functional correctness, update the GSO/GRO limit on the physical NIC: ip link set eth0 gso_max_size 181000 ip link set eth0 gro_max_size 181000 Note that if there are bonding or ipvan devices on top of the physical NIC, their GSO sizes need to be updated as well. Then, IPv6/TCP packets with sizes larger than 64k can be observed. Big TCP functionality is tested by Michael, feature checks not yet. Tested by Michael: I've confirmed with our hardware team that this is supported by our chips, and I've tested it up to gso_max_size of 524280. Thanks. Tested-by: Michael Chan Reviewed-by: Michael Chan Signed-off-by: Coco Li --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index 0fe164b42c5d..f144a5ef2e04 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -389,6 +389,9 @@ static netdev_tx_t bnxt_start_xmit(struct sk_buff *skb, struct net_device *dev) return NETDEV_TX_BUSY; } + if (unlikely(ipv6_hopopt_jumbo_remove(skb))) + goto tx_free; + length = skb->len; len = skb_headlen(skb); last_frag = skb_shinfo(skb)->nr_frags; @@ -11342,9 +11345,15 @@ static bool bnxt_exthdr_check(struct bnxt *bp, struct sk_buff *skb, int nw_off, if (hdrlen > 64) return false; + + /* The ext header may be a hop-by-hop header inserted for + * big TCP purposes. This will be removed before sending + * from NIC, so do not count it. + */ + if (!(*nexthdr == NEXTHDR_HOP && ipv6_has_hopopt_jumbo(skb))) + hdr_count++; nexthdr = &hp->nexthdr; start += hdrlen; - hdr_count++; } if (nextp) { /* Caller will check inner protocol */ @@ -13657,6 +13666,8 @@ static int bnxt_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) dev->features &= ~NETIF_F_LRO; dev->priv_flags |= IFF_UNICAST_FLT; + netif_set_tso_max_size(dev, GSO_MAX_SIZE); + #ifdef CONFIG_BNXT_SRIOV init_waitqueue_head(&bp->sriov_cfg_wait); #endif