Lines Matching refs:chunk

46 						 struct sctp_chunk *chunk);
48 struct sctp_chunk *chunk);
50 struct sctp_chunk *chunk);
52 struct sctp_chunk *chunk,
121 struct sctp_chunk *chunk = sctp_get_ecne_prepend(asoc); in sctp_packet_config() local
123 if (chunk) in sctp_packet_config()
124 sctp_packet_append_chunk(packet, chunk); in sctp_packet_config()
161 struct sctp_chunk *chunk, *tmp; in sctp_packet_free() local
165 list_for_each_entry_safe(chunk, tmp, &packet->chunk_list, list) { in sctp_packet_free()
166 list_del_init(&chunk->list); in sctp_packet_free()
167 sctp_chunk_free(chunk); in sctp_packet_free()
179 struct sctp_chunk *chunk, in sctp_packet_transmit_chunk() argument
185 packet, packet->size, chunk, chunk->skb ? chunk->skb->len : -1); in sctp_packet_transmit_chunk()
187 switch ((retval = (sctp_packet_append_chunk(packet, chunk)))) { in sctp_packet_transmit_chunk()
194 chunk->skb->sk->sk_err = -error; in sctp_packet_transmit_chunk()
201 chunk); in sctp_packet_transmit_chunk()
216 struct sctp_chunk *chunk) in sctp_packet_bundle_auth() argument
229 if (chunk->chunk_hdr->type == SCTP_CID_AUTH || pkt->has_auth) in sctp_packet_bundle_auth()
235 if (!chunk->auth) in sctp_packet_bundle_auth()
238 auth = sctp_make_auth(asoc, chunk->shkey->key_id); in sctp_packet_bundle_auth()
242 auth->shkey = chunk->shkey; in sctp_packet_bundle_auth()
255 struct sctp_chunk *chunk) in sctp_packet_bundle_sack() argument
262 if (sctp_chunk_is_data(chunk) && !pkt->has_sack && in sctp_packet_bundle_sack()
303 struct sctp_chunk *chunk) in __sctp_packet_append_chunk() argument
305 __u16 chunk_len = SCTP_PAD4(ntohs(chunk->chunk_hdr->length)); in __sctp_packet_append_chunk()
309 retval = sctp_packet_will_fit(packet, chunk, chunk_len); in __sctp_packet_append_chunk()
314 switch (chunk->chunk_hdr->type) { in __sctp_packet_append_chunk()
318 sctp_packet_append_data(packet, chunk); in __sctp_packet_append_chunk()
326 chunk->sent_at = jiffies; in __sctp_packet_append_chunk()
328 chunk->sent_count++; in __sctp_packet_append_chunk()
336 if (chunk->asoc) in __sctp_packet_append_chunk()
337 chunk->asoc->stats.osacks++; in __sctp_packet_append_chunk()
342 packet->auth = chunk; in __sctp_packet_append_chunk()
347 list_add_tail(&chunk->list, &packet->chunk_list); in __sctp_packet_append_chunk()
349 chunk->transport = packet->transport; in __sctp_packet_append_chunk()
358 struct sctp_chunk *chunk) in sctp_packet_append_chunk() argument
362 pr_debug("%s: packet:%p chunk:%p\n", __func__, packet, chunk); in sctp_packet_append_chunk()
368 if (sctp_chunk_is_data(chunk)) { in sctp_packet_append_chunk()
369 retval = sctp_packet_can_append_data(packet, chunk); in sctp_packet_append_chunk()
375 retval = sctp_packet_bundle_auth(packet, chunk); in sctp_packet_append_chunk()
380 retval = sctp_packet_bundle_sack(packet, chunk); in sctp_packet_append_chunk()
384 retval = __sctp_packet_append_chunk(packet, chunk); in sctp_packet_append_chunk()
411 struct sctp_chunk *chunk, *tmp; in sctp_packet_pack() local
429 list_for_each_entry_safe(chunk, tmp, &packet->chunk_list, in sctp_packet_pack()
431 int padded = SCTP_PAD4(chunk->skb->len); in sctp_packet_pack()
433 if (chunk == packet->auth) in sctp_packet_pack()
450 list_for_each_entry_safe(chunk, tmp, &packet->chunk_list, list) { in sctp_packet_pack()
453 list_del_init(&chunk->list); in sctp_packet_pack()
454 if (sctp_chunk_is_data(chunk)) { in sctp_packet_pack()
455 if (!sctp_chunk_retransmitted(chunk) && in sctp_packet_pack()
457 chunk->rtt_in_progress = 1; in sctp_packet_pack()
462 padding = SCTP_PAD4(chunk->skb->len) - chunk->skb->len; in sctp_packet_pack()
464 skb_put_zero(chunk->skb, padding); in sctp_packet_pack()
466 if (chunk == packet->auth) in sctp_packet_pack()
470 skb_put_data(nskb, chunk->skb->data, chunk->skb->len); in sctp_packet_pack()
473 chunk, in sctp_packet_pack()
474 sctp_cname(SCTP_ST_CHUNK(chunk->chunk_hdr->type)), in sctp_packet_pack()
475 chunk->has_tsn ? "TSN" : "No TSN", in sctp_packet_pack()
476 chunk->has_tsn ? ntohl(chunk->subh.data_hdr->tsn) : 0, in sctp_packet_pack()
477 ntohs(chunk->chunk_hdr->length), chunk->skb->len, in sctp_packet_pack()
478 chunk->rtt_in_progress); in sctp_packet_pack()
480 pkt_size -= SCTP_PAD4(chunk->skb->len); in sctp_packet_pack()
482 if (!sctp_chunk_is_data(chunk) && chunk != packet->auth) in sctp_packet_pack()
483 sctp_chunk_free(chunk); in sctp_packet_pack()
549 struct sctp_chunk *chunk, *tmp; in sctp_packet_transmit() local
559 chunk = list_entry(packet->chunk_list.next, struct sctp_chunk, list); in sctp_packet_transmit()
560 sk = chunk->skb->sk; in sctp_packet_transmit()
634 list_for_each_entry_safe(chunk, tmp, &packet->chunk_list, list) { in sctp_packet_transmit()
635 list_del_init(&chunk->list); in sctp_packet_transmit()
636 if (!sctp_chunk_is_data(chunk)) in sctp_packet_transmit()
637 sctp_chunk_free(chunk); in sctp_packet_transmit()
649 struct sctp_chunk *chunk) in sctp_packet_can_append_data() argument
673 datasize = sctp_data_size(chunk); in sctp_packet_can_append_data()
693 if (chunk->fast_retransmit != SCTP_NEED_FRTX && in sctp_packet_can_append_data()
718 if (chunk->skb->len + q->out_qlen > transport->pathmtu - in sctp_packet_can_append_data()
719 packet->overhead - sctp_datachk_len(&chunk->asoc->stream) - 4) in sctp_packet_can_append_data()
724 if (!chunk->msg->can_delay) in sctp_packet_can_append_data()
733 struct sctp_chunk *chunk) in sctp_packet_append_data() argument
736 size_t datasize = sctp_data_size(chunk); in sctp_packet_append_data()
753 sctp_chunk_assign_tsn(chunk); in sctp_packet_append_data()
754 asoc->stream.si->assign_number(chunk); in sctp_packet_append_data()
758 struct sctp_chunk *chunk, in sctp_packet_will_fit() argument
769 if ((packet->auth && chunk->shkey != packet->auth->shkey) || in sctp_packet_will_fit()
770 (!packet->auth && chunk->shkey && in sctp_packet_will_fit()
771 chunk->chunk_hdr->type != SCTP_CID_AUTH)) in sctp_packet_will_fit()
790 (!packet->has_data && chunk->auth)) { in sctp_packet_will_fit()
816 if (!sctp_chunk_is_data(chunk) && packet->has_data) in sctp_packet_will_fit()