Re: receive path with fragmented skb from device driver does not work.

From: Rask Ingemann Lambertsen
Date: Sat Feb 21 2004 - 22:07:21 EST


On Sat, Feb 07, 2004 at 01:07:10PM -0800, NucleoDyne Systems, Inc. wrote:
> Hello,
> I have been evaluating the performance of a 10 gigabit adapter. It
> provides a mode of receive data placement to memory through DMA called
> "3 buffer mode". A receive packet is scattered into three buffers. The
> ethernet header is in the first buffer, the tcp/ip header is in the
> second buffer(if ip header, otherwise rest in 3rd), and the payload is
> in 3rd buffer. I have created a skb with two additional fragments,
> the ethernet header is contained in the skb itself, the first fragment
> contains the ip header, the seocnd the payload.
>
> It seems linux stack can't handle the fragmented buffers in the receive
> path. Here is my finding, please correct me if I am wrong.
[snip]

I think you're right that the protocol headers need to be in the
non-fragmented part of the skb.

> If all the protocol headers in the skb could be assigned in the device
> driver, then probably fragmented skb in receive path would work. But the
> driver would have to decode packet type. That would not a good thing to
> do.
>
> Any comment?

If possible, make the adapter put the TCP/IP header in the non-fragmented
part of the skb. If that is not possible, memcpy().

--
Regards,
Rask Ingemann Lambertsen
-
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html