Lines Matching refs:sctps
135 #define SCTP_LINK(sctp, sctps) \ argument
136 mutex_enter(&(sctps)->sctps_g_lock); \
137 list_insert_tail(&sctps->sctps_g_list, (sctp)); \
138 mutex_exit(&(sctps)->sctps_g_lock);
140 #define SCTP_UNLINK(sctp, sctps) \ argument
141 mutex_enter(&(sctps)->sctps_g_lock); \
143 list_remove(&(sctps)->sctps_g_list, (sctp)); \
144 mutex_exit(&(sctps)->sctps_g_lock);
181 sctp_stack_t *sctps = psctp->sctp_sctps; in sctp_create_eager() local
184 sctps->sctps_netstack)) == NULL) { in sctp_create_eager()
189 sctp->sctp_sctps = sctps; in sctp_create_eager()
226 SCTP_LINK(sctp, sctps); in sctp_create_eager()
629 sctp_stack_t *sctps = sctp->sctp_sctps; in sctp_free() local
631 ASSERT(sctps != NULL); in sctp_free()
633 SCTP_UNLINK(sctp, sctps); in sctp_free()
729 SCTPS_UPDATE_MIB(sctps, sctpOutSCTPPkts, sctp->sctp_opkts); in sctp_free()
730 SCTPS_UPDATE_MIB(sctps, sctpOutCtrlChunks, sctp->sctp_obchunks); in sctp_free()
731 SCTPS_UPDATE_MIB(sctps, sctpOutOrderChunks, sctp->sctp_odchunks); in sctp_free()
732 SCTPS_UPDATE_MIB(sctps, sctpOutUnorderChunks, sctp->sctp_oudchunks); in sctp_free()
733 SCTPS_UPDATE_MIB(sctps, sctpRetransChunks, sctp->sctp_rxtchunks); in sctp_free()
734 SCTPS_UPDATE_MIB(sctps, sctpInSCTPPkts, sctp->sctp_ipkts); in sctp_free()
735 SCTPS_UPDATE_MIB(sctps, sctpInCtrlChunks, sctp->sctp_ibchunks); in sctp_free()
736 SCTPS_UPDATE_MIB(sctps, sctpInOrderChunks, sctp->sctp_idchunks); in sctp_free()
737 SCTPS_UPDATE_MIB(sctps, sctpInUnorderChunks, sctp->sctp_iudchunks); in sctp_free()
738 SCTPS_UPDATE_MIB(sctps, sctpFragUsrMsgs, sctp->sctp_fragdmsgs); in sctp_free()
739 SCTPS_UPDATE_MIB(sctps, sctpReasmUsrMsgs, sctp->sctp_reassmsgs); in sctp_free()
785 sctp_stack_t *sctps = sctp->sctp_sctps; in sctp_init_values() local
806 sctp->sctp_mtu_probe_intvl = sctps->sctps_mtu_probe_interval; in sctp_init_values()
810 sctp->sctp_sack_toggle = sctps->sctps_deferred_acks_max; in sctp_init_values()
876 MSEC_TO_TICK(sctps->sctps_cookie_life); in sctp_init_values()
877 connp->conn_sndlowat = sctps->sctps_xmit_lowat; in sctp_init_values()
878 connp->conn_sndbuf = sctps->sctps_xmit_hiwat; in sctp_init_values()
879 connp->conn_rcvbuf = sctps->sctps_recv_hiwat; in sctp_init_values()
881 sctp->sctp_cwnd_max = sctps->sctps_cwnd_max_; in sctp_init_values()
885 sctp->sctp_rto_max = MSEC_TO_TICK(sctps->sctps_rto_maxg); in sctp_init_values()
887 sctp->sctp_rto_min = MSEC_TO_TICK(sctps->sctps_rto_ming); in sctp_init_values()
889 sctps->sctps_rto_initialg); in sctp_init_values()
890 sctp->sctp_pa_max_rxt = sctps->sctps_pa_max_retr; in sctp_init_values()
891 sctp->sctp_pp_max_rxt = sctps->sctps_pp_max_retr; in sctp_init_values()
892 sctp->sctp_max_init_rxt = sctps->sctps_max_init_retr; in sctp_init_values()
894 sctp->sctp_num_istr = sctps->sctps_max_in_streams; in sctp_init_values()
895 sctp->sctp_num_ostr = sctps->sctps_initial_out_streams; in sctp_init_values()
898 MSEC_TO_TICK(sctps->sctps_heartbeat_interval); in sctp_init_values()
901 connp->conn_default_ttl = sctps->sctps_ipv4_ttl; in sctp_init_values()
903 connp->conn_default_ttl = sctps->sctps_ipv6_hoplimit; in sctp_init_values()
1090 sctp_stack_t *sctps = sctp->sctp_sctps; in sctp_icmp_error() local
1134 if (sctps->sctps_ignore_path_mtu) in sctp_icmp_error()
1163 SCTPS_BUMP_MIB(sctps, sctpAborted); in sctp_icmp_error()
1203 sctp_stack_t *sctps = sctp->sctp_sctps; in sctp_icmp_error_ipv6() local
1240 if (sctps->sctps_ignore_path_mtu) in sctp_icmp_error_ipv6()
1270 SCTPS_BUMP_MIB(sctps, sctpAborted); in sctp_icmp_error_ipv6()
1299 SCTPS_BUMP_MIB(sctps, sctpAborted); in sctp_icmp_error_ipv6()
1330 sctp_stack_t *sctps; in sctp_create() local
1338 sctps = psctp->sctp_sctps; in sctp_create()
1340 netstack_hold(sctps->sctps_netstack); in sctp_create()
1341 ASSERT(sctps->sctps_recvq_tq_list_cur_sz > 0); in sctp_create()
1346 sctps = ns->netstack_sctp; in sctp_create()
1351 if (sctps->sctps_recvq_tq_list_cur_sz == 0) in sctp_create()
1352 sctp_rq_tq_init(sctps); in sctp_create()
1358 if (sctps->sctps_netstack->netstack_stackid != in sctp_create()
1365 sctps->sctps_netstack)) == NULL) { in sctp_create()
1366 netstack_rele(sctps->sctps_netstack); in sctp_create()
1367 SCTP_KSTAT(sctps, sctp_conn_create); in sctp_create()
1374 netstack_rele(sctps->sctps_netstack); in sctp_create()
1376 sctp->sctp_sctps = sctps; in sctp_create()
1411 sctp->sctp_mss = sctps->sctps_initial_mtu - ((family == AF_INET6) ? in sctp_create()
1493 SCTP_LINK(sctp, sctps); in sctp_create()
1528 sctp_stack_t *sctps; in sctp_stack_init() local
1532 sctps = kmem_zalloc(sizeof (*sctps), KM_SLEEP); in sctp_stack_init()
1533 sctps->sctps_netstack = ns; in sctp_stack_init()
1536 mutex_init(&sctps->sctps_g_lock, NULL, MUTEX_DEFAULT, NULL); in sctp_stack_init()
1537 mutex_init(&sctps->sctps_epriv_port_lock, NULL, MUTEX_DEFAULT, NULL); in sctp_stack_init()
1538 sctps->sctps_g_num_epriv_ports = SCTP_NUM_EPRIV_PORTS; in sctp_stack_init()
1539 sctps->sctps_g_epriv_ports[0] = ULP_DEF_EPRIV_PORT1; in sctp_stack_init()
1540 sctps->sctps_g_epriv_ports[1] = ULP_DEF_EPRIV_PORT2; in sctp_stack_init()
1543 sctp_hash_init(sctps); in sctp_stack_init()
1546 sctps->sctps_propinfo_tbl = (mod_prop_info_t *)kmem_alloc(arrsz, in sctp_stack_init()
1548 bcopy(sctp_propinfo_tbl, sctps->sctps_propinfo_tbl, arrsz); in sctp_stack_init()
1551 sctp_saddr_init(sctps); in sctp_stack_init()
1554 list_create(&sctps->sctps_g_list, sizeof (sctp_t), in sctp_stack_init()
1558 sctps->sctps_mibkp = sctp_kstat_init(stackid); in sctp_stack_init()
1559 sctps->sctps_kstat = sctp_kstat2_init(stackid); in sctp_stack_init()
1561 mutex_init(&sctps->sctps_reclaim_lock, NULL, MUTEX_DEFAULT, NULL); in sctp_stack_init()
1562 sctps->sctps_reclaim = B_FALSE; in sctp_stack_init()
1563 sctps->sctps_reclaim_tid = 0; in sctp_stack_init()
1564 sctps->sctps_reclaim_period = sctps->sctps_rto_maxg; in sctp_stack_init()
1568 sctps->sctps_sc_cnt = MAX(ncpus, boot_ncpus); in sctp_stack_init()
1570 sctps->sctps_sc = kmem_zalloc(max_ncpus * sizeof (sctp_stats_cpu_t *), in sctp_stack_init()
1572 for (i = 0; i < sctps->sctps_sc_cnt; i++) { in sctp_stack_init()
1573 sctps->sctps_sc[i] = kmem_zalloc(sizeof (sctp_stats_cpu_t), in sctp_stack_init()
1577 mutex_init(&sctps->sctps_listener_conf_lock, NULL, MUTEX_DEFAULT, NULL); in sctp_stack_init()
1578 list_create(&sctps->sctps_listener_conf, sizeof (sctp_listener_t), in sctp_stack_init()
1581 return (sctps); in sctp_stack_init()
1611 sctp_stack_t *sctps = (sctp_stack_t *)arg; in sctp_stack_fini() local
1618 mutex_enter(&sctps->sctps_reclaim_lock); in sctp_stack_fini()
1619 sctps->sctps_reclaim = B_FALSE; in sctp_stack_fini()
1620 mutex_exit(&sctps->sctps_reclaim_lock); in sctp_stack_fini()
1621 if (sctps->sctps_reclaim_tid != 0) in sctp_stack_fini()
1622 (void) untimeout(sctps->sctps_reclaim_tid); in sctp_stack_fini()
1623 mutex_destroy(&sctps->sctps_reclaim_lock); in sctp_stack_fini()
1625 sctp_listener_conf_cleanup(sctps); in sctp_stack_fini()
1627 kmem_free(sctps->sctps_propinfo_tbl, in sctp_stack_fini()
1629 sctps->sctps_propinfo_tbl = NULL; in sctp_stack_fini()
1632 sctp_rq_tq_fini(sctps); in sctp_stack_fini()
1635 sctp_saddr_fini(sctps); in sctp_stack_fini()
1638 list_destroy(&sctps->sctps_g_list); in sctp_stack_fini()
1641 sctp_hash_destroy(sctps); in sctp_stack_fini()
1644 for (i = 0; i < sctps->sctps_sc_cnt; i++) in sctp_stack_fini()
1645 kmem_free(sctps->sctps_sc[i], sizeof (sctp_stats_cpu_t)); in sctp_stack_fini()
1646 kmem_free(sctps->sctps_sc, max_ncpus * sizeof (sctp_stats_cpu_t *)); in sctp_stack_fini()
1648 sctp_kstat_fini(stackid, sctps->sctps_mibkp); in sctp_stack_fini()
1649 sctps->sctps_mibkp = NULL; in sctp_stack_fini()
1650 sctp_kstat2_fini(stackid, sctps->sctps_kstat); in sctp_stack_fini()
1651 sctps->sctps_kstat = NULL; in sctp_stack_fini()
1653 mutex_destroy(&sctps->sctps_g_lock); in sctp_stack_fini()
1654 mutex_destroy(&sctps->sctps_epriv_port_lock); in sctp_stack_fini()
1656 kmem_free(sctps, sizeof (*sctps)); in sctp_stack_fini()
1660 sctp_rq_tq_init(sctp_stack_t *sctps) in sctp_rq_tq_init() argument
1666 mutex_enter(&sctps->sctps_g_lock); in sctp_rq_tq_init()
1668 if (sctps->sctps_recvq_tq_list_cur_sz > 0) { in sctp_rq_tq_init()
1669 mutex_exit(&sctps->sctps_g_lock); in sctp_rq_tq_init()
1685 sctps->sctps_netstack->netstack_stackid); in sctp_rq_tq_init()
1687 sctps->sctps_recvq_tq_list_max_sz = sctp_recvq_tq_list_max; in sctp_rq_tq_init()
1688 sctps->sctps_recvq_tq_list_cur_sz = 1; in sctp_rq_tq_init()
1694 sctps->sctps_recvq_tq_list = in sctp_rq_tq_init()
1695 kmem_zalloc(sctps->sctps_recvq_tq_list_max_sz * sizeof (taskq_t *), in sctp_rq_tq_init()
1697 sctps->sctps_recvq_tq_list[0] = taskq_create(tq_name, thrs, in sctp_rq_tq_init()
1699 mutex_init(&sctps->sctps_rq_tq_lock, NULL, MUTEX_DEFAULT, NULL); in sctp_rq_tq_init()
1701 mutex_exit(&sctps->sctps_g_lock); in sctp_rq_tq_init()
1705 sctp_rq_tq_fini(sctp_stack_t *sctps) in sctp_rq_tq_fini() argument
1709 if (sctps->sctps_recvq_tq_list_cur_sz == 0) in sctp_rq_tq_fini()
1712 for (i = 0; i < sctps->sctps_recvq_tq_list_cur_sz; i++) { in sctp_rq_tq_fini()
1713 ASSERT(sctps->sctps_recvq_tq_list[i] != NULL); in sctp_rq_tq_fini()
1714 taskq_destroy(sctps->sctps_recvq_tq_list[i]); in sctp_rq_tq_fini()
1716 kmem_free(sctps->sctps_recvq_tq_list, in sctp_rq_tq_fini()
1717 sctps->sctps_recvq_tq_list_max_sz * sizeof (taskq_t *)); in sctp_rq_tq_fini()
1718 sctps->sctps_recvq_tq_list = NULL; in sctp_rq_tq_fini()
1723 sctp_inc_taskq(sctp_stack_t *sctps) in sctp_inc_taskq() argument
1738 mutex_enter(&sctps->sctps_rq_tq_lock); in sctp_inc_taskq()
1739 if (sctps->sctps_recvq_tq_list_cur_sz + 1 > in sctp_inc_taskq()
1740 sctps->sctps_recvq_tq_list_max_sz) { in sctp_inc_taskq()
1741 mutex_exit(&sctps->sctps_rq_tq_lock); in sctp_inc_taskq()
1747 sctps->sctps_netstack->netstack_stackid, in sctp_inc_taskq()
1748 sctps->sctps_recvq_tq_list_cur_sz); in sctp_inc_taskq()
1752 mutex_exit(&sctps->sctps_rq_tq_lock); in sctp_inc_taskq()
1756 ASSERT(sctps->sctps_recvq_tq_list[ in sctp_inc_taskq()
1757 sctps->sctps_recvq_tq_list_cur_sz] == NULL); in sctp_inc_taskq()
1758 sctps->sctps_recvq_tq_list[sctps->sctps_recvq_tq_list_cur_sz] = tq; in sctp_inc_taskq()
1759 atomic_inc_32(&sctps->sctps_recvq_tq_list_cur_sz); in sctp_inc_taskq()
1760 mutex_exit(&sctps->sctps_rq_tq_lock); in sctp_inc_taskq()
1778 sctp_stack_t *sctps = sctp->sctp_sctps; in sctp_find_next_tq() local
1786 next_tq = atomic_inc_32_nv(&sctps->sctps_recvq_tq_list_cur) % in sctp_find_next_tq()
1787 sctps->sctps_recvq_tq_list_cur_sz; in sctp_find_next_tq()
1788 for (try = 0; try < sctps->sctps_recvq_tq_list_cur_sz; try++) { in sctp_find_next_tq()
1789 tq = sctps->sctps_recvq_tq_list[next_tq]; in sctp_find_next_tq()
1795 next_tq = (next_tq + 1) % sctps->sctps_recvq_tq_list_cur_sz; in sctp_find_next_tq()
1804 sctp_inc_taskq(sctps); in sctp_find_next_tq()
1805 tq = sctps->sctps_recvq_tq_list[sctps->sctps_recvq_tq_list_cur_sz - 1]; in sctp_find_next_tq()
1811 SCTP_KSTAT(sctps, sctp_find_next_tq); in sctp_find_next_tq()