From: Sridhar Samudrala <[EMAIL PROTECTED]>
Date: Mon, 11 Jul 2005 09:56:10 -0700

> An incoming skb can contain more than 1 user message(chunk) and
> we do a clone for each message and store the per-message information
> in the ulpevent structure.
> Moreover, the ulpevent structure is already 34 bytes which makes it
> impossible to share the 40-byte control block with ip specific info.

If the sctp_chunk structure is per-user-message, and so is
the ulpevent object, it makes no sense to store the ulpevent
information seperately from sctp_chunk.

Look at how all of the ulpevent members tend to be initialized:

        event->stream = ntohs(chunk->subh.data_hdr->stream);
        event->ssn = ntohs(chunk->subh.data_hdr->ssn);
        event->ppid = chunk->subh.data_hdr->ppid;
        if (chunk->chunk_hdr->flags & SCTP_DATA_UNORDERED) {
                event->flags |= MSG_UNORDERED;
                event->cumtsn = sctp_tsnmap_get_ctsn(&asoc->peer.tsn_map);
        }
        event->tsn = ntohl(chunk->subh.data_hdr->tsn);
        event->msg_flags |= chunk->chunk_hdr->flags;
        event->iif = sctp_chunk_iif(chunk);

It's just transferring chunk information over to the ulpevent
structure with only minor modifications such as endinness
swapping of packet header fields.

So I think we can store all of this stuff in the sctp_chunk
and then just make sure the chunk is available.  In fact, we
can replace all the event->{stream,ssn,ppid,cumtsn,tsn,iif}
members with just a backpointer to the sctp_chunk.

This also means you won't need to clone so much anymore either.
You'll only need to clone at the chunking level.

I'll see if I can get a spare moment to try and implement this.
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to