ulpq 28 include/net/sctp/stream_interleave.h int (*ulpevent_data)(struct sctp_ulpq *ulpq, ulpq 30 include/net/sctp/stream_interleave.h int (*enqueue_event)(struct sctp_ulpq *ulpq, ulpq 32 include/net/sctp/stream_interleave.h void (*renege_events)(struct sctp_ulpq *ulpq, ulpq 34 include/net/sctp/stream_interleave.h void (*start_pd)(struct sctp_ulpq *ulpq, gfp_t gfp); ulpq 35 include/net/sctp/stream_interleave.h void (*abort_pd)(struct sctp_ulpq *ulpq, gfp_t gfp); ulpq 39 include/net/sctp/stream_interleave.h void (*report_ftsn)(struct sctp_ulpq *ulpq, __u32 ftsn); ulpq 40 include/net/sctp/stream_interleave.h void (*handle_ftsn)(struct sctp_ulpq *ulpq, ulpq 1936 include/net/sctp/structs.h struct sctp_ulpq ulpq; ulpq 40 include/net/sctp/ulpqueue.h void sctp_ulpq_flush(struct sctp_ulpq *ulpq); ulpq 62 include/net/sctp/ulpqueue.h void sctp_ulpq_skip(struct sctp_ulpq *ulpq, __u16 sid, __u16 ssn); ulpq 66 include/net/sctp/ulpqueue.h __u16 sctp_ulpq_renege_list(struct sctp_ulpq *ulpq, ulpq 224 net/sctp/associola.c if (!sctp_ulpq_init(&asoc->ulpq, asoc)) ulpq 340 net/sctp/associola.c sctp_ulpq_free(&asoc->ulpq); ulpq 848 net/sctp/associola.c asoc->stream.si->enqueue_event(&asoc->ulpq, event); ulpq 1148 net/sctp/associola.c sctp_ulpq_flush(&asoc->ulpq); ulpq 1003 net/sctp/auth.c asoc->stream.si->enqueue_event(&asoc->ulpq, ev); ulpq 110 net/sctp/chunk.c asoc->stream.si->enqueue_event(&asoc->ulpq, ev); ulpq 91 net/sctp/sm_make_chunk.c asoc->stream.si->enqueue_event(&asoc->ulpq, ev); ulpq 620 net/sctp/sm_sideeffect.c asoc->stream.si->abort_pd(&asoc->ulpq, GFP_ATOMIC); ulpq 965 net/sctp/sm_sideeffect.c asoc->stream.si->enqueue_event(&asoc->ulpq, ev); ulpq 1039 net/sctp/sm_sideeffect.c asoc->stream.si->enqueue_event(&asoc->ulpq, ev); ulpq 1049 net/sctp/sm_sideeffect.c asoc->stream.si->enqueue_event(&asoc->ulpq, ev); ulpq 1061 net/sctp/sm_sideeffect.c asoc->stream.si->enqueue_event(&asoc->ulpq, ev); ulpq 1333 net/sctp/sm_sideeffect.c asoc->stream.si->report_ftsn(&asoc->ulpq, cmd->obj.u32); ulpq 1337 net/sctp/sm_sideeffect.c asoc->stream.si->handle_ftsn(&asoc->ulpq, ulpq 1445 net/sctp/sm_sideeffect.c __func__, cmd->obj.chunk, &asoc->ulpq); ulpq 1447 net/sctp/sm_sideeffect.c asoc->stream.si->ulpevent_data(&asoc->ulpq, ulpq 1455 net/sctp/sm_sideeffect.c __func__, cmd->obj.ulpevent, &asoc->ulpq); ulpq 1457 net/sctp/sm_sideeffect.c asoc->stream.si->enqueue_event(&asoc->ulpq, ulpq 1703 net/sctp/sm_sideeffect.c asoc->stream.si->start_pd(&asoc->ulpq, GFP_ATOMIC); ulpq 1707 net/sctp/sm_sideeffect.c asoc->stream.si->renege_events(&asoc->ulpq, ulpq 6394 net/sctp/sm_statefuns.c if ((datalen >= asoc->rwnd) && (!asoc->ulpq.pd_mode)) { ulpq 196 net/sctp/socket.c sctp_skb_for_each(skb, &asoc->ulpq.lobby, tmp) ulpq 199 net/sctp/socket.c sctp_skb_for_each(skb, &asoc->ulpq.reasm, tmp) ulpq 202 net/sctp/socket.c sctp_skb_for_each(skb, &asoc->ulpq.reasm_uo, tmp) ulpq 1521 net/sctp/socket.c if (data_was_unread || !skb_queue_empty(&asoc->ulpq.lobby) || ulpq 1522 net/sctp/socket.c !skb_queue_empty(&asoc->ulpq.reasm) || ulpq 1523 net/sctp/socket.c !skb_queue_empty(&asoc->ulpq.reasm_uo) || ulpq 2259 net/sctp/socket.c asoc->stream.si->enqueue_event(&asoc->ulpq, event); ulpq 4448 net/sctp/socket.c asoc->stream.si->enqueue_event(&asoc->ulpq, event); ulpq 9008 net/sctp/socket.c asoc->stream.si->enqueue_event(&asoc->ulpq, ev); ulpq 9430 net/sctp/socket.c atomic_set(&sctp_sk(newsk)->pd_mode, assoc->ulpq.pd_mode); ulpq 9436 net/sctp/socket.c if (assoc->ulpq.pd_mode) { ulpq 9456 net/sctp/socket.c if (assoc->ulpq.pd_mode) ulpq 725 net/sctp/stream.c asoc->stream.si->report_ftsn(&asoc->ulpq, max_tsn_seen); ulpq 1002 net/sctp/stream.c asoc->stream.si->report_ftsn(&asoc->ulpq, mtsn); ulpq 124 net/sctp/stream_interleave.c static void sctp_intl_store_reasm(struct sctp_ulpq *ulpq, ulpq 130 net/sctp/stream_interleave.c pos = skb_peek_tail(&ulpq->reasm); ulpq 132 net/sctp/stream_interleave.c __skb_queue_tail(&ulpq->reasm, sctp_event2skb(event)); ulpq 143 net/sctp/stream_interleave.c __skb_queue_tail(&ulpq->reasm, sctp_event2skb(event)); ulpq 150 net/sctp/stream_interleave.c __skb_queue_tail(&ulpq->reasm, sctp_event2skb(event)); ulpq 155 net/sctp/stream_interleave.c skb_queue_walk(&ulpq->reasm, pos) { ulpq 175 net/sctp/stream_interleave.c __skb_queue_tail(&ulpq->reasm, sctp_event2skb(event)); ulpq 177 net/sctp/stream_interleave.c __skb_queue_before(&ulpq->reasm, loc, sctp_event2skb(event)); ulpq 181 net/sctp/stream_interleave.c struct sctp_ulpq *ulpq, ulpq 192 net/sctp/stream_interleave.c sin = sctp_stream_in(&ulpq->asoc->stream, event->stream); ulpq 194 net/sctp/stream_interleave.c skb_queue_walk(&ulpq->reasm, pos) { ulpq 244 net/sctp/stream_interleave.c retval = sctp_make_reassembled_event(sock_net(ulpq->asoc->base.sk), ulpq 245 net/sctp/stream_interleave.c &ulpq->reasm, first_frag, ulpq 259 net/sctp/stream_interleave.c struct sctp_ulpq *ulpq, ulpq 262 net/sctp/stream_interleave.c struct sctp_association *asoc = ulpq->asoc; ulpq 273 net/sctp/stream_interleave.c sin = sctp_stream_in(&ulpq->asoc->stream, event->stream); ulpq 275 net/sctp/stream_interleave.c skb_queue_walk(&ulpq->reasm, pos) { ulpq 330 net/sctp/stream_interleave.c &ulpq->reasm, ulpq 341 net/sctp/stream_interleave.c &ulpq->reasm, ulpq 350 net/sctp/stream_interleave.c static struct sctp_ulpevent *sctp_intl_reasm(struct sctp_ulpq *ulpq, ulpq 361 net/sctp/stream_interleave.c sctp_intl_store_reasm(ulpq, event); ulpq 363 net/sctp/stream_interleave.c sin = sctp_stream_in(&ulpq->asoc->stream, event->stream); ulpq 366 net/sctp/stream_interleave.c retval = sctp_intl_retrieve_partial(ulpq, event); ulpq 369 net/sctp/stream_interleave.c retval = sctp_intl_retrieve_reassembled(ulpq, event); ulpq 374 net/sctp/stream_interleave.c static void sctp_intl_store_ordered(struct sctp_ulpq *ulpq, ulpq 380 net/sctp/stream_interleave.c pos = skb_peek_tail(&ulpq->lobby); ulpq 382 net/sctp/stream_interleave.c __skb_queue_tail(&ulpq->lobby, sctp_event2skb(event)); ulpq 389 net/sctp/stream_interleave.c __skb_queue_tail(&ulpq->lobby, sctp_event2skb(event)); ulpq 394 net/sctp/stream_interleave.c __skb_queue_tail(&ulpq->lobby, sctp_event2skb(event)); ulpq 399 net/sctp/stream_interleave.c skb_queue_walk(&ulpq->lobby, pos) { ulpq 414 net/sctp/stream_interleave.c __skb_queue_tail(&ulpq->lobby, sctp_event2skb(event)); ulpq 416 net/sctp/stream_interleave.c __skb_queue_before(&ulpq->lobby, loc, sctp_event2skb(event)); ulpq 419 net/sctp/stream_interleave.c static void sctp_intl_retrieve_ordered(struct sctp_ulpq *ulpq, ulpq 427 net/sctp/stream_interleave.c stream = &ulpq->asoc->stream; ulpq 430 net/sctp/stream_interleave.c sctp_skb_for_each(pos, &ulpq->lobby, tmp) { ulpq 444 net/sctp/stream_interleave.c __skb_unlink(pos, &ulpq->lobby); ulpq 450 net/sctp/stream_interleave.c static struct sctp_ulpevent *sctp_intl_order(struct sctp_ulpq *ulpq, ulpq 456 net/sctp/stream_interleave.c stream = &ulpq->asoc->stream; ulpq 460 net/sctp/stream_interleave.c sctp_intl_store_ordered(ulpq, event); ulpq 466 net/sctp/stream_interleave.c sctp_intl_retrieve_ordered(ulpq, event); ulpq 471 net/sctp/stream_interleave.c static int sctp_enqueue_event(struct sctp_ulpq *ulpq, ulpq 474 net/sctp/stream_interleave.c struct sock *sk = ulpq->asoc->base.sk; ulpq 492 net/sctp/stream_interleave.c if (!sctp_ulpevent_is_enabled(event, ulpq->asoc->subscribe)) ulpq 517 net/sctp/stream_interleave.c static void sctp_intl_store_reasm_uo(struct sctp_ulpq *ulpq, ulpq 523 net/sctp/stream_interleave.c pos = skb_peek_tail(&ulpq->reasm_uo); ulpq 525 net/sctp/stream_interleave.c __skb_queue_tail(&ulpq->reasm_uo, sctp_event2skb(event)); ulpq 536 net/sctp/stream_interleave.c __skb_queue_tail(&ulpq->reasm_uo, sctp_event2skb(event)); ulpq 543 net/sctp/stream_interleave.c __skb_queue_tail(&ulpq->reasm_uo, sctp_event2skb(event)); ulpq 547 net/sctp/stream_interleave.c skb_queue_walk(&ulpq->reasm_uo, pos) { ulpq 563 net/sctp/stream_interleave.c __skb_queue_before(&ulpq->reasm_uo, pos, sctp_event2skb(event)); ulpq 567 net/sctp/stream_interleave.c struct sctp_ulpq *ulpq, ulpq 578 net/sctp/stream_interleave.c sin = sctp_stream_in(&ulpq->asoc->stream, event->stream); ulpq 580 net/sctp/stream_interleave.c skb_queue_walk(&ulpq->reasm_uo, pos) { ulpq 633 net/sctp/stream_interleave.c retval = sctp_make_reassembled_event(sock_net(ulpq->asoc->base.sk), ulpq 634 net/sctp/stream_interleave.c &ulpq->reasm_uo, first_frag, ulpq 648 net/sctp/stream_interleave.c struct sctp_ulpq *ulpq, ulpq 651 net/sctp/stream_interleave.c struct sctp_association *asoc = ulpq->asoc; ulpq 662 net/sctp/stream_interleave.c sin = sctp_stream_in(&ulpq->asoc->stream, event->stream); ulpq 664 net/sctp/stream_interleave.c skb_queue_walk(&ulpq->reasm_uo, pos) { ulpq 720 net/sctp/stream_interleave.c &ulpq->reasm_uo, ulpq 731 net/sctp/stream_interleave.c &ulpq->reasm_uo, ulpq 740 net/sctp/stream_interleave.c static struct sctp_ulpevent *sctp_intl_reasm_uo(struct sctp_ulpq *ulpq, ulpq 751 net/sctp/stream_interleave.c sctp_intl_store_reasm_uo(ulpq, event); ulpq 753 net/sctp/stream_interleave.c sin = sctp_stream_in(&ulpq->asoc->stream, event->stream); ulpq 756 net/sctp/stream_interleave.c retval = sctp_intl_retrieve_partial_uo(ulpq, event); ulpq 759 net/sctp/stream_interleave.c retval = sctp_intl_retrieve_reassembled_uo(ulpq, event); ulpq 764 net/sctp/stream_interleave.c static struct sctp_ulpevent *sctp_intl_retrieve_first_uo(struct sctp_ulpq *ulpq) ulpq 774 net/sctp/stream_interleave.c skb_queue_walk(&ulpq->reasm_uo, pos) { ulpq 777 net/sctp/stream_interleave.c csin = sctp_stream_in(&ulpq->asoc->stream, cevent->stream); ulpq 817 net/sctp/stream_interleave.c retval = sctp_make_reassembled_event(sock_net(ulpq->asoc->base.sk), ulpq 818 net/sctp/stream_interleave.c &ulpq->reasm_uo, first_frag, ulpq 828 net/sctp/stream_interleave.c static int sctp_ulpevent_idata(struct sctp_ulpq *ulpq, ulpq 846 net/sctp/stream_interleave.c event = sctp_intl_reasm(ulpq, event); ulpq 852 net/sctp/stream_interleave.c event = sctp_intl_order(ulpq, event); ulpq 855 net/sctp/stream_interleave.c event = sctp_intl_reasm_uo(ulpq, event); ulpq 864 net/sctp/stream_interleave.c sctp_enqueue_event(ulpq, &temp); ulpq 870 net/sctp/stream_interleave.c static struct sctp_ulpevent *sctp_intl_retrieve_first(struct sctp_ulpq *ulpq) ulpq 880 net/sctp/stream_interleave.c skb_queue_walk(&ulpq->reasm, pos) { ulpq 883 net/sctp/stream_interleave.c csin = sctp_stream_in(&ulpq->asoc->stream, cevent->stream); ulpq 924 net/sctp/stream_interleave.c retval = sctp_make_reassembled_event(sock_net(ulpq->asoc->base.sk), ulpq 925 net/sctp/stream_interleave.c &ulpq->reasm, first_frag, ulpq 935 net/sctp/stream_interleave.c static void sctp_intl_start_pd(struct sctp_ulpq *ulpq, gfp_t gfp) ulpq 940 net/sctp/stream_interleave.c if (!skb_queue_empty(&ulpq->reasm)) { ulpq 942 net/sctp/stream_interleave.c event = sctp_intl_retrieve_first(ulpq); ulpq 946 net/sctp/stream_interleave.c sctp_enqueue_event(ulpq, &temp); ulpq 951 net/sctp/stream_interleave.c if (!skb_queue_empty(&ulpq->reasm_uo)) { ulpq 953 net/sctp/stream_interleave.c event = sctp_intl_retrieve_first_uo(ulpq); ulpq 957 net/sctp/stream_interleave.c sctp_enqueue_event(ulpq, &temp); ulpq 963 net/sctp/stream_interleave.c static void sctp_renege_events(struct sctp_ulpq *ulpq, struct sctp_chunk *chunk, ulpq 966 net/sctp/stream_interleave.c struct sctp_association *asoc = ulpq->asoc; ulpq 974 net/sctp/stream_interleave.c freed = sctp_ulpq_renege_list(ulpq, &ulpq->lobby, needed); ulpq 976 net/sctp/stream_interleave.c freed += sctp_ulpq_renege_list(ulpq, &ulpq->reasm, ulpq 979 net/sctp/stream_interleave.c freed += sctp_ulpq_renege_list(ulpq, &ulpq->reasm_uo, ulpq 983 net/sctp/stream_interleave.c if (freed >= needed && sctp_ulpevent_idata(ulpq, chunk, gfp) <= 0) ulpq 984 net/sctp/stream_interleave.c sctp_intl_start_pd(ulpq, gfp); ulpq 989 net/sctp/stream_interleave.c static void sctp_intl_stream_abort_pd(struct sctp_ulpq *ulpq, __u16 sid, ulpq 992 net/sctp/stream_interleave.c struct sock *sk = ulpq->asoc->base.sk; ulpq 995 net/sctp/stream_interleave.c if (!sctp_ulpevent_type_enabled(ulpq->asoc->subscribe, ulpq 999 net/sctp/stream_interleave.c ev = sctp_ulpevent_make_pdapi(ulpq->asoc, SCTP_PARTIAL_DELIVERY_ABORTED, ulpq 1013 net/sctp/stream_interleave.c static void sctp_intl_reap_ordered(struct sctp_ulpq *ulpq, __u16 sid) ulpq 1015 net/sctp/stream_interleave.c struct sctp_stream *stream = &ulpq->asoc->stream; ulpq 1017 net/sctp/stream_interleave.c struct sk_buff_head *lobby = &ulpq->lobby; ulpq 1059 net/sctp/stream_interleave.c sctp_intl_retrieve_ordered(ulpq, event); ulpq 1060 net/sctp/stream_interleave.c sctp_enqueue_event(ulpq, &temp); ulpq 1064 net/sctp/stream_interleave.c static void sctp_intl_abort_pd(struct sctp_ulpq *ulpq, gfp_t gfp) ulpq 1066 net/sctp/stream_interleave.c struct sctp_stream *stream = &ulpq->asoc->stream; ulpq 1077 net/sctp/stream_interleave.c sctp_intl_stream_abort_pd(ulpq, sid, mid, 0x1, gfp); ulpq 1084 net/sctp/stream_interleave.c sctp_intl_stream_abort_pd(ulpq, sid, mid, 0, gfp); ulpq 1087 net/sctp/stream_interleave.c sctp_intl_reap_ordered(ulpq, sid); ulpq 1092 net/sctp/stream_interleave.c sctp_ulpq_flush(ulpq); ulpq 1206 net/sctp/stream_interleave.c static void sctp_report_fwdtsn(struct sctp_ulpq *ulpq, __u32 ftsn) ulpq 1209 net/sctp/stream_interleave.c sctp_tsnmap_skip(&ulpq->asoc->peer.tsn_map, ftsn); ulpq 1211 net/sctp/stream_interleave.c sctp_ulpq_reasm_flushtsn(ulpq, ftsn); ulpq 1213 net/sctp/stream_interleave.c sctp_ulpq_abort_pd(ulpq, GFP_ATOMIC); ulpq 1216 net/sctp/stream_interleave.c static void sctp_intl_reasm_flushtsn(struct sctp_ulpq *ulpq, __u32 ftsn) ulpq 1220 net/sctp/stream_interleave.c skb_queue_walk_safe(&ulpq->reasm, pos, tmp) { ulpq 1225 net/sctp/stream_interleave.c __skb_unlink(pos, &ulpq->reasm); ulpq 1230 net/sctp/stream_interleave.c skb_queue_walk_safe(&ulpq->reasm_uo, pos, tmp) { ulpq 1235 net/sctp/stream_interleave.c __skb_unlink(pos, &ulpq->reasm_uo); ulpq 1241 net/sctp/stream_interleave.c static void sctp_report_iftsn(struct sctp_ulpq *ulpq, __u32 ftsn) ulpq 1244 net/sctp/stream_interleave.c sctp_tsnmap_skip(&ulpq->asoc->peer.tsn_map, ftsn); ulpq 1246 net/sctp/stream_interleave.c sctp_intl_reasm_flushtsn(ulpq, ftsn); ulpq 1248 net/sctp/stream_interleave.c if (ftsn == sctp_tsnmap_get_max_tsn_seen(&ulpq->asoc->peer.tsn_map)) ulpq 1249 net/sctp/stream_interleave.c sctp_intl_abort_pd(ulpq, GFP_ATOMIC); ulpq 1252 net/sctp/stream_interleave.c static void sctp_handle_fwdtsn(struct sctp_ulpq *ulpq, struct sctp_chunk *chunk) ulpq 1258 net/sctp/stream_interleave.c sctp_ulpq_skip(ulpq, ntohs(skip->stream), ntohs(skip->ssn)); ulpq 1261 net/sctp/stream_interleave.c static void sctp_intl_skip(struct sctp_ulpq *ulpq, __u16 sid, __u32 mid, ulpq 1264 net/sctp/stream_interleave.c struct sctp_stream_in *sin = sctp_stream_in(&ulpq->asoc->stream, sid); ulpq 1265 net/sctp/stream_interleave.c struct sctp_stream *stream = &ulpq->asoc->stream; ulpq 1270 net/sctp/stream_interleave.c sctp_intl_stream_abort_pd(ulpq, sid, mid, 0x1, ulpq 1281 net/sctp/stream_interleave.c sctp_intl_stream_abort_pd(ulpq, sid, mid, 0x0, GFP_ATOMIC); ulpq 1286 net/sctp/stream_interleave.c sctp_intl_reap_ordered(ulpq, sid); ulpq 1289 net/sctp/stream_interleave.c static void sctp_handle_iftsn(struct sctp_ulpq *ulpq, struct sctp_chunk *chunk) ulpq 1295 net/sctp/stream_interleave.c sctp_intl_skip(ulpq, ntohs(skip->stream), ulpq 1299 net/sctp/stream_interleave.c static int do_ulpq_tail_event(struct sctp_ulpq *ulpq, struct sctp_ulpevent *event) ulpq 1305 net/sctp/stream_interleave.c return sctp_ulpq_tail_event(ulpq, &temp); ulpq 1327 net/sctp/stream_interleave.c static int do_sctp_enqueue_event(struct sctp_ulpq *ulpq, ulpq 1334 net/sctp/stream_interleave.c return sctp_enqueue_event(ulpq, &temp); ulpq 32 net/sctp/ulpqueue.c static struct sctp_ulpevent *sctp_ulpq_reasm(struct sctp_ulpq *ulpq, ulpq 36 net/sctp/ulpqueue.c static void sctp_ulpq_reasm_drain(struct sctp_ulpq *ulpq); ulpq 41 net/sctp/ulpqueue.c struct sctp_ulpq *sctp_ulpq_init(struct sctp_ulpq *ulpq, ulpq 44 net/sctp/ulpqueue.c memset(ulpq, 0, sizeof(struct sctp_ulpq)); ulpq 46 net/sctp/ulpqueue.c ulpq->asoc = asoc; ulpq 47 net/sctp/ulpqueue.c skb_queue_head_init(&ulpq->reasm); ulpq 48 net/sctp/ulpqueue.c skb_queue_head_init(&ulpq->reasm_uo); ulpq 49 net/sctp/ulpqueue.c skb_queue_head_init(&ulpq->lobby); ulpq 50 net/sctp/ulpqueue.c ulpq->pd_mode = 0; ulpq 52 net/sctp/ulpqueue.c return ulpq; ulpq 57 net/sctp/ulpqueue.c void sctp_ulpq_flush(struct sctp_ulpq *ulpq) ulpq 62 net/sctp/ulpqueue.c while ((skb = __skb_dequeue(&ulpq->lobby)) != NULL) { ulpq 67 net/sctp/ulpqueue.c while ((skb = __skb_dequeue(&ulpq->reasm)) != NULL) { ulpq 72 net/sctp/ulpqueue.c while ((skb = __skb_dequeue(&ulpq->reasm_uo)) != NULL) { ulpq 79 net/sctp/ulpqueue.c void sctp_ulpq_free(struct sctp_ulpq *ulpq) ulpq 81 net/sctp/ulpqueue.c sctp_ulpq_flush(ulpq); ulpq 85 net/sctp/ulpqueue.c int sctp_ulpq_tail_data(struct sctp_ulpq *ulpq, struct sctp_chunk *chunk, ulpq 101 net/sctp/ulpqueue.c event = sctp_ulpq_reasm(ulpq, event); ulpq 110 net/sctp/ulpqueue.c event = sctp_ulpq_order(ulpq, event); ulpq 118 net/sctp/ulpqueue.c sctp_ulpq_tail_event(ulpq, &temp); ulpq 166 net/sctp/ulpqueue.c static void sctp_ulpq_set_pd(struct sctp_ulpq *ulpq) ulpq 168 net/sctp/ulpqueue.c struct sctp_sock *sp = sctp_sk(ulpq->asoc->base.sk); ulpq 171 net/sctp/ulpqueue.c ulpq->pd_mode = 1; ulpq 175 net/sctp/ulpqueue.c static int sctp_ulpq_clear_pd(struct sctp_ulpq *ulpq) ulpq 177 net/sctp/ulpqueue.c ulpq->pd_mode = 0; ulpq 178 net/sctp/ulpqueue.c sctp_ulpq_reasm_drain(ulpq); ulpq 179 net/sctp/ulpqueue.c return sctp_clear_pd(ulpq->asoc->base.sk, ulpq->asoc); ulpq 182 net/sctp/ulpqueue.c int sctp_ulpq_tail_event(struct sctp_ulpq *ulpq, struct sk_buff_head *skb_list) ulpq 184 net/sctp/ulpqueue.c struct sock *sk = ulpq->asoc->base.sk; ulpq 207 net/sctp/ulpqueue.c if (!sctp_ulpevent_is_enabled(event, ulpq->asoc->subscribe)) ulpq 218 net/sctp/ulpqueue.c if (ulpq->pd_mode) { ulpq 252 net/sctp/ulpqueue.c sctp_ulpq_clear_pd(ulpq); ulpq 273 net/sctp/ulpqueue.c static void sctp_ulpq_store_reasm(struct sctp_ulpq *ulpq, ulpq 283 net/sctp/ulpqueue.c pos = skb_peek_tail(&ulpq->reasm); ulpq 285 net/sctp/ulpqueue.c __skb_queue_tail(&ulpq->reasm, sctp_event2skb(event)); ulpq 293 net/sctp/ulpqueue.c __skb_queue_tail(&ulpq->reasm, sctp_event2skb(event)); ulpq 298 net/sctp/ulpqueue.c skb_queue_walk(&ulpq->reasm, pos) { ulpq 307 net/sctp/ulpqueue.c __skb_queue_before(&ulpq->reasm, pos, sctp_event2skb(event)); ulpq 399 net/sctp/ulpqueue.c static struct sctp_ulpevent *sctp_ulpq_retrieve_reassembled(struct sctp_ulpq *ulpq) ulpq 431 net/sctp/ulpqueue.c skb_queue_walk(&ulpq->reasm, pos) { ulpq 441 net/sctp/ulpqueue.c if (skb_queue_is_first(&ulpq->reasm, pos)) { ulpq 475 net/sctp/ulpqueue.c asoc = ulpq->asoc; ulpq 490 net/sctp/ulpqueue.c &ulpq->reasm, ulpq 494 net/sctp/ulpqueue.c sctp_ulpq_set_pd(ulpq); ulpq 500 net/sctp/ulpqueue.c retval = sctp_make_reassembled_event(sock_net(ulpq->asoc->base.sk), ulpq 501 net/sctp/ulpqueue.c &ulpq->reasm, first_frag, pos); ulpq 508 net/sctp/ulpqueue.c static struct sctp_ulpevent *sctp_ulpq_retrieve_partial(struct sctp_ulpq *ulpq) ulpq 521 net/sctp/ulpqueue.c if (skb_queue_empty(&ulpq->reasm)) ulpq 529 net/sctp/ulpqueue.c skb_queue_walk(&ulpq->reasm, pos) { ulpq 566 net/sctp/ulpqueue.c retval = sctp_make_reassembled_event(sock_net(ulpq->asoc->base.sk), ulpq 567 net/sctp/ulpqueue.c &ulpq->reasm, first_frag, last_frag); ulpq 578 net/sctp/ulpqueue.c static struct sctp_ulpevent *sctp_ulpq_reasm(struct sctp_ulpq *ulpq, ulpq 589 net/sctp/ulpqueue.c sctp_ulpq_store_reasm(ulpq, event); ulpq 590 net/sctp/ulpqueue.c if (!ulpq->pd_mode) ulpq 591 net/sctp/ulpqueue.c retval = sctp_ulpq_retrieve_reassembled(ulpq); ulpq 599 net/sctp/ulpqueue.c ctsnap = sctp_tsnmap_get_ctsn(&ulpq->asoc->peer.tsn_map); ulpq 601 net/sctp/ulpqueue.c retval = sctp_ulpq_retrieve_partial(ulpq); ulpq 608 net/sctp/ulpqueue.c static struct sctp_ulpevent *sctp_ulpq_retrieve_first(struct sctp_ulpq *ulpq) ulpq 620 net/sctp/ulpqueue.c if (skb_queue_empty(&ulpq->reasm)) ulpq 627 net/sctp/ulpqueue.c skb_queue_walk(&ulpq->reasm, pos) { ulpq 667 net/sctp/ulpqueue.c retval = sctp_make_reassembled_event(sock_net(ulpq->asoc->base.sk), ulpq 668 net/sctp/ulpqueue.c &ulpq->reasm, first_frag, last_frag); ulpq 686 net/sctp/ulpqueue.c void sctp_ulpq_reasm_flushtsn(struct sctp_ulpq *ulpq, __u32 fwd_tsn) ulpq 692 net/sctp/ulpqueue.c if (skb_queue_empty(&ulpq->reasm)) ulpq 695 net/sctp/ulpqueue.c skb_queue_walk_safe(&ulpq->reasm, pos, tmp) { ulpq 705 net/sctp/ulpqueue.c __skb_unlink(pos, &ulpq->reasm); ulpq 717 net/sctp/ulpqueue.c static void sctp_ulpq_reasm_drain(struct sctp_ulpq *ulpq) ulpq 721 net/sctp/ulpqueue.c if (skb_queue_empty(&ulpq->reasm)) ulpq 724 net/sctp/ulpqueue.c while ((event = sctp_ulpq_retrieve_reassembled(ulpq)) != NULL) { ulpq 732 net/sctp/ulpqueue.c event = sctp_ulpq_order(ulpq, event); ulpq 738 net/sctp/ulpqueue.c sctp_ulpq_tail_event(ulpq, &temp); ulpq 746 net/sctp/ulpqueue.c static void sctp_ulpq_retrieve_ordered(struct sctp_ulpq *ulpq, ulpq 756 net/sctp/ulpqueue.c stream = &ulpq->asoc->stream; ulpq 761 net/sctp/ulpqueue.c sctp_skb_for_each(pos, &ulpq->lobby, tmp) { ulpq 780 net/sctp/ulpqueue.c __skb_unlink(pos, &ulpq->lobby); ulpq 788 net/sctp/ulpqueue.c static void sctp_ulpq_store_ordered(struct sctp_ulpq *ulpq, ulpq 796 net/sctp/ulpqueue.c pos = skb_peek_tail(&ulpq->lobby); ulpq 798 net/sctp/ulpqueue.c __skb_queue_tail(&ulpq->lobby, sctp_event2skb(event)); ulpq 809 net/sctp/ulpqueue.c __skb_queue_tail(&ulpq->lobby, sctp_event2skb(event)); ulpq 814 net/sctp/ulpqueue.c __skb_queue_tail(&ulpq->lobby, sctp_event2skb(event)); ulpq 821 net/sctp/ulpqueue.c skb_queue_walk(&ulpq->lobby, pos) { ulpq 834 net/sctp/ulpqueue.c __skb_queue_before(&ulpq->lobby, pos, sctp_event2skb(event)); ulpq 837 net/sctp/ulpqueue.c static struct sctp_ulpevent *sctp_ulpq_order(struct sctp_ulpq *ulpq, ulpq 850 net/sctp/ulpqueue.c stream = &ulpq->asoc->stream; ulpq 857 net/sctp/ulpqueue.c sctp_ulpq_store_ordered(ulpq, event); ulpq 867 net/sctp/ulpqueue.c sctp_ulpq_retrieve_ordered(ulpq, event); ulpq 875 net/sctp/ulpqueue.c static void sctp_ulpq_reap_ordered(struct sctp_ulpq *ulpq, __u16 sid) ulpq 882 net/sctp/ulpqueue.c struct sk_buff_head *lobby = &ulpq->lobby; ulpq 885 net/sctp/ulpqueue.c stream = &ulpq->asoc->stream; ulpq 937 net/sctp/ulpqueue.c sctp_ulpq_retrieve_ordered(ulpq, event); ulpq 938 net/sctp/ulpqueue.c sctp_ulpq_tail_event(ulpq, &temp); ulpq 945 net/sctp/ulpqueue.c void sctp_ulpq_skip(struct sctp_ulpq *ulpq, __u16 sid, __u16 ssn) ulpq 950 net/sctp/ulpqueue.c stream = &ulpq->asoc->stream; ulpq 962 net/sctp/ulpqueue.c sctp_ulpq_reap_ordered(ulpq, sid); ulpq 965 net/sctp/ulpqueue.c __u16 sctp_ulpq_renege_list(struct sctp_ulpq *ulpq, struct sk_buff_head *list, ulpq 974 net/sctp/ulpqueue.c tsnmap = &ulpq->asoc->peer.tsn_map; ulpq 1014 net/sctp/ulpqueue.c static __u16 sctp_ulpq_renege_order(struct sctp_ulpq *ulpq, __u16 needed) ulpq 1016 net/sctp/ulpqueue.c return sctp_ulpq_renege_list(ulpq, &ulpq->lobby, needed); ulpq 1020 net/sctp/ulpqueue.c static __u16 sctp_ulpq_renege_frags(struct sctp_ulpq *ulpq, __u16 needed) ulpq 1022 net/sctp/ulpqueue.c return sctp_ulpq_renege_list(ulpq, &ulpq->reasm, needed); ulpq 1026 net/sctp/ulpqueue.c void sctp_ulpq_partial_delivery(struct sctp_ulpq *ulpq, ulpq 1035 net/sctp/ulpqueue.c asoc = ulpq->asoc; ulpq 1041 net/sctp/ulpqueue.c if (ulpq->pd_mode) ulpq 1047 net/sctp/ulpqueue.c skb = skb_peek(&asoc->ulpq.reasm); ulpq 1061 net/sctp/ulpqueue.c event = sctp_ulpq_retrieve_first(ulpq); ulpq 1068 net/sctp/ulpqueue.c sctp_ulpq_tail_event(ulpq, &temp); ulpq 1069 net/sctp/ulpqueue.c sctp_ulpq_set_pd(ulpq); ulpq 1076 net/sctp/ulpqueue.c void sctp_ulpq_renege(struct sctp_ulpq *ulpq, struct sctp_chunk *chunk, ulpq 1079 net/sctp/ulpqueue.c struct sctp_association *asoc = ulpq->asoc; ulpq 1087 net/sctp/ulpqueue.c freed = sctp_ulpq_renege_order(ulpq, needed); ulpq 1089 net/sctp/ulpqueue.c freed += sctp_ulpq_renege_frags(ulpq, needed - freed); ulpq 1094 net/sctp/ulpqueue.c int retval = sctp_ulpq_tail_data(ulpq, chunk, gfp); ulpq 1100 net/sctp/ulpqueue.c sctp_ulpq_partial_delivery(ulpq, gfp); ulpq 1102 net/sctp/ulpqueue.c sctp_ulpq_reasm_drain(ulpq); ulpq 1113 net/sctp/ulpqueue.c void sctp_ulpq_abort_pd(struct sctp_ulpq *ulpq, gfp_t gfp) ulpq 1119 net/sctp/ulpqueue.c if (!ulpq->pd_mode) ulpq 1122 net/sctp/ulpqueue.c sk = ulpq->asoc->base.sk; ulpq 1124 net/sctp/ulpqueue.c if (sctp_ulpevent_type_enabled(ulpq->asoc->subscribe, ulpq 1126 net/sctp/ulpqueue.c ev = sctp_ulpevent_make_pdapi(ulpq->asoc, ulpq 1133 net/sctp/ulpqueue.c if ((sctp_ulpq_clear_pd(ulpq) || ev) && !sp->data_ready_signalled) {