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