[ofa-general] Re: [PATCH v4 for-2.6.27] IPOIB: add LRO support.
Or Gerlitz
ogerlitz at voltaire.com
Thu Jul 3 06:34:59 PDT 2008
Eli Cohen wrote:
> the 64K comes from the fact that an IP datagram's max length is 64K. And since LRO involves generating at the receiver a hand made IP datagram, the max length is 64K.
The .max_aggr field comes to say "Max number of LRO packets to be
aggregated" and not "max number of k bytes to aggregate. As you say, the
packets are aggregated into a legal IP packet which is pushed up to the
stack, whose size can not exceed 64k and as such the __lro_proc_skb code
at net/ipv4/inet_lro.c does
> if ((lro_desc->pkt_aggr_cnt >= lro_mgr->max_aggr) ||
> lro_desc->parent->len > (0xFFFF - lro_mgr->dev->mtu))
> lro_flush(lro_mgr, lro_desc);
so in the case of a 64K message sent over 2044 mtu, .max_aggr of 32 or
33 would serve well as large-receive-offload which is a software-based
mirror mechanism for LSO.
For the case of small --messages-- eg of 1K, I don't see why we want to
aggregate more then 32 of them, is it just because this code appears in
other drivers?
Or.
More information about the general
mailing list