> First of all, I applied your patch with now, but changed the commit
> message. I hope it still makes sense.
Thx, definitely better than mine :)
>
> > Ops, maybe I got your point:
> > ieee80211_amsdu_realloc_pad() in ieee80211_amsdu_prepare_head() can
> > expand the headroom on the first frame
>
> Right.
>
> > but if ieee80211_amsdu_realloc_pad() on the second one fails, we do
> > not take into account the extra len added on the
> > first subframe. Is that what you mean?
>
> Yes, that's what I was thinking of, but you described it much better
> than me :)
>
> If this needs to be addressed, please send a separate patch.
Reviewing the code I guess it is not necessary since pskb_expand_head routine
does not modify head->len (or skb->len). Packet len (if we consider padding)
is only modified in:
memset(skb_push(skb, pad), 0, pad);
and if we hit that point, we will account new skb->len in flow backlog. Do you
agree?
Looking at the code maybe I spotted another issue, I guess there is an
off-by-one issue in 'n' estimation since it does not take into account
the first frame. We hit the line:
while (*frag_tail) {
}
starting from the second subframe, but if the head does not have packet in the
fraglist we will end up having n = 1, while it is actually the second frame.
Does n count just subsequent frames or also the first one?
Regards,
Lorenzo
>
> johannes