On 7/21/24 21:10, Willem de Bruijn wrote:
On Fri, Jul 19, 2024 at 9:56 AM Bailey Forrest <bcf@xxxxxxxxxx> wrote:
If last_frag_size is evenly divisible by GVE_TX_MAX_BUF_SIZE_DQO, it
doesn't hit the edge case we're looking for.
- If it's evenly divisible, then we know it will use exactly
(last_frag_size / GVE_TX_MAX_BUF_SIZE_DQO) descriptors
This assumes that gso_segment start is aligned with skb_frag
start. That is not necessarily true, right?
If headlen minus protocol headers is 1B, then the first segment
will have two descriptors { 1B, 9KB - 1 }. And the next segment
can have skb_frag_size - ( 9KB - 1).
I think the statement is correct, but because every multiple
of 16KB is so much larger than the max gso_size of ~9KB,
that a single segment will never include more than two
skb_frags.
I'm a bit lost, but what abut big TCP? that should allow (considerably)
more than 2 frags 16K each per segment.
In any case it looks like this needs at least some comments clarification.
Thanks,
Paolo