Lines Matching refs:asoc

69 	oute = SCTP_SO(&q->asoc->stream, stream)->ext;
90 oute = SCTP_SO(&q->asoc->stream, stream)->ext;
191 void sctp_outq_init(struct sctp_association *asoc, struct sctp_outq *q)
195 q->asoc = asoc;
201 sctp_sched_set_sched(asoc, sctp_sk(asoc->base.sk)->default_ss);
213 list_for_each_entry(transport, &q->asoc->peer.transport_addr_list,
270 sctp_outq_init(q->asoc, q);
283 struct net *net = q->asoc->base.net;
300 if (chunk->asoc->peer.prsctp_capable &&
302 chunk->asoc->sent_cnt_removable++;
342 static int sctp_prsctp_prune_sent(struct sctp_association *asoc,
358 sctp_insert_list(&asoc->outqueue.abandoned,
361 streamout = SCTP_SO(&asoc->stream, chk->sinfo.sinfo_stream);
362 asoc->sent_cnt_removable--;
363 asoc->abandoned_sent[SCTP_PR_INDEX(PRIO)]++;
366 if (queue != &asoc->outqueue.retransmit &&
371 asoc->outqueue.outstanding_bytes -= sctp_data_size(chk);
382 static int sctp_prsctp_prune_unsent(struct sctp_association *asoc,
385 struct sctp_outq *q = &asoc->outqueue;
389 q->sched->unsched_all(&asoc->stream);
400 asoc->sent_cnt_removable--;
401 asoc->abandoned_unsent[SCTP_PR_INDEX(PRIO)]++;
403 sout = SCTP_SO(&asoc->stream, chk->sinfo.sinfo_stream);
407 if (asoc->stream.out_curr == sout &&
409 asoc->stream.out_curr = NULL;
417 q->sched->sched_all(&asoc->stream);
423 void sctp_prsctp_prune(struct sctp_association *asoc,
428 if (!asoc->peer.prsctp_capable || !asoc->sent_cnt_removable)
431 msg_len = sctp_prsctp_prune_sent(asoc, sinfo,
432 &asoc->outqueue.retransmit,
437 list_for_each_entry(transport, &asoc->peer.transport_addr_list,
439 msg_len = sctp_prsctp_prune_sent(asoc, sinfo,
446 sctp_prsctp_prune_unsent(asoc, sinfo, msg_len);
477 q->asoc->peer.rwnd += sctp_data_size(chunk);
497 q->asoc->peer.rwnd += sctp_data_size(chunk);
540 struct net *net = q->asoc->base.net;
549 if (transport == transport->asoc->peer.retran_path)
550 sctp_assoc_update_retran_path(transport->asoc);
551 transport->asoc->rtx_data_chunks +=
552 transport->asoc->unack_data;
554 transport->asoc->unack_data)
567 transport->asoc->init_retries++;
580 q->asoc->stream.si->generate_ftsn(q, q->asoc->ctsn_ack_point);
725 q->asoc->stats.rtxchunks++;
770 const struct sctp_association *asoc = transport->asoc;
771 const __u16 sport = asoc->base.bind_addr.port;
772 const __u16 dport = asoc->peer.port;
773 const __u32 vtag = asoc->peer.i.init_tag;
793 struct sctp_association *asoc;
820 new_transport = sctp_assoc_lookup_paddr(ctx->asoc,
828 new_transport = ctx->asoc->peer.active_path;
853 new_transport = ctx->asoc->peer.active_path;
870 ctx->asoc->peer.i.init_tag,
871 ctx->asoc->peer.ecn_capable);
894 if (ctx->asoc->src_out_of_asoc_ok &&
917 ctx->asoc->base.sk->sk_err = -error;
920 ctx->asoc->stats.octrlchunks++;
925 ctx->packet->vtag = ctx->asoc->c.my_vtag;
948 ctx->asoc->stats.octrlchunks++;
967 ctx->asoc->stats.octrlchunks++;
978 if (chunk == ctx->asoc->strreset_chunk)
996 if (ctx->asoc->peer.retran_path->state == SCTP_UNCONFIRMED)
999 if (ctx->transport != ctx->asoc->peer.retran_path) {
1001 ctx->transport = ctx->asoc->peer.retran_path;
1008 sctp_packet_config(ctx->packet, ctx->asoc->peer.i.init_tag,
1009 ctx->asoc->peer.ecn_capable);
1015 ctx->asoc->base.sk->sk_err = -error;
1044 switch (ctx->asoc->state) {
1086 __u8 stream_state = SCTP_SO(&ctx->asoc->stream, sid)->state;
1129 if (ctx->asoc->state == SCTP_STATE_SHUTDOWN_PENDING)
1132 ctx->asoc->stats.ouodchunks++;
1134 ctx->asoc->stats.oodchunks++;
1157 struct sock *sk = ctx->asoc->base.sk;
1175 ctx->q->asoc->base.sk->sk_err = -error;
1198 .asoc = q->asoc,
1214 if (q->asoc->src_out_of_asoc_ok)
1250 struct sctp_association *asoc = q->asoc;
1259 struct sctp_transport *primary = asoc->peer.primary_path;
1265 transport_list = &asoc->peer.transport_addr_list;
1270 trace_sctp_probe_path(transport, asoc);
1275 asoc->stats.gapcnt += gap_ack_blocks;
1322 if (TSN_lt(asoc->highest_sacked, highest_tsn))
1323 asoc->highest_sacked = highest_tsn;
1351 if (TSN_lt(asoc->ctsn_ack_point, sack_ctsn)) {
1352 asoc->ctsn_ack_point = sack_ctsn;
1358 if (asoc->fast_recovery && accum_moved)
1367 sctp_sack_update_unack_data(asoc, sack);
1369 ctsn = asoc->ctsn_ack_point;
1378 if (asoc->peer.prsctp_capable &&
1380 asoc->sent_cnt_removable--;
1391 asoc->peer.zero_window_announced = !sack_a_rwnd;
1399 asoc->peer.rwnd = sack_a_rwnd;
1401 asoc->stream.si->generate_ftsn(q, sack_ctsn);
1405 "advertised peer ack point:0x%x\n", __func__, asoc, ctsn,
1406 asoc->adv_peer_ack_point);
1521 q->asoc->peer.primary_path->cacc.
1605 struct sctp_association *asoc = transport->asoc;
1623 transport->asoc->overall_error_count = 0;
1632 if (asoc->state == SCTP_STATE_SHUTDOWN_PENDING &&
1633 del_timer(&asoc->timers
1635 sctp_association_put(asoc);
1644 transport->asoc,
1672 if (!q->asoc->peer.rwnd &&
1674 (sack_ctsn+2 == q->asoc->next_tsn) &&
1675 q->asoc->state < SCTP_STATE_SHUTDOWN_PENDING) {
1679 q->asoc->overall_error_count = 0;
1718 struct sctp_association *asoc = q->asoc;
1719 struct sctp_transport *primary = asoc->peer.primary_path;
1824 struct sctp_association *asoc = q->asoc;
1833 if (!asoc->peer.prsctp_capable)
1842 if (TSN_lt(asoc->adv_peer_ack_point, ctsn))
1843 asoc->adv_peer_ack_point = ctsn;
1878 if (TSN_lte(tsn, asoc->adv_peer_ack_point+1)) {
1879 asoc->adv_peer_ack_point = tsn;
1917 if (asoc->adv_peer_ack_point > ctsn)
1918 ftsn_chunk = sctp_make_fwdtsn(asoc, asoc->adv_peer_ack_point,
1923 SCTP_INC_STATS(asoc->base.net, SCTP_MIB_OUTCTRLCHUNKS);