lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Thu, 1 Dec 2022 21:56:23 -0800
From:   Michael Chan <michael.chan@...adcom.com>
To:     Coco Li <lixiaoyan@...gle.com>
Cc:     "David S. Miller" <davem@...emloft.net>,
        Hideaki YOSHIFUJI <yoshfuji@...ux-ipv6.org>,
        David Ahern <dsahern@...nel.org>,
        Eric Dumazet <edumazet@...gle.com>,
        Jakub Kicinski <kuba@...nel.org>,
        Paolo Abeni <pabeni@...hat.com>, netdev@...r.kernel.org,
        Daisuke Nishimura <nishimura@....nes.nec.co.jp>,
        linux-kernel@...r.kernel.org
Subject: Re: [RFC net-next v3 2/2] bnxt: Use generic HBH removal helper in tx path

On Thu, Dec 1, 2022 at 6:03 PM Coco Li <lixiaoyan@...gle.com> wrote:
>
> On Tue, Nov 29, 2022 at 12:42 PM Michael Chan <michael.chan@...adcom.com> wrote:
> >
> > On Tue, Nov 29, 2022 at 12:07 PM Coco Li <lixiaoyan@...gle.com> wrote:
> > > 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)))
> >
> > To be more efficient, why not just check the header's tlv_type here
> > instead of calling ipv6_has_hopopt_jumbo()?
> >
>
> It may be possible that the next header is Hop_by_hop but the packet
> is not tcp, meaning that it would not be removed and we'd still want
> to count this header towards the limit.
> ipv6_has_hopopt_jumbo checks for the big tcp case (gso, skb len
> reaches a certain size) particularly.
>

We can add all the additional checks here and it will still be more
efficient because we already know this is ipv6 and we are looking at
the extension header.  This is fast path so I think we want to be as
efficient as possible.

Download attachment "smime.p7s" of type "application/pkcs7-signature" (4209 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ