Lines Matching defs:pxi
321 struct pppx_if *pxi;
385 pxi = pppx_if_find(pxd, th->pppx_id, th->pppx_proto);
386 if (pxi == NULL) {
390 top->m_pkthdr.ph_ifidx = pxi->pxi_if.if_index;
393 if (pxi->pxi_if.if_bpf)
394 bpf_mtap(pxi->pxi_if.if_bpf, top, BPF_DIRECTION_IN);
404 ipv4_input(&pxi->pxi_if, top);
408 ipv6_input(&pxi->pxi_if, top);
419 pppx_if_rele(pxi);
549 struct pppx_if *pxi;
553 while ((pxi = LIST_FIRST(&pxd->pxd_pxis))) {
554 pxi->pxi_ready = 0;
555 pppx_if_destroy(pxd, pxi);
573 struct pppx_if *pxi;
579 RBT_FOREACH(pxi, pppx_ifs, &pppx_ifs) {
580 if (pxi->pxi_unit == unit) {
598 struct pppx_if *pxi;
604 pxi = RBT_FIND(pppx_ifs, &pppx_ifs, (struct pppx_if *)&key);
605 if (pxi && pxi->pxi_ready == 0)
606 pxi = NULL;
608 return pxi;
614 struct pppx_if *pxi;
616 if ((pxi = pppx_if_find_locked(pxd, session_id, protocol)))
617 refcnt_take(&pxi->pxi_refcnt);
619 return pxi;
623 pppx_if_rele(struct pppx_if *pxi)
625 refcnt_rele_wake(&pxi->pxi_refcnt);
631 struct pppx_if *pxi;
639 * XXX: As long as `session' is allocated as part of a `pxi'
650 pxi = pool_get(&pppx_if_pl, PR_WAITOK | PR_ZERO);
651 ifp = &pxi->pxi_if;
653 pxi->pxi_session = session;
662 refcnt_init(&pxi->pxi_refcnt);
663 pxi->pxi_unit = unit;
664 pxi->pxi_key.pxik_session_id = req->pr_session_id;
665 pxi->pxi_key.pxik_protocol = req->pr_protocol;
666 pxi->pxi_dev = pxd;
668 if (RBT_INSERT(pppx_ifs, &pppx_ifs, pxi) != NULL) {
672 LIST_INSERT_HEAD(&pxd->pxd_pxis, pxi, pxi_list);
683 ifp->if_softc = pxi;
745 pxi->pxi_ready = 1;
752 if (RBT_REMOVE(pppx_ifs, &pppx_ifs, pxi) == NULL)
754 LIST_REMOVE(pxi, pxi_list);
756 pool_put(&pppx_if_pl, pxi);
765 struct pppx_if *pxi;
767 pxi = pppx_if_find_locked(pxd, req->pcr_session_id, req->pcr_protocol);
768 if (pxi == NULL)
771 pxi->pxi_ready = 0;
772 pipex_export_session_stats(pxi->pxi_session, &req->pcr_stat);
773 pppx_if_destroy(pxd, pxi);
781 struct pppx_if *pxi;
783 pxi = pppx_if_find(pxd, req->pdr_session_id, req->pdr_protocol);
784 if (pxi == NULL)
787 (void)memset(pxi->pxi_if.if_description, 0, IFDESCRSIZE);
788 strlcpy(pxi->pxi_if.if_description, req->pdr_descr, IFDESCRSIZE);
790 pppx_if_rele(pxi);
796 pppx_if_destroy(struct pppx_dev *pxd, struct pppx_if *pxi)
801 session = pxi->pxi_session;
802 ifp = &pxi->pxi_if;
804 refcnt_finalize(&pxi->pxi_refcnt, "pxifinal");
814 if (RBT_REMOVE(pppx_ifs, &pppx_ifs, pxi) == NULL)
816 LIST_REMOVE(pxi, pxi_list);
818 pool_put(&pppx_if_pl, pxi);
825 struct pppx_if *pxi = (struct pppx_if *)ifp->if_softc;
833 pipex_ppp_output(m, pxi->pxi_session, proto);
841 struct pppx_if *pxi = (struct pppx_if *)ifp->if_softc;
895 th->pppx_id = pxi->pxi_session->ppp_id;
896 error = mq_enqueue(&pxi->pxi_dev->pxd_svcq, m);
898 if (pxi->pxi_dev->pxd_waiting) {
899 wakeup((caddr_t)pxi->pxi_dev);
900 pxi->pxi_dev->pxd_waiting = 0;
902 knote(&pxi->pxi_dev->pxd_rklist, 0);
915 struct pppx_if *pxi = (struct pppx_if *)ifp->if_softc;
932 ifr->ifr_mtu > pxi->pxi_session->peer_mru)