Lines Matching defs:chunk
88 struct sctp_chunk *chunk);
116 * the size of the outgoing data chunk.
119 * Since it is always 1-1 between chunk and skb, and also a new skb is always
120 * allocated for chunk bundling in sctp_packet_transmit(), we can use the
121 * destructor in the data chunk skb for the purpose of the sndbuf space
124 static inline void sctp_set_owner_w(struct sctp_chunk *chunk)
126 struct sctp_association *asoc = chunk->asoc;
132 if (chunk->shkey)
133 sctp_auth_shkey_hold(chunk->shkey);
135 skb_set_owner_w(chunk->skb, sk);
137 chunk->skb->destructor = sctp_wfree;
138 /* Save the chunk pointer in skb for sctp_wfree to use later. */
139 skb_shinfo(chunk->skb)->destructor_arg = chunk;
142 asoc->sndbuf_used += chunk->skb->truesize + sizeof(struct sctp_chunk);
143 sk_wmem_queued_add(sk, chunk->skb->truesize + sizeof(struct sctp_chunk));
144 sk_mem_charge(sk, chunk->skb->truesize);
147 static void sctp_clear_owner_w(struct sctp_chunk *chunk)
149 skb_orphan(chunk->skb);
154 msg = chunk->msg; \
172 struct sctp_chunk *chunk, *c;
176 list_for_each_entry(chunk, &t->transmitted, transmitted_list)
179 list_for_each_entry(chunk, &q->retransmit, transmitted_list)
182 list_for_each_entry(chunk, &q->sacked, transmitted_list)
185 list_for_each_entry(chunk, &q->abandoned, transmitted_list)
188 list_for_each_entry(chunk, &q->out_chunk_list, list)
460 * at any one time. If a sender, after sending an ASCONF chunk, decides
468 struct sctp_chunk *chunk)
472 /* If there is an outstanding ASCONF chunk, queue it for later
476 list_add_tail(&chunk->list, &asoc->addip_chunk_list);
480 /* Hold the chunk until an ASCONF_ACK is received. */
481 sctp_chunk_hold(chunk);
482 retval = sctp_primitive_ASCONF(asoc->base.net, asoc, chunk);
484 sctp_chunk_free(chunk);
486 asoc->addip_last_asconf = chunk;
544 /* Send an ASCONF chunk with Add IP address parameters to all the peers of the
549 * association, we do not send the chunk for that association. But it will not
562 struct sctp_chunk *chunk;
593 * do not send the asconf chunk to its peer, but continue with
619 chunk = sctp_make_asconf_update_ip(asoc, &laddr->a, addrs,
621 if (!chunk) {
655 retval = sctp_send_asconf(asoc, chunk);
746 /* Send an ASCONF chunk with Delete IP address parameters to all the peers of
751 * association, we do not send the chunk for that association. But it will not
765 struct sctp_chunk *chunk;
774 chunk = NULL;
797 * If so, do not send the asconf chunk to its peer, but
866 chunk = sctp_make_asconf_update_ip(asoc, laddr, addrs, addrcnt,
868 if (!chunk) {
901 retval = sctp_send_asconf(asoc, chunk);
1522 struct sctp_chunk *chunk;
1524 chunk = sctp_make_abort_user(asoc, NULL, 0);
1525 sctp_primitive_ABORT(net, asoc, chunk);
1773 struct sctp_chunk *chunk;
1775 chunk = sctp_make_abort_user(asoc, msg, msg_len);
1776 if (!chunk)
1780 sctp_primitive_ABORT(net, asoc, chunk);
1799 struct sctp_chunk *chunk;
1866 list_for_each_entry(chunk, &datamsg->chunks, frag_list) {
1867 sctp_chunk_hold(chunk);
1868 sctp_set_owner_w(chunk);
1869 chunk->transport = transport;
2137 if (event->chunk && event->chunk->head_skb)
2138 head_skb = event->chunk->head_skb;
3227 * SCTP DATA chunk. If a message is larger than this size it will be
3233 * SCTP's choice of DATA chunk size. Note also that values set larger
3317 struct sctp_chunk *chunk;
3359 /* Create an ASCONF chunk with SET_PRIMARY parameter */
3360 chunk = sctp_make_asconf_set_prim(asoc,
3362 if (!chunk)
3365 err = sctp_send_asconf(asoc, chunk);
3564 * 7.1.18. Add a chunk that must be authenticated (SCTP_AUTH_CHUNK)
3566 * This set option adds a chunk type that the user is requesting to be
3590 /* add this chunk id to the endpoint */
6729 * SCTP DATA chunk. If a message is larger than this size it will be
6735 * SCTP's choice of DATA chunk size. Note also that values set larger
9144 struct sctp_chunk *chunk = skb_shinfo(skb)->destructor_arg;
9145 struct sctp_association *asoc = chunk->asoc;
9154 if (chunk->shkey) {
9155 struct sctp_shared_key *shkey = chunk->shkey;
9171 sctp_auth_shkey_release(chunk->shkey);