Subject: Re: [RFC][PATCH 1/1] cxgb3i: cxgb3 iSCSI initiator

From: Andrew Gallatin <[email-masked]>
Date: Thu, 14 Aug 2008 16:45:57 -0400

David Miller wrote:
 > From: Rick Jones <[email-masked]>
 > Date: Mon, 11 Aug 2008 11:13:25 -0700
 >
 >> David Miller wrote:
 >>> And I even wonder, these days, if you probably get %90 or more of the
 >>> gain these "optimized" iSCSI connections obtain from things like LRO.
 >>> And since LRO can be done entirely in software (although stateless
 >>> HW assistence helps), it is even a NIC agnostic performance 
improvement.
 >> Probably depends on whether or not the iSCSI offload solutions are doing
 >> zero-copy receive into the filecache?
 >
 > That's a data placement issue, which also can be solved with
 > stateless offloading.

Speaking of stateless data placement.  Assume you have a page or set
of pages allocated by a network driver which contain exactly the data
a block driver is interested in to fulfill a read request (eg, the NIC
understands the protocol just well enough to split headers).  Is it
possible in the block driver to simply replace the pages that are
attached to the buf with pages allocated by the network driver?

It was my impression that the pages associated with a buf are in
fairly magical states and that you cannot replace them.  Rather,
you actually need to register them with the NIC, so the NIC can
receive into them rather than into an anonymously allocated page.
At this point, the NIC needs to be smart enough to match the block
read requests with the correct buffer, and you need some kind of
side channel between the network driver and the block driver to
pass the DMA address of the buf's pages and associated read request
tag.

Is this true?

Drew