Lines Matching refs:mdp
107 #define D_SETSTATE(mdp, state) \ argument
109 (void *)mdp, __LINE__, dss[mdp->md_dlpistate], \
111 mdp->md_dlpistate = (state);
243 #define D_SETSTATE(mdp, state) mdp->md_dlpistate = (state); argument
1488 man_dest_t *mdp; in man_dodetach() local
1492 mdp = msp->ms_dests; in man_dodetach()
1502 mdp[i].md_state |= MAN_DSTATE_CLOSING; in man_dodetach()
1503 mdp[i].md_msp = NULL; in man_dodetach()
1504 mdp[i].md_rq = NULL; in man_dodetach()
1506 if (mdp[i].md_lc_timer_id != 0) { in man_dodetach()
1507 (void) quntimeout(man_ctl_wq, mdp[i].md_lc_timer_id); in man_dodetach()
1508 mdp[i].md_lc_timer_id = 0; in man_dodetach()
1510 if (mdp[i].md_bc_id != 0) { in man_dodetach()
1511 qunbufcall(man_ctl_wq, mdp[i].md_bc_id); in man_dodetach()
1512 mdp[i].md_bc_id = 0; in man_dodetach()
1515 mutex_enter(&mdp[i].md_lock); in man_dodetach()
1516 while ((mp = mdp[i].md_dmp_head) != NULL) { in man_dodetach()
1517 mdp[i].md_dmp_head = mp->b_next; in man_dodetach()
1521 mdp[i].md_dmp_count = 0; in man_dodetach()
1522 mdp[i].md_dmp_tail = NULL; in man_dodetach()
1523 mutex_exit(&mdp[i].md_lock); in man_dodetach()
1541 ASSERT(mdp != NULL); in man_dodetach()
1542 wp->mw_arg.a_mdp = mdp; in man_dodetach()
1692 register man_dest_t *mdp = NULL; /* destination */ in man_start() local
1711 mdp = msp->ms_destp; in man_start()
1716 if (mdp == NULL) { in man_start()
1723 mdp = &msp->ms_dests[i]; in man_start()
1725 if ((mdp->md_state == MAN_DSTATE_READY) && in man_start()
1726 (ether_cmp(eap, &mdp->md_dst_eaddr) == 0)) in man_start()
1728 mdp = NULL; in man_start()
1737 if (mdp != NULL) { in man_start()
1741 status = man_start_lower(mdp, mp, flow_wq, MAN_UPPER); in man_start()
1752 if (mdp == NULL) { in man_start()
1754 mdp = &msp->ms_dests[i]; in man_start()
1756 if (mdp->md_state != MAN_DSTATE_READY) in man_start()
1760 (void) man_start_lower(mdp, tmp, in man_start()
1769 if (mdp->md_state == MAN_DSTATE_READY) in man_start()
1770 status = man_start_lower(mdp, mp, wq, in man_start()
1788 man_start_lower(man_dest_t *mdp, mblk_t *mp, queue_t *flow_wq, int caller) in man_start_lower() argument
1790 queue_t *wq = mdp->md_wq; in man_start_lower()
1796 if (mdp->md_state == MAN_DSTATE_READY && in man_start_lower()
1797 mdp->md_dlpistate == DL_IDLE) { in man_start_lower()
1799 ASSERT(mdp->md_wq != NULL); in man_start_lower()
1806 if (mdp->md_dmp_head == NULL && in man_start_lower()
1812 mutex_enter(&mdp->md_lock); in man_start_lower()
1813 if (mdp->md_dmp_head != NULL) { in man_start_lower()
1817 if (mdp->md_dmp_count >= MAN_HIWAT) { in man_start_lower()
1824 mdp->md_dmp_tail->b_next = mp; in man_start_lower()
1825 mdp->md_dmp_tail = mp; in man_start_lower()
1826 mdp->md_dmp_count += in man_start_lower()
1829 mutex_exit(&mdp->md_lock); in man_start_lower()
1838 mutex_exit(&mdp->md_lock); in man_start_lower()
1888 if (mdp->md_state == MAN_DSTATE_NOTPRESENT) { in man_start_lower()
1892 (void *)mdp, caller); in man_start_lower()
1898 if (mdp->md_state & MAN_DSTATE_CLOSING) { in man_start_lower()
1900 (void *)mdp)); in man_start_lower()
1906 if ((mdp->md_state & MAN_DSTATE_PLUMBING) || in man_start_lower()
1907 (mdp->md_state == MAN_DSTATE_INITIALIZING) || in man_start_lower()
1908 (mdp->md_dlpistate != DL_IDLE)) { in man_start_lower()
1917 mutex_enter(&mdp->md_lock); in man_start_lower()
1918 if (mdp->md_dmp_count >= MAN_HIWAT) { in man_start_lower()
1921 if (mdp->md_dmp_head == NULL) { in man_start_lower()
1922 ASSERT(mdp->md_dmp_tail == NULL); in man_start_lower()
1923 mdp->md_dmp_head = mp; in man_start_lower()
1924 mdp->md_dmp_tail = mp; in man_start_lower()
1926 mdp->md_dmp_tail->b_next = mp; in man_start_lower()
1927 mdp->md_dmp_tail = mp; in man_start_lower()
1929 mdp->md_dmp_count += msgsize(mp); in man_start_lower()
1931 mutex_exit(&mdp->md_lock); in man_start_lower()
2733 man_dest_t *mdp; in man_init_dests() local
2737 mdp = man_kzalloc(MAN_DEST_ARRAY_SIZE, KM_NOSLEEP); in man_init_dests()
2738 if (mdp == NULL) in man_init_dests()
2741 msp->ms_dests = mdp; in man_init_dests()
2746 mdp[i].md_muxid = -1; /* muxid 0 is valid */ in man_init_dests()
2747 mutex_init(&mdp->md_lock, NULL, MUTEX_DRIVER, NULL); in man_init_dests()
2752 man_start_dest(&mdp[i], msp, mpg); in man_init_dests()
2763 man_start_dest(man_dest_t *mdp, manstr_t *msp, man_pg_t *mpg) in man_start_dest() argument
2767 mdp->md_muxid = -1; in man_start_dest()
2768 mdp->md_dlpistate = DL_UNATTACHED; in man_start_dest()
2769 mdp->md_msp = msp; in man_start_dest()
2770 mdp->md_rq = msp->ms_rq; in man_start_dest()
2771 mdp->md_pg_id = mpg->mpg_pg_id; in man_start_dest()
2775 ether_copy(&msp->ms_manp->man_eaddr, &mdp->md_src_eaddr); in man_start_dest()
2776 ether_copy(&mpg->mpg_dst_eaddr, &mdp->md_dst_eaddr); in man_start_dest()
2780 mdp->md_device = ap->mp_device; in man_start_dest()
2786 mdp->md_linkstate = MAN_LINKFAIL; in man_start_dest()
2787 mdp->md_state = MAN_DSTATE_INITIALIZING; in man_start_dest()
2788 mdp->md_lc_timer_id = qtimeout(man_ctl_wq, man_linkcheck_timer, in man_start_dest()
2789 (void *)mdp, man_gettimer(MAN_TIMER_INIT, mdp)); in man_start_dest()
2798 MAN_DBGCALL(MAN_DEST, man_print_mdp(mdp)); in man_start_dest()
2806 man_dest_t *mdp = NULL; in man_set_optimized_dest() local
2811 mdp = &msp->ms_dests[i]; in man_set_optimized_dest()
2816 msp->ms_destp = mdp; in man_set_optimized_dest()
2908 man_dest_t *mdp; in man_dlpi_senddown() local
2919 mdp = &msp->ms_dests[i]; in man_dlpi_senddown()
2920 if (mdp->md_state == MAN_DSTATE_READY) { in man_dlpi_senddown()
2948 mdp = &msp->ms_dests[i]; in man_dlpi_senddown()
2950 ASSERT(mdp->md_wq != NULL); in man_dlpi_senddown()
2954 man_dlpi_replay(mdp, rmp[i]); in man_dlpi_senddown()
2977 man_dlpi_replay(man_dest_t *mdp, mblk_t *rmp) in man_dlpi_replay() argument
2982 MAN_DBG(MAN_DLPI, ("man_dlpi_replay: mdp(0x%p)", (void *)mdp)); in man_dlpi_replay()
2992 (void *)mdp, in man_dlpi_replay()
3001 dlp->attach_req.dl_ppa = mdp->md_device.mdev_ppa; in man_dlpi_replay()
3004 (void) putnext(mdp->md_wq, mp); in man_dlpi_replay()
3637 man_dest_t *mdp; in man_lwsrv() local
3640 mdp = (man_dest_t *)wq->q_ptr; in man_lwsrv()
3643 " md_rq(0x%p)\n", (void *)wq, (void *)mdp, in man_lwsrv()
3644 mdp ? (void *)mdp->md_rq : NULL)); in man_lwsrv()
3646 if (mdp == NULL) in man_lwsrv()
3649 if (mdp->md_state & MAN_DSTATE_CLOSING) { in man_lwsrv()
3661 mutex_enter(&mdp->md_lock); in man_lwsrv()
3662 mlistp = mdp->md_dmp_head; in man_lwsrv()
3663 mdp->md_dmp_head = NULL; in man_lwsrv()
3664 count = mdp->md_dmp_count; in man_lwsrv()
3665 mdp->md_dmp_count = 0; in man_lwsrv()
3666 mutex_exit(&mdp->md_lock); in man_lwsrv()
3673 if (man_start_lower(mdp, mp, NULL, MAN_LOWER)) { in man_lwsrv()
3675 mutex_enter(&mdp->md_lock); in man_lwsrv()
3676 mdp->md_dmp_count += count + msgsize(mp); in man_lwsrv()
3678 mdp->md_dmp_head = mp; in man_lwsrv()
3679 mutex_exit(&mdp->md_lock); in man_lwsrv()
3683 mdp->md_dmp_tail = NULL; in man_lwsrv()
3686 if (man_start_lower(mdp, mp, NULL, MAN_LOWER)) { in man_lwsrv()
3715 man_dest_t *mdp; in man_lrput() local
3724 mdp = (man_dest_t *)rq->q_ptr; in man_lrput()
3738 (void *)mp, (void *)mdp, DB_TYPE(mp), prim_str)); in man_lrput()
3739 MAN_DBGCALL(MAN_LRPUT2, man_print_mdp(mdp)); in man_lrput()
3752 if (mdp == NULL || mdp->md_state != MAN_DSTATE_READY) { in man_lrput()
3755 " state(%d)", (void *)mdp, mdp ? mdp->md_state : -1)); in man_lrput()
3764 if (mdp->md_dlpistate == DL_IDLE && canputnext(mdp->md_rq)) { in man_lrput()
3766 msp = mdp->md_msp; in man_lrput()
3768 mdp->md_rcvcnt++; /* Count for failover */ in man_lrput()
3773 (void *)mdp->md_rq)); in man_lrput()
3774 (void) putnext(mdp->md_rq, mp); in man_lrput()
3796 man_dest_t *mdp; in man_lrsrv() local
3810 mdp = (man_dest_t *)rq->q_ptr; in man_lrsrv()
3812 if ((mdp == NULL) || (mdp->md_state & MAN_DSTATE_CLOSING)) { in man_lrsrv()
3824 if (MAN_IS_DATA(mp) || mdp->md_state != MAN_DSTATE_READY) { in man_lrsrv()
3827 " is_data(%d)", (void *)mdp, MAN_IS_DATA(mp))); in man_lrsrv()
3900 if (man_dlioc_replay(mdp)) { in man_lrsrv()
3901 D_SETSTATE(mdp, DL_UNBOUND); in man_lrsrv()
3909 D_SETSTATE(mdp, DL_UNATTACHED); in man_lrsrv()
3916 D_SETSTATE(mdp, DL_UNBOUND); in man_lrsrv()
3918 ASSERT(mdp->md_bc_id == 0); in man_lrsrv()
3919 if (mdp->md_lc_timer_id != 0) { in man_lrsrv()
3921 mdp->md_lc_timer_id); in man_lrsrv()
3922 mdp->md_lc_timer_id = 0; in man_lrsrv()
3934 D_SETSTATE(mdp, DL_IDLE); in man_lrsrv()
3935 qenable(mdp->md_wq); in man_lrsrv()
3936 mdp->md_linkstate = MAN_LINKGOOD; in man_lrsrv()
3937 if (man_needs_linkcheck(mdp)) { in man_lrsrv()
3938 mdp->md_lc_timer_id = qtimeout(man_ctl_wq, in man_lrsrv()
3939 man_linkcheck_timer, (void *)mdp, in man_lrsrv()
3940 man_gettimer(MAN_TIMER_LINKCHECK, mdp)); in man_lrsrv()
4004 mdp->md_dlpierrors++; in man_lrsrv()
4005 D_SETSTATE(mdp, DL_UNATTACHED); in man_lrsrv()
4006 if (mdp->md_lc_timer_id != 0) { in man_lrsrv()
4007 (void) quntimeout(man_ctl_wq, mdp->md_lc_timer_id); in man_lrsrv()
4008 mdp->md_lc_timer_id = 0; in man_lrsrv()
4012 ASSERT(mdp->md_msp != NULL); in man_lrsrv()
4013 ASSERT(mdp->md_msp->ms_manp != NULL); in man_lrsrv()
4014 mpg = man_find_pg_by_id(mdp->md_msp->ms_manp->man_pg, in man_lrsrv()
4015 mdp->md_pg_id); in man_lrsrv()
4018 mdp->md_device.mdev_ppa); in man_lrsrv()
4021 if ((mdp->md_dlpierrors >= MAN_MAX_DLPIERRORS) && in man_lrsrv()
4023 mdp->md_msp->ms_manp->man_meta_ppa == 1)) { in man_lrsrv()
4029 (void) man_do_autoswitch((man_dest_t *)mdp); in man_lrsrv()
4031 " switching path", mdp->md_device.mdev_major, in man_lrsrv()
4032 mdp->md_device.mdev_ppa)); in man_lrsrv()
4034 mdp->md_lc_timer_id = qtimeout(man_ctl_wq, in man_lrsrv()
4035 man_reset_dlpi, (void *)mdp, in man_lrsrv()
4036 man_gettimer(MAN_TIMER_DLPIRESET, mdp)); in man_lrsrv()
4051 man_needs_linkcheck(man_dest_t *mdp) in man_needs_linkcheck() argument
4056 if (mdp->md_msp == NULL || mdp->md_msp->ms_manp == NULL) in man_needs_linkcheck()
4063 if ((man_is_on_domain || mdp->md_msp->ms_manp->man_meta_ppa == 1) && in man_needs_linkcheck()
4064 (mdp->md_msp->ms_sap == ETHERTYPE_IP || in man_needs_linkcheck()
4065 mdp->md_msp->ms_sap == ETHERTYPE_IPV6)) in man_needs_linkcheck()
4436 man_dest_t *mdp; in man_iswitch() local
4458 mdp = man_switch_match(tdp, adp->a_pg_id, tdp->md_switch_id); in man_iswitch()
4460 if (mdp == NULL) in man_iswitch()
4468 man_ifail_dest(mdp); in man_iswitch()
4476 bcopy((char *)mdp, (char *)&tmp, sizeof (man_dest_t)); in man_iswitch()
4478 ASSERT(mdp->md_state & MAN_DSTATE_PLUMBING); in man_iswitch()
4479 ASSERT(mdp->md_state == tdp->md_state); in man_iswitch()
4481 mdp->md_state = tdp->md_state; in man_iswitch()
4486 mdp->md_wq = tdp->md_wq; in man_iswitch()
4487 RD(mdp->md_wq)->q_ptr = (void *)(mdp); in man_iswitch()
4488 WR(mdp->md_wq)->q_ptr = (void *)(mdp); in man_iswitch()
4490 mdp->md_state &= ~MAN_DSTATE_INITIALIZING; in man_iswitch()
4491 mdp->md_state |= MAN_DSTATE_READY; in man_iswitch()
4493 ASSERT(mdp->md_device.mdev_major == adp->a_sf_dev.mdev_major); in man_iswitch()
4498 mdp->md_device = tdp->md_device; in man_iswitch()
4499 mdp->md_muxid = tdp->md_muxid; in man_iswitch()
4500 mdp->md_linkstate = MAN_LINKUNKNOWN; in man_iswitch()
4501 (void) drv_getparm(TIME, &mdp->md_lastswitch); in man_iswitch()
4502 mdp->md_state &= ~MAN_DSTATE_PLUMBING; in man_iswitch()
4503 mdp->md_switch_id = 0; in man_iswitch()
4504 mdp->md_switches++; in man_iswitch()
4505 mdp->md_dlpierrors = 0; in man_iswitch()
4506 D_SETSTATE(mdp, DL_UNATTACHED); in man_iswitch()
4512 man_reset_dlpi((void *)mdp); in man_iswitch()
4600 man_dest_t *mdp = NULL; in man_switch_match() local
4613 mdp = &msp->ms_dests[pg_id]; in man_switch_match()
4619 if (mdp->md_switch_id != sid) { in man_switch_match()
4620 mdp = NULL; in man_switch_match()
4625 return (mdp); in man_switch_match()
4633 man_ifail_dest(man_dest_t *mdp) in man_ifail_dest() argument
4635 ASSERT(mdp->md_lc_timer_id == 0); in man_ifail_dest()
4636 ASSERT(mdp->md_bc_id == 0); in man_ifail_dest()
4637 ASSERT(mdp->md_state & MAN_DSTATE_PLUMBING); in man_ifail_dest()
4640 MAN_DBGCALL(MAN_SWITCH, man_print_mdp(mdp)); in man_ifail_dest()
4642 mdp->md_state &= ~MAN_DSTATE_PLUMBING; in man_ifail_dest()
4643 mdp->md_linkstate = MAN_LINKFAIL; in man_ifail_dest()
4649 if ((mdp->md_state & MAN_DSTATE_INITIALIZING) || in man_ifail_dest()
4650 ((mdp->md_msp->ms_sap == ETHERTYPE_IPV6 || in man_ifail_dest()
4651 mdp->md_msp->ms_sap == ETHERTYPE_IP) && in man_ifail_dest()
4652 mdp->md_msp->ms_dlpistate == DL_IDLE)) { in man_ifail_dest()
4654 mdp->md_lc_timer_id = qtimeout(man_ctl_wq, man_linkcheck_timer, in man_ifail_dest()
4655 (void *)mdp, man_gettimer(MAN_TIMER_LINKCHECK, mdp)); in man_ifail_dest()
4670 man_dest_t *mdp = (man_dest_t *)argp; in man_reset_dlpi() local
4676 mdp->md_lc_timer_id = 0; in man_reset_dlpi()
4678 if (mdp->md_state != MAN_DSTATE_READY) { in man_reset_dlpi()
4683 msp = mdp->md_msp; in man_reset_dlpi()
4703 man_dlpi_replay(mdp, rmp); in man_reset_dlpi()
4716 ASSERT(mdp->md_lc_timer_id == 0); in man_reset_dlpi()
4717 ASSERT(mdp->md_bc_id == 0); in man_reset_dlpi()
4724 mdp->md_lc_timer_id = qtimeout(man_ctl_wq, man_reset_dlpi, in man_reset_dlpi()
4725 (void *)mdp, man_gettimer(MAN_TIMER_LINKCHECK, mdp)); in man_reset_dlpi()
4736 man_dlioc_replay(man_dest_t *mdp) in man_dlioc_replay() argument
4741 if (mdp->md_msp->ms_dlioc_mp == NULL) in man_dlioc_replay()
4744 rmp = man_dup_mplist(mdp->md_msp->ms_dlioc_mp); in man_dlioc_replay()
4750 man_dlpi_replay(mdp, rmp); in man_dlioc_replay()
4875 man_dest_t *mdp; in man_add_dests() local
4882 mdp = &msp->ms_dests[mpg->mpg_pg_id]; in man_add_dests()
4889 if (mdp->md_device.mdev_state != MDEV_UNASSIGNED) { in man_add_dests()
4891 MAN_DBGCALL(MAN_PATH, man_print_mdp(mdp)); in man_add_dests()
4894 man_start_dest(mdp, msp, mpg); in man_add_dests()
4905 man_dest_t *mdp; in man_remove_dests() local
4942 mdp = &msp->ms_dests[mpg->mpg_pg_id]; in man_remove_dests()
4944 mdp->md_state |= MAN_DSTATE_CLOSING; in man_remove_dests()
4945 mdp->md_device.mdev_state = MDEV_UNASSIGNED; in man_remove_dests()
4946 mdp->md_msp = NULL; in man_remove_dests()
4947 mdp->md_rq = NULL; in man_remove_dests()
4955 if (mdp->md_lc_timer_id != 0) { in man_remove_dests()
4956 (void) quntimeout(man_ctl_wq, mdp->md_lc_timer_id); in man_remove_dests()
4957 mdp->md_lc_timer_id = 0; in man_remove_dests()
4959 if (mdp->md_bc_id != 0) { in man_remove_dests()
4960 qunbufcall(man_ctl_wq, mdp->md_bc_id); in man_remove_dests()
4961 mdp->md_bc_id = 0; in man_remove_dests()
4964 mutex_enter(&mdp->md_lock); in man_remove_dests()
4965 while ((mp = mdp->md_dmp_head) != NULL) { in man_remove_dests()
4966 mdp->md_dmp_head = mp->b_next; in man_remove_dests()
4970 mdp->md_dmp_count = 0; in man_remove_dests()
4971 mdp->md_dmp_tail = NULL; in man_remove_dests()
4972 mutex_exit(&mdp->md_lock); in man_remove_dests()
4974 *tdp++ = *mdp; in man_remove_dests()
4976 mdp->md_state = MAN_DSTATE_NOTPRESENT; in man_remove_dests()
4977 mdp->md_muxid = -1; in man_remove_dests()
5006 man_gettimer(int timer, man_dest_t *mdp) in man_gettimer() argument
5012 if (mdp == NULL || mdp->md_msp == NULL || mdp->md_msp->ms_manp == NULL) in man_gettimer()
5018 time = mdp->md_msp->ms_manp->man_init_time; in man_gettimer()
5025 if (mdp->md_linkstate == MAN_LINKSTALE) in man_gettimer()
5026 time = mdp->md_msp->ms_manp->man_linkstale_time; in man_gettimer()
5028 time = mdp->md_msp->ms_manp->man_linkcheck_time; in man_gettimer()
5035 time = mdp->md_msp->ms_manp->man_dlpireset_time; in man_gettimer()
5063 man_dest_t *mdp = (man_dest_t *)argp; in man_linkcheck_timer() local
5072 MAN_DBGCALL(MAN_LINK, man_print_mdp(mdp)); in man_linkcheck_timer()
5078 mdp->md_lc_timer_id = 0; in man_linkcheck_timer()
5080 if (mdp->md_state == MAN_DSTATE_NOTPRESENT || in man_linkcheck_timer()
5081 mdp->md_state & MAN_DSTATE_BUSY) { in man_linkcheck_timer()
5084 MAN_DBGCALL(MAN_LINK, man_print_mdp(mdp)); in man_linkcheck_timer()
5094 if (mdp->md_state == MAN_DSTATE_INITIALIZING) { in man_linkcheck_timer()
5099 newstate = oldstate = mdp->md_linkstate; in man_linkcheck_timer()
5101 if (!man_needs_linkcheck(mdp)) { in man_linkcheck_timer()
5104 (void *)mdp); in man_linkcheck_timer()
5113 mpg = man_find_pg_by_id(mdp->md_msp->ms_manp->man_pg, mdp->md_pg_id); in man_linkcheck_timer()
5115 mp = man_find_path_by_ppa(mpg->mpg_pathp, mdp->md_device.mdev_ppa); in man_linkcheck_timer()
5121 if (mdp->md_rcvcnt != mdp->md_lastrcvcnt) { in man_linkcheck_timer()
5124 mdp->md_lastrcvcnt = mdp->md_rcvcnt; in man_linkcheck_timer()
5133 if (mdp->md_link_updown_msg == MAN_LINK_DOWN_MSG) { in man_linkcheck_timer()
5134 man_t *manp = mdp->md_msp->ms_manp; in man_linkcheck_timer()
5140 mdp->md_link_updown_msg = MAN_LINK_UP_MSG; in man_linkcheck_timer()
5153 mdp->md_linkstales++; in man_linkcheck_timer()
5154 mdp->md_linkstale_retries = in man_linkcheck_timer()
5155 mdp->md_msp->ms_manp->man_linkstale_retries; in man_linkcheck_timer()
5160 mdp->md_linkstales++; in man_linkcheck_timer()
5161 mdp->md_linkstale_retries--; in man_linkcheck_timer()
5162 if (mdp->md_linkstale_retries < 0) { in man_linkcheck_timer()
5164 mdp->md_linkfails++; in man_linkcheck_timer()
5165 mdp->md_linkstale_retries = in man_linkcheck_timer()
5166 mdp->md_msp->ms_manp->man_linkstale_retries; in man_linkcheck_timer()
5191 mdp->md_linkstate = newstate; in man_linkcheck_timer()
5199 if (!man_do_autoswitch(mdp)) { in man_linkcheck_timer()
5210 man_do_icmp_bcast(mdp, mdp->md_msp->ms_sap); in man_linkcheck_timer()
5213 mdp->md_lc_timer_id = qtimeout(man_ctl_wq, man_linkcheck_timer, in man_linkcheck_timer()
5214 (void *)mdp, man_gettimer(MAN_TIMER_LINKCHECK, mdp)); in man_linkcheck_timer()
5226 man_do_autoswitch(man_dest_t *mdp) in man_do_autoswitch() argument
5236 mdp->md_msp->ms_manp->man_refcnt++; in man_do_autoswitch()
5238 mpg = man_find_pg_by_id(mdp->md_msp->ms_manp->man_pg, mdp->md_pg_id); in man_do_autoswitch()
5246 if (mdp->md_state == MAN_DSTATE_INITIALIZING) { in man_do_autoswitch()
5251 status = man_autoswitch(mpg, &mdp->md_device, NULL); in man_do_autoswitch()
5254 if (mdp->md_msp != NULL && mdp->md_msp->ms_manp != NULL && in man_do_autoswitch()
5255 mdp->md_link_updown_msg == MAN_LINK_UP_MSG) { in man_do_autoswitch()
5257 man_t *manp = mdp->md_msp->ms_manp; in man_do_autoswitch()
5263 mdp->md_link_updown_msg = MAN_LINK_DOWN_MSG; in man_do_autoswitch()
5266 ddi_major_to_name(mdp->md_device.mdev_major), in man_do_autoswitch()
5267 mdp->md_device.mdev_ppa)); in man_do_autoswitch()
5283 mdp->md_msp->ms_manp->man_refcnt--; in man_do_autoswitch()
5369 man_dest_t *mdp; in man_prep_dests_for_switch() local
5407 mdp = &msp->ms_dests[mpg->mpg_pg_id]; in man_prep_dests_for_switch()
5408 mdp->md_state |= MAN_DSTATE_PLUMBING; in man_prep_dests_for_switch()
5409 mdp->md_switch_id = sdp; in man_prep_dests_for_switch()
5414 bcopy(mdp, tdp, sizeof (man_dest_t)); in man_prep_dests_for_switch()
5420 if (mdp->md_lc_timer_id) { in man_prep_dests_for_switch()
5422 mdp->md_lc_timer_id); in man_prep_dests_for_switch()
5423 mdp->md_lc_timer_id = 0; in man_prep_dests_for_switch()
5425 if (mdp->md_bc_id) { in man_prep_dests_for_switch()
5426 qunbufcall(man_ctl_wq, mdp->md_bc_id); in man_prep_dests_for_switch()
5427 mdp->md_bc_id = 0; in man_prep_dests_for_switch()
5458 man_do_icmp_bcast(man_dest_t *mdp, t_uscalar_t sap) in man_do_icmp_bcast() argument
5467 mdp->md_icmpv6probes++; in man_do_icmp_bcast()
5469 mdp->md_icmpv4probes++; in man_do_icmp_bcast()
5484 if (man_start_lower(mdp, mp, NULL, MAN_LOWER)) { in man_do_icmp_bcast()
5945 man_dest_t *mdp; in man_bclose() local
5950 mdp = &adp->a_mdp[i]; in man_bclose()
5952 if (mdp->md_muxid != -1) in man_bclose()
5953 man_unplumb(mdp); in man_bclose()
5956 mutex_destroy(&mdp->md_lock); in man_bclose()
5971 man_dest_t *mdp; in man_cancel_timers() local
5975 mdp = adp->a_mdp; in man_cancel_timers()
5979 (void *)mdp, cnt)); in man_cancel_timers()
5983 if (mdp[i].md_lc_timer_id != 0) { in man_cancel_timers()
5984 (void) quntimeout(man_ctl_wq, mdp[i].md_lc_timer_id); in man_cancel_timers()
5985 mdp[i].md_lc_timer_id = 0; in man_cancel_timers()
5988 if (mdp[i].md_bc_id != 0) { in man_cancel_timers()
5989 qunbufcall(man_ctl_wq, mdp[i].md_bc_id); in man_cancel_timers()
5990 mdp[i].md_bc_id = 0; in man_cancel_timers()
6111 man_plumb(man_dest_t *mdp) in man_plumb() argument
6119 (void *)mdp, ddi_major_to_name(mdp->md_device.mdev_major), in man_plumb()
6120 mdp->md_device.mdev_ppa, mdp->md_device.mdev_exp_id)); in man_plumb()
6145 ddi_major_to_name(mdp->md_device.mdev_major)) == 0); in man_plumb()
6158 ASSERT(mdp->md_muxid == -1); in man_plumb()
6169 mdp->md_muxid = muxid; in man_plumb()
6170 mdp->md_wq = man_linkrec_find(muxid); in man_plumb()
6175 if (mdp->md_wq == NULL) in man_plumb()
6197 man_unplumb(man_dest_t *mdp) in man_unplumb() argument
6202 MAN_DBGCALL(MAN_SWITCH, man_print_mdp(mdp)); in man_unplumb()
6204 if (mdp->md_muxid == -1) in man_unplumb()
6212 status = ldi_ioctl(man_ctl_lh, I_PUNLINK, (intptr_t)mdp->md_muxid, in man_unplumb()
6221 (void) man_linkrec_find(mdp->md_muxid); in man_unplumb()
6222 mdp->md_muxid = -1; in man_unplumb()
7693 man_dest_t *mdp; in man_sum_dests_kstats() local
7707 mdp = &msp->ms_dests[mpg->mpg_pg_id]; in man_sum_dests_kstats()
7709 switches += mdp->md_switches; in man_sum_dests_kstats()
7710 linkfails += mdp->md_linkfails; in man_sum_dests_kstats()
7711 linkstales += mdp->md_linkstales; in man_sum_dests_kstats()
7712 icmpv4probes += mdp->md_icmpv4probes; in man_sum_dests_kstats()
7713 icmpv6probes += mdp->md_icmpv6probes; in man_sum_dests_kstats()
8054 man_print_mdp(man_dest_t *mdp) in man_print_mdp() argument
8064 cmn_err(CE_CONT, "\tmdp(0x%p)\n", (void *)mdp); in man_print_mdp()
8066 if (mdp == NULL) in man_print_mdp()
8069 cmn_err(CE_CONT, "\tmd_pg_id: %d\n", mdp->md_pg_id); in man_print_mdp()
8071 ether_sprintf(&mdp->md_dst_eaddr)); in man_print_mdp()
8073 ether_sprintf(&mdp->md_src_eaddr)); in man_print_mdp()
8074 cmn_err(CE_CONT, "\tmd_dlpistate: %s", dss[mdp->md_dlpistate]); in man_print_mdp()
8075 cmn_err(CE_CONT, "\tmd_muxid: 0x%u", mdp->md_muxid); in man_print_mdp()
8076 cmn_err(CE_CONT, "\tmd_rcvcnt %lu md_lastrcvcnt %lu", mdp->md_rcvcnt, in man_print_mdp()
8077 mdp->md_lastrcvcnt); in man_print_mdp()
8082 state = mdp->md_state; in man_print_mdp()
8099 man_print_dev(&mdp->md_device); in man_print_mdp()