Lines Matching refs:chunk

61 					      struct sctp_chunk *chunk);
63 struct sctp_chunk *chunk);
65 struct sctp_chunk *chunk);
67 struct sctp_chunk *chunk,
87 struct sctp_chunk *chunk = NULL; in sctp_packet_config() local
94 chunk = sctp_get_ecne_prepend(packet->transport->asoc); in sctp_packet_config()
99 if (chunk) in sctp_packet_config()
100 sctp_packet_append_chunk(packet, chunk); in sctp_packet_config()
137 struct sctp_chunk *chunk, *tmp; in sctp_packet_free() local
141 list_for_each_entry_safe(chunk, tmp, &packet->chunk_list, list) { in sctp_packet_free()
142 list_del_init(&chunk->list); in sctp_packet_free()
143 sctp_chunk_free(chunk); in sctp_packet_free()
155 struct sctp_chunk *chunk, in sctp_packet_transmit_chunk() argument
161 pr_debug("%s: packet:%p chunk:%p\n", __func__, packet, chunk); in sctp_packet_transmit_chunk()
163 switch ((retval = (sctp_packet_append_chunk(packet, chunk)))) { in sctp_packet_transmit_chunk()
168 chunk->skb->sk->sk_err = -error; in sctp_packet_transmit_chunk()
175 chunk); in sctp_packet_transmit_chunk()
190 struct sctp_chunk *chunk) in sctp_packet_bundle_auth() argument
203 if (chunk->chunk_hdr->type == SCTP_CID_AUTH || pkt->has_auth) in sctp_packet_bundle_auth()
209 if (!chunk->auth) in sctp_packet_bundle_auth()
226 struct sctp_chunk *chunk) in sctp_packet_bundle_sack() argument
233 if (sctp_chunk_is_data(chunk) && !pkt->has_sack && in sctp_packet_bundle_sack()
271 struct sctp_chunk *chunk) in __sctp_packet_append_chunk() argument
274 __u16 chunk_len = WORD_ROUND(ntohs(chunk->chunk_hdr->length)); in __sctp_packet_append_chunk()
277 retval = sctp_packet_will_fit(packet, chunk, chunk_len); in __sctp_packet_append_chunk()
282 switch (chunk->chunk_hdr->type) { in __sctp_packet_append_chunk()
285 sctp_packet_append_data(packet, chunk); in __sctp_packet_append_chunk()
293 chunk->sent_at = jiffies; in __sctp_packet_append_chunk()
301 if (chunk->asoc) in __sctp_packet_append_chunk()
302 chunk->asoc->stats.osacks++; in __sctp_packet_append_chunk()
307 packet->auth = chunk; in __sctp_packet_append_chunk()
312 list_add_tail(&chunk->list, &packet->chunk_list); in __sctp_packet_append_chunk()
314 chunk->transport = packet->transport; in __sctp_packet_append_chunk()
323 struct sctp_chunk *chunk) in sctp_packet_append_chunk() argument
327 pr_debug("%s: packet:%p chunk:%p\n", __func__, packet, chunk); in sctp_packet_append_chunk()
333 if (sctp_chunk_is_data(chunk)) { in sctp_packet_append_chunk()
334 retval = sctp_packet_can_append_data(packet, chunk); in sctp_packet_append_chunk()
340 retval = sctp_packet_bundle_auth(packet, chunk); in sctp_packet_append_chunk()
345 retval = sctp_packet_bundle_sack(packet, chunk); in sctp_packet_append_chunk()
349 retval = __sctp_packet_append_chunk(packet, chunk); in sctp_packet_append_chunk()
385 struct sctp_chunk *chunk, *tmp; in sctp_packet_transmit() local
400 chunk = list_entry(packet->chunk_list.next, struct sctp_chunk, list); in sctp_packet_transmit()
401 sk = chunk->skb->sk; in sctp_packet_transmit()
466 list_for_each_entry_safe(chunk, tmp, &packet->chunk_list, list) { in sctp_packet_transmit()
467 list_del_init(&chunk->list); in sctp_packet_transmit()
468 if (sctp_chunk_is_data(chunk)) { in sctp_packet_transmit()
476 if (!chunk->resent && !tp->rto_pending) { in sctp_packet_transmit()
477 chunk->rtt_in_progress = 1; in sctp_packet_transmit()
484 padding = WORD_ROUND(chunk->skb->len) - chunk->skb->len; in sctp_packet_transmit()
486 memset(skb_put(chunk->skb, padding), 0, padding); in sctp_packet_transmit()
492 if (chunk == packet->auth) in sctp_packet_transmit()
495 memcpy(skb_put(nskb, chunk->skb->len), in sctp_packet_transmit()
496 chunk->skb->data, chunk->skb->len); in sctp_packet_transmit()
499 "rtt_in_progress:%d\n", chunk, in sctp_packet_transmit()
500 sctp_cname(SCTP_ST_CHUNK(chunk->chunk_hdr->type)), in sctp_packet_transmit()
501 chunk->has_tsn ? "TSN" : "No TSN", in sctp_packet_transmit()
502 chunk->has_tsn ? ntohl(chunk->subh.data_hdr->tsn) : 0, in sctp_packet_transmit()
503 ntohs(chunk->chunk_hdr->length), chunk->skb->len, in sctp_packet_transmit()
504 chunk->rtt_in_progress); in sctp_packet_transmit()
511 if (!sctp_chunk_is_data(chunk)) in sctp_packet_transmit()
512 sctp_chunk_free(chunk); in sctp_packet_transmit()
619 list_for_each_entry_safe(chunk, tmp, &packet->chunk_list, list) { in sctp_packet_transmit()
620 list_del_init(&chunk->list); in sctp_packet_transmit()
621 if (!sctp_chunk_is_data(chunk)) in sctp_packet_transmit()
622 sctp_chunk_free(chunk); in sctp_packet_transmit()
636 struct sctp_chunk *chunk) in sctp_packet_can_append_data() argument
660 datasize = sctp_data_size(chunk); in sctp_packet_can_append_data()
680 if (chunk->fast_retransmit != SCTP_NEED_FRTX && in sctp_packet_can_append_data()
708 if (chunk->skb->len + q->out_qlen >= transport->pathmtu - packet->overhead) in sctp_packet_can_append_data()
713 if (!chunk->msg->can_delay) in sctp_packet_can_append_data()
722 struct sctp_chunk *chunk) in sctp_packet_append_data() argument
725 size_t datasize = sctp_data_size(chunk); in sctp_packet_append_data()
744 chunk->msg->can_abandon = 0; in sctp_packet_append_data()
745 sctp_chunk_assign_tsn(chunk); in sctp_packet_append_data()
746 sctp_chunk_assign_ssn(chunk); in sctp_packet_append_data()
750 struct sctp_chunk *chunk, in sctp_packet_will_fit() argument
775 if (sctp_packet_empty(packet) || !sctp_chunk_is_data(chunk) || in sctp_packet_will_fit()
776 (!packet->has_data && chunk->auth)) { in sctp_packet_will_fit()