2004-01-30 23:13:45

by Kallol Biswas

[permalink] [raw]
Subject: receive path with fragmented skbs

Hello,
We have been developing drivers and networking software on
a 10 gigabit ethernet adapter from S2io Inc (http://www.s2io.com). There is a
requirement that the ethernet header, IP+TCP headers have to be cache
aligned and the payload and the IP+TCP headers have to be in different
fragments. So we have created receive path skbs with data size big
enough to hold the ethernet header and two fragments, one fragment for
the IP+TCP header and the other for payload. The card can directly dma
into the three receive scatter buffers when a frame arrives.

We could not get ping working with this design of receive skbs,
but if a skb is linearized with skb_linearize() before calling
netif_rx(), ping works.

/proc/net/snmp was printed, no frame had any error. Probably no one has
ever tested the receive path of the stack with fragmented skbs, am I
right? One of the ways this problem can be debugged is to find out where
exactly the packets get dropped. Any comment?

Kallol


2004-01-31 07:36:58

by Willy Tarreau

[permalink] [raw]
Subject: Fwd: receive path with fragmented skbs

Hi,

you should have posted this to the netdev list : [email protected].
You don't need to resend, I have CC'd it.

Willy

On Fri, Jan 30, 2004 at 03:12:24PM -0800, Kallol Biswas wrote:
> Hello,
> We have been developing drivers and networking software on
> a 10 gigabit ethernet adapter from S2io Inc (http://www.s2io.com). There is a
> requirement that the ethernet header, IP+TCP headers have to be cache
> aligned and the payload and the IP+TCP headers have to be in different
> fragments. So we have created receive path skbs with data size big
> enough to hold the ethernet header and two fragments, one fragment for
> the IP+TCP header and the other for payload. The card can directly dma
> into the three receive scatter buffers when a frame arrives.
>
> We could not get ping working with this design of receive skbs,
> but if a skb is linearized with skb_linearize() before calling
> netif_rx(), ping works.
>
> /proc/net/snmp was printed, no frame had any error. Probably no one has
> ever tested the receive path of the stack with fragmented skbs, am I
> right? One of the ways this problem can be debugged is to find out where
> exactly the packets get dropped. Any comment?
>
> Kallol
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/