lkml.org 
[lkml]   [2008]   [Dec]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH][RFC 23/23]: Support for zero-copy TCP transmit of user space data
    On Tue, Dec 23, 2008 at 10:16:25PM +0300, Vladislav Bolkhovitin (vst@vlnb.net) wrote:
    > Actually, there's another way, which seems to be a lot simpler. Alexey
    > Kuznetsov privately suggested it to me.
    >
    > In skb_shared_info new pointer transaction_token would be added, which
    > would point on:
    >
    > struct sk_transaction_token
    > {
    > atomic_t io_count;
    > struct sk_transaction_token *next;
    > unsigned long token;
    > unsigned long private;
    > void (*finish_callback)(struct
    > sk_transaction_token *);
    > };
    >
    > When skb is translated, transaction_token inherited. If 2 skb are merged
    > (the same places where I put net_get_page's in my patch), the *older*
    > token is inherited. This is the main point of this idea.
    >
    > Before starting new asynchronous send a client would open a new token.
    > Everything sent then would receive that token. Finish_callback() would
    > be called and the corresponding token freed, when io_count == 0 *AND*
    > all previous tokens closed.
    >
    > This idea seems to be simpler, than even what Rusty implemented. Correct
    > me, if I wrong. But, unfortunately, in the near future I will have no
    > time to develop it.. :-(

    Yes, it is simpler and cleaner, but it requires additional allocation.
    This is additional (and quite noticeble) overhead.

    --
    Evgeniy Polyakov


    \
     
     \ /
      Last update: 2008-12-23 22:41    [W:2.721 / U:0.064 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site