Re: [RFC net-next v3 2/2] bnxt: Use generic HBH removal helper in tx path

From: Michael Chan
Date: Fri Dec 02 2022 - 00:56:45 EST


On Thu, Dec 1, 2022 at 6:03 PM Coco Li <lixiaoyan@xxxxxxxxxx> wrote:
>
> On Tue, Nov 29, 2022 at 12:42 PM Michael Chan <michael.chan@xxxxxxxxxxxx> wrote:
> >
> > On Tue, Nov 29, 2022 at 12:07 PM Coco Li <lixiaoyan@xxxxxxxxxx> 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.

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature