Lines Matching refs:ipsq
144 static int ip_sioctl_plink_ipmod(ipsq_t *ipsq, queue_t *q, mblk_t *mp,
815 ipsq_pending_mp_get(ipsq_t *ipsq, conn_t **connpp) in ipsq_pending_mp_get() argument
818 ipxop_t *ipx = ipsq->ipsq_xop; in ipsq_pending_mp_get()
940 ipsq_t *ipsq; in ipsq_xopq_mp_cleanup() local
960 ipsq = ill->ill_phyint->phyint_ipsq; in ipsq_xopq_mp_cleanup()
967 mutex_enter(&ipsq->ipsq_lock); in ipsq_xopq_mp_cleanup()
968 for (prev = NULL, curr = ipsq->ipsq_xopq_mphead; curr != NULL; in ipsq_xopq_mp_cleanup()
977 ASSERT(ipsq->ipsq_xopq_mphead == curr); in ipsq_xopq_mp_cleanup()
978 ipsq->ipsq_xopq_mphead = curr->b_next; in ipsq_xopq_mp_cleanup()
980 if (ipsq->ipsq_xopq_mptail == curr) in ipsq_xopq_mp_cleanup()
981 ipsq->ipsq_xopq_mptail = prev; in ipsq_xopq_mp_cleanup()
992 mutex_exit(&ipsq->ipsq_lock); in ipsq_xopq_mp_cleanup()
1025 ipsq_t *ipsq; in conn_ioctl_cleanup() local
1064 ipsq = ill->ill_phyint->phyint_ipsq; in conn_ioctl_cleanup()
1065 ipsq_exit(ipsq); in conn_ioctl_cleanup()
1126 ipif_all_down_tail(ipsq_t *ipsq, queue_t *q, mblk_t *mp, void *dummy_arg) in ipif_all_down_tail() argument
1128 ASSERT(IAM_WRITER_IPSQ(ipsq)); in ipif_all_down_tail()
1131 ipsq_current_finish(ipsq); in ipif_all_down_tail()
3310 ipsq_t *ipsq; in ipsq_init() local
3313 if ((ipsq = kmem_zalloc(sizeof (ipsq_t), KM_NOSLEEP)) == NULL) in ipsq_init()
3316 ill->ill_phyint->phyint_ipsq = ipsq; in ipsq_init()
3317 ipx = ipsq->ipsq_xop = &ipsq->ipsq_ownxop; in ipsq_init()
3318 ipx->ipx_ipsq = ipsq; in ipsq_init()
3319 ipsq->ipsq_next = ipsq; in ipsq_init()
3320 ipsq->ipsq_phyint = ill->ill_phyint; in ipsq_init()
3321 mutex_init(&ipsq->ipsq_lock, NULL, MUTEX_DEFAULT, 0); in ipsq_init()
3323 ipsq->ipsq_ipst = ill->ill_ipst; /* No netstack_hold */ in ipsq_init()
3689 ipsq_t *ipsq; in ill_lookup_on_name() local
3782 ipsq = ill->ill_phyint->phyint_ipsq; in ill_lookup_on_name()
3804 if (ipsq != ill->ill_phyint->phyint_ipsq) in ill_lookup_on_name()
3805 ipsq_delete(ipsq); in ill_lookup_on_name()
3834 ipsq = ill->ill_phyint->phyint_ipsq; in ill_lookup_on_name()
3835 if (ipsq != NULL) { in ill_lookup_on_name()
3836 ipsq->ipsq_phyint = NULL; in ill_lookup_on_name()
3837 ipsq_delete(ipsq); in ill_lookup_on_name()
4925 ipsq_t *ipsq; in ipif_ill_refrele_tail() local
4937 ipsq = ill->ill_phyint->phyint_ipsq; in ipif_ill_refrele_tail()
4938 mutex_enter(&ipsq->ipsq_lock); in ipif_ill_refrele_tail()
4939 ipx = ipsq->ipsq_xop; in ipif_ill_refrele_tail()
4974 (void *)ipsq, ipx->ipx_waitfor); in ipif_ill_refrele_tail()
4979 mp = ipsq_pending_mp_get(ipsq, &connp); in ipif_ill_refrele_tail()
4980 mutex_exit(&ipsq->ipsq_lock); in ipif_ill_refrele_tail()
5031 mutex_exit(&ipsq->ipsq_lock); in ipif_ill_refrele_tail()
6213 ipsq_enq(ipsq_t *ipsq, queue_t *q, mblk_t *mp, ipsq_func_t func, int type, in ipsq_enq() argument
6217 ipxop_t *ipx = ipsq->ipsq_xop; in ipsq_enq()
6219 ASSERT(MUTEX_HELD(&ipsq->ipsq_lock)); in ipsq_enq()
6240 if (ipsq->ipsq_xopq_mptail != NULL) { in ipsq_enq()
6241 ASSERT(ipsq->ipsq_xopq_mphead != NULL); in ipsq_enq()
6242 ipsq->ipsq_xopq_mptail->b_next = mp; in ipsq_enq()
6244 ASSERT(ipsq->ipsq_xopq_mphead == NULL); in ipsq_enq()
6245 ipsq->ipsq_xopq_mphead = mp; in ipsq_enq()
6247 ipsq->ipsq_xopq_mptail = mp; in ipsq_enq()
6252 ASSERT(ipsq->ipsq_swxop != NULL); in ipsq_enq()
6254 ASSERT(ipsq->ipsq_switch_mp == NULL); in ipsq_enq()
6255 ipsq->ipsq_switch_mp = mp; in ipsq_enq()
6295 ipsq_dq(ipsq_t *ipsq) in ipsq_dq() argument
6302 phyint_t *phyi = ipsq->ipsq_phyint; in ipsq_dq()
6303 ip_stack_t *ipst = ipsq->ipsq_ipst; in ipsq_dq()
6311 ipsq->ipsq_swxop != NULL ? RW_WRITER : RW_READER); in ipsq_dq()
6312 mutex_enter(&ipsq->ipsq_lock); in ipsq_dq()
6313 ipx = ipsq->ipsq_xop; in ipsq_dq()
6324 mp->b_next = (void *)ipsq; in ipsq_dq()
6331 if (ipsq->ipsq_swxop != NULL) { in ipsq_dq()
6345 DTRACE_PROBE1(ipsq__switch, (ipsq_t *), ipsq); in ipsq_dq()
6347 if (ipsq->ipsq_swxop == &ipsq->ipsq_ownxop) { in ipsq_dq()
6356 ASSERT(ipsq->ipsq_xop != &ipsq->ipsq_ownxop); in ipsq_dq()
6359 while (xopipsq->ipsq_next != ipsq) in ipsq_dq()
6362 xopipsq->ipsq_next = ipsq->ipsq_next; in ipsq_dq()
6363 ipsq->ipsq_next = ipsq; in ipsq_dq()
6364 ipsq->ipsq_xop = ipsq->ipsq_swxop; in ipsq_dq()
6365 ipsq->ipsq_swxop = NULL; in ipsq_dq()
6381 ipx = ipsq->ipsq_xop; in ipsq_dq()
6399 ASSERT(ipsq->ipsq_xop == &ipsq->ipsq_ownxop); in ipsq_dq()
6401 xopipsq = ipsq->ipsq_swxop->ipx_ipsq; in ipsq_dq()
6402 while (xopipsq->ipsq_next != ipsq->ipsq_swxop->ipx_ipsq) in ipsq_dq()
6405 xopipsq->ipsq_next = ipsq; in ipsq_dq()
6406 ipsq->ipsq_next = ipsq->ipsq_swxop->ipx_ipsq; in ipsq_dq()
6407 ipsq->ipsq_xop = ipsq->ipsq_swxop; in ipsq_dq()
6408 ipsq->ipsq_swxop = NULL; in ipsq_dq()
6427 ipx = ipsq->ipsq_xop; in ipsq_dq()
6452 xopipsq = ipsq; in ipsq_dq()
6473 } while ((xopipsq = xopipsq->ipsq_next) != ipsq); in ipsq_dq()
6489 mutex_exit(&ipsq->ipsq_lock); in ipsq_dq()
6496 xopipsq = ipsq; in ipsq_dq()
6510 } while ((xopipsq = xopipsq->ipsq_next) != ipsq); in ipsq_dq()
6528 ipsq_dlpi_done(ipsq_t *ipsq) in ipsq_dlpi_done() argument
6534 ASSERT(RW_LOCK_HELD(&ipsq->ipsq_ipst->ips_ill_g_lock)); in ipsq_dlpi_done()
6535 ipsq_start = ipsq; in ipsq_dlpi_done()
6544 ASSERT(ipsq->ipsq_xop->ipx_writer == NULL); in ipsq_dlpi_done()
6545 phyi = ipsq->ipsq_phyint; in ipsq_dlpi_done()
6564 } while ((ipsq = ipsq->ipsq_next) != ipsq_start); in ipsq_dlpi_done()
6584 ipsq_t *ipsq; in ipsq_enter() local
6606 ipsq = ill->ill_phyint->phyint_ipsq; in ipsq_enter()
6607 mutex_enter(&ipsq->ipsq_lock); in ipsq_enter()
6608 ipx = ipsq->ipsq_xop; in ipsq_enter()
6612 (ipx->ipx_current_ipif == NULL && ipsq_dlpi_done(ipsq)) || in ipsq_enter()
6620 mutex_exit(&ipsq->ipsq_lock); in ipsq_enter()
6624 mutex_exit(&ipsq->ipsq_lock); in ipsq_enter()
6641 mutex_exit(&ipsq->ipsq_lock); in ipsq_enter()
6659 ipsq_t *ipsq; in ipsq_try_enter_internal() local
6672 ipsq = ill->ill_phyint->phyint_ipsq; in ipsq_try_enter_internal()
6673 mutex_enter(&ipsq->ipsq_lock); in ipsq_try_enter_internal()
6674 ipx = ipsq->ipsq_xop; in ipsq_try_enter_internal()
6692 ipsq_dlpi_done(ipsq))))) { in ipsq_try_enter_internal()
6698 mutex_exit(&ipsq->ipsq_lock); in ipsq_try_enter_internal()
6704 return (ipsq); in ipsq_try_enter_internal()
6708 ipsq_enq(ipsq, q, mp, func, type, ill); in ipsq_try_enter_internal()
6711 mutex_exit(&ipsq->ipsq_lock); in ipsq_try_enter_internal()
6759 ipsq_t *ipsq; in ipsq_try_enter() local
6769 ipsq = ipsq_try_enter_internal(ill, q, mp, func, type, reentry_ok); in ipsq_try_enter()
6772 return (ipsq); in ipsq_try_enter()
6784 ipsq_t *ipsq; in qwriter_ip() local
6786 ipsq = ipsq_try_enter(NULL, ill, q, mp, func, type, reentry_ok); in qwriter_ip()
6796 if (ipsq != NULL) { in qwriter_ip()
6797 (*func)(ipsq, q, mp, NULL); in qwriter_ip()
6798 ipsq_exit(ipsq); in qwriter_ip()
6807 ipsq_exit(ipsq_t *ipsq) in ipsq_exit() argument
6815 ASSERT(IAM_WRITER_IPSQ(ipsq)); in ipsq_exit()
6817 ASSERT(ipsq->ipsq_xop->ipx_reentry_cnt >= 1); in ipsq_exit()
6818 if (ipsq->ipsq_xop->ipx_reentry_cnt != 1) { in ipsq_exit()
6819 ipsq->ipsq_xop->ipx_reentry_cnt--; in ipsq_exit()
6824 phyi = ipsq->ipsq_phyint; in ipsq_exit()
6825 mp = ipsq_dq(ipsq); in ipsq_exit()
6833 if (mp_ipsq != ipsq && phyi == NULL) { in ipsq_exit()
6834 ASSERT(ipsq->ipsq_next == ipsq); in ipsq_exit()
6835 ASSERT(ipsq->ipsq_xop == &ipsq->ipsq_ownxop); in ipsq_exit()
6836 ipsq_delete(ipsq); in ipsq_exit()
6844 ipsq = mp_ipsq; in ipsq_exit()
6854 (*func)(ipsq, q, mp, NULL); in ipsq_exit()
6895 ipsq_current_start(ipsq_t *ipsq, ipif_t *ipif, int ioccmd) in ipsq_current_start() argument
6898 ipxop_t *ipx = ipsq->ipsq_xop; in ipsq_current_start()
6900 ASSERT(IAM_WRITER_IPSQ(ipsq)); in ipsq_current_start()
6953 ipsq_current_finish(ipsq_t *ipsq) in ipsq_current_finish() argument
6955 ipxop_t *ipx = ipsq->ipsq_xop; in ipsq_current_finish()
6959 ASSERT(IAM_WRITER_IPSQ(ipsq)); in ipsq_current_finish()
8586 ip_sioctl_plink(ipsq_t *ipsq, queue_t *q, mblk_t *mp, void *dummy_arg) in ip_sioctl_plink() argument
8599 err = ip_sioctl_plink_ipmod(ipsq, q, mp, ioccmd, li); in ip_sioctl_plink()
8622 ip_sioctl_plink_ipmod(ipsq_t *ipsq, queue_t *q, mblk_t *mp, int ioccmd, in ip_sioctl_plink_ipmod() argument
8671 if (ipsq == NULL) { in ip_sioctl_plink_ipmod()
8672 ipsq = ipsq_try_enter(NULL, ill, q, mp, ip_sioctl_plink, in ip_sioctl_plink_ipmod()
8674 if (ipsq == NULL) { in ip_sioctl_plink_ipmod()
8691 ipsq_exit(ipsq); in ip_sioctl_plink_ipmod()
8727 ipsq_current_start(ipsq, ill->ill_ipif, ioccmd); in ip_sioctl_plink_ipmod()
8740 ipsq_current_finish(ipsq); in ip_sioctl_plink_ipmod()
8743 ipsq_exit(ipsq); in ip_sioctl_plink_ipmod()
9300 ipsq_t *ipsq; in ip_sioctl_addif() local
9383 ipsq = ipsq_try_enter(NULL, ill, q, mp, ip_process_ioctl, NEW_OP, in ip_sioctl_addif()
9392 if (ipsq == NULL) in ip_sioctl_addif()
9432 ipsq_exit(ipsq); in ip_sioctl_addif()
9512 ipsq_t *ipsq; in ip_sioctl_removeif() local
9544 ipsq = ipif->ipif_ill->ill_phyint->phyint_ipsq; in ip_sioctl_removeif()
9545 ipsq->ipsq_xop->ipx_current_ipif = ipif; in ip_sioctl_removeif()
11830 ipsq_t *ipsq = sipif->ipif_ill->ill_phyint->phyint_ipsq; in ipif_transfer() local
11831 ipxop_t *ipx = ipsq->ipsq_xop; in ipif_transfer()
12353 ipsq_delete(ipsq_t *ipsq) in ipsq_delete() argument
12355 ipxop_t *ipx = ipsq->ipsq_xop; in ipsq_delete()
12357 ipsq->ipsq_ipst = NULL; in ipsq_delete()
12358 ASSERT(ipsq->ipsq_phyint == NULL); in ipsq_delete()
12359 ASSERT(ipsq->ipsq_xop != NULL); in ipsq_delete()
12360 ASSERT(ipsq->ipsq_xopq_mphead == NULL && ipx->ipx_mphead == NULL); in ipsq_delete()
12362 kmem_free(ipsq, sizeof (ipsq_t)); in ipsq_delete()
12469 ip_join_illgrps(ipsq_t *ipsq, queue_t *q, mblk_t *mp, void *dummy) in ip_join_illgrps() argument
12478 ASSERT(IAM_WRITER_IPSQ(ipsq)); in ip_join_illgrps()
12799 ill_dlpi_send_writer(ipsq_t *ipsq, queue_t *q, mblk_t *mp, void *arg) in ill_dlpi_send_writer() argument
12964 ipsq_t *ipsq = ill->ill_phyint->phyint_ipsq; in ill_dlpi_done() local
12965 ipxop_t *ipx = ipsq->ipsq_xop; in ill_dlpi_done()
12967 ASSERT(IAM_WRITER_IPSQ(ipsq)); in ill_dlpi_done()
13809 ipsq_t *ipsq; in ipif_lookup_on_name_async() local
13910 ipsq = ill->ill_phyint->phyint_ipsq; in ipif_lookup_on_name_async()
13911 mutex_enter(&ipsq->ipsq_lock); in ipif_lookup_on_name_async()
13912 mutex_enter(&ipsq->ipsq_xop->ipx_lock); in ipif_lookup_on_name_async()
13914 ipsq_enq(ipsq, q, mp, func, NEW_OP, ill); in ipif_lookup_on_name_async()
13915 mutex_exit(&ipsq->ipsq_xop->ipx_lock); in ipif_lookup_on_name_async()
13916 mutex_exit(&ipsq->ipsq_lock); in ipif_lookup_on_name_async()
14476 ipsq_t *ipsq = ill->ill_phyint->phyint_ipsq; in ipif_up() local
14526 mp = ipsq_pending_mp_get(ipsq, &connp); in ipif_up()
16384 ipsq_t *ipsq = NULL; in ip_sioctl_slifusesrc() local
16412 ipsq = ipsq_try_enter(NULL, usesrc_ill, q, mp, ip_process_ioctl, in ip_sioctl_slifusesrc()
16414 if (ipsq == NULL) { in ip_sioctl_slifusesrc()
16502 if (ipsq != NULL) in ip_sioctl_slifusesrc()
16503 ipsq_exit(ipsq); in ip_sioctl_slifusesrc()
16886 ipsq_t *ipsq; in ipif_set_values() local
17091 ipsq = ipsq_try_enter_internal(ill, q, mp, ip_reprocess_ioctl, NEW_OP, in ipif_set_values()
17096 if (ipsq == NULL) in ipif_set_values()
17102 if (ipsq->ipsq_xop->ipx_current_ipif == NULL) in ipif_set_values()
17103 ipsq_current_start(ipsq, ipif, SIOCSLIFNAME); in ipif_set_values()
17105 ASSERT(ipsq->ipsq_xop->ipx_current_ipif == ipif); in ipif_set_values()
17108 ipsq_exit(ipsq); in ipif_set_values()
17793 ipsq_t *ipsq = ill->ill_phyint->phyint_ipsq; in ill_set_phys_addr() local
17796 ASSERT(IAM_WRITER_IPSQ(ipsq)); in ill_set_phys_addr()
17816 ipsq_current_start(ipsq, ill->ill_ipif, 0); in ill_set_phys_addr()
17844 ill_set_phys_addr_tail(ipsq, ill->ill_rq, mp, NULL); in ill_set_phys_addr()
17859 ipsq_t *ipsq = ill->ill_phyint->phyint_ipsq; in ill_set_allowed_ips() local
17864 ASSERT(IAM_WRITER_IPSQ(ipsq)); in ill_set_allowed_ips()
17904 ill_set_phys_addr_tail(ipsq_t *ipsq, queue_t *q, mblk_t *addrmp, void *dummy) in ill_set_phys_addr_tail() argument
17912 ASSERT(IAM_WRITER_IPSQ(ipsq)); in ill_set_phys_addr_tail()
17967 ipsq_current_finish(ipsq); in ill_set_phys_addr_tail()
17988 ipsq_t *ipsq = ill->ill_phyint->phyint_ipsq; in ill_replumb() local
17990 ASSERT(IAM_WRITER_IPSQ(ipsq)); in ill_replumb()
17992 ipsq_current_start(ipsq, ill->ill_ipif, 0); in ill_replumb()
18010 ill_replumb_tail(ipsq, ill->ill_rq, mp, NULL); in ill_replumb()
18016 ill_replumb_tail(ipsq_t *ipsq, queue_t *q, mblk_t *mp, void *dummy) in ill_replumb_tail() argument
18022 ASSERT(IAM_WRITER_IPSQ(ipsq)); in ill_replumb_tail()
18028 ipsq_current_finish(ipsq); in ill_replumb_tail()
18039 ipsq_current_finish(ipsq); in ill_replumb_tail()
18068 ill->ill_replumb_mp = ipsq_pending_mp_get(ipsq, &connp); in ill_replumb_tail()
18074 ipsq_current_finish(ipsq); in ill_replumb_tail()
18553 ipsq_t *ipsq; in arp_bringup_done() local
18560 ipsq = ill->ill_phyint->phyint_ipsq; in arp_bringup_done()
18561 ipif = ipsq->ipsq_xop->ipx_pending_ipif; in arp_bringup_done()
18562 mp1 = ipsq_pending_mp_get(ipsq, &connp); in arp_bringup_done()
18573 if (ipsq->ipsq_xop->ipx_current_ioctl != 0) { in arp_bringup_done()
18627 if (ipsq->ipsq_xop->ipx_current_ioctl != 0) { in arp_bringup_done()
18629 int, ipsq->ipsq_xop->ipx_current_ioctl, in arp_bringup_done()
18631 ip_ioctl_finish(q, mp1, err, NO_COPYOUT, ipsq); in arp_bringup_done()
18633 ipsq_current_finish(ipsq); in arp_bringup_done()
18647 ipsq_t *ipsq; in arp_replumb_done() local
18652 ipsq = ill->ill_phyint->phyint_ipsq; in arp_replumb_done()
18653 ipif = ipsq->ipsq_xop->ipx_pending_ipif; in arp_replumb_done()
18654 mp1 = ipsq_pending_mp_get(ipsq, &connp); in arp_replumb_done()
18658 ipsq->ipsq_xop->ipx_current_ioctl)); in arp_replumb_done()
18668 if (ipsq->ipsq_xop->ipx_current_ioctl != 0) { in arp_replumb_done()
18686 if (ipsq->ipsq_xop->ipx_current_ioctl != 0) { in arp_replumb_done()
18689 int, ipsq->ipsq_xop->ipx_current_ioctl, in arp_replumb_done()
18691 ip_ioctl_finish(q, mp1, err, NO_COPYOUT, ipsq); in arp_replumb_done()
18693 ipsq_current_finish(ipsq); in arp_replumb_done()