• David Howells's avatar
    kcm: Send multiple frags in one sendmsg() · c31a25e1
    David Howells authored
    Rewrite the AF_KCM transmission loop to send all the fragments in a single
    skb or frag_list-skb in one sendmsg() with MSG_SPLICE_PAGES set.  The list
    of fragments in each skb is conveniently a bio_vec[] that can just be
    attached to a BVEC iter.
    
    Note: I'm working out the size of each fragment-skb by adding up bv_len for
    all the bio_vecs in skb->frags[] - but surely this information is recorded
    somewhere?  For the skbs in head->frag_list, this is equal to
    skb->data_len, but not for the head.  head->data_len includes all the tail
    frags too.
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    cc: Tom Herbert <tom@herbertland.com>
    cc: Tom Herbert <tom@quantonium.net>
    cc: Jens Axboe <axboe@kernel.dk>
    cc: Matthew Wilcox <willy@infradead.org>
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    c31a25e1
kcmsock.c 42.6 KB