2020-03-05 04:01:52

by Ganapathi Bhat

[permalink] [raw]
Subject: RE: [EXT] [PATCH] mwifiex: set needed_headroom, not hard_header_len

Hi Brian,

> hard_header_len provides limitations for things like AF_PACKET, such that
> we don't allow transmitting packets smaller than this.


OK; However, are we not supposed to mention hard_header_len also?

>
> needed_headroom provides a suggested minimum headroom for SKBs, so
> that we can trivally add our headers to the front.
>
> The latter is the correct field to use in this case, while the former mostly just
> prevents sending small AF_PACKET frames.
>
> In any case, mwifiex already does its own bounce buffering [1] if we don't
> have enough headroom, so hints (not hard limits) are all that are needed.
>
> This is the essentially the same bug (and fix) that brcmfmac had, fixed in
> commit cb39288fd6bb ("brcmfmac: use ndev->needed_headroom to reserve
> additional header space").

OK; I read this commit:

"... According to definition of LL_RESERVED_SPACE() and hard_header_len, we should use hard_header_len to reserve for L2 header, like ethernet header(ETH_HLEN) in our case and use needed_headroom for the additional headroom needed by hardware..."

So, does it mean, hard_header_len is already considered by upper layer?


Regards,
Ganapathi


2020-03-05 04:38:37

by Brian Norris

[permalink] [raw]
Subject: Re: [EXT] [PATCH] mwifiex: set needed_headroom, not hard_header_len

Hi Ganapathi,

On Wed, Mar 4, 2020 at 8:00 PM Ganapathi Bhat <[email protected]> wrote:
> > hard_header_len provides limitations for things like AF_PACKET, such that
> > we don't allow transmitting packets smaller than this.
>
> OK; However, are we not supposed to mention hard_header_len also?

No, my understanding is that we do not need to bother with
hard_header_len ourselves -- ether_setup() establishes the appropriate
L2 header parameters. I think that's covered a little better below.

> > This is the essentially the same bug (and fix) that brcmfmac had, fixed in
> > commit cb39288fd6bb ("brcmfmac: use ndev->needed_headroom to reserve
> > additional header space").
>
> OK; I read this commit:
>
> "... According to definition of LL_RESERVED_SPACE() and hard_header_len, we should use hard_header_len to reserve for L2 header, like ethernet header(ETH_HLEN) in our case and use needed_headroom for the additional headroom needed by hardware..."

Yeah, that's probably a little more verbose and accurate description,
which is partly why I referred to that commit :)

> So, does it mean, hard_header_len is already considered by upper layer?

Right, it's set by ether_setup().

Brian

2020-03-05 06:13:16

by Ganapathi Bhat

[permalink] [raw]
Subject: RE: [EXT] [PATCH] mwifiex: set needed_headroom, not hard_header_len

Hi Brian,

> > > hard_header_len provides limitations for things like AF_PACKET, such
> > > that we don't allow transmitting packets smaller than this.
> >
> > OK; However, are we not supposed to mention hard_header_len also?
>
> No, my understanding is that we do not need to bother with
> hard_header_len ourselves -- ether_setup() establishes the appropriate
> L2 header parameters. I think that's covered a little better below.

OK. I got you.
>
> > > This is the essentially the same bug (and fix) that brcmfmac had,
> > > fixed in commit cb39288fd6bb ("brcmfmac: use ndev-
> >needed_headroom
> > > to reserve additional header space").
> >
> > OK; I read this commit:
> >
> > "... According to definition of LL_RESERVED_SPACE() and hard_header_len,
> we should use hard_header_len to reserve for L2 header, like ethernet
> header(ETH_HLEN) in our case and use needed_headroom for the additional
> headroom needed by hardware..."
>
> Yeah, that's probably a little more verbose and accurate description, which is
> partly why I referred to that commit :)
>
> > So, does it mean, hard_header_len is already considered by upper layer?
>
> Right, it's set by ether_setup().

Yes, Thanks.

Acked-by: Ganapathi Bhat <[email protected]>

Regards,
Ganapathi