Lines Matching defs:vlp

245 vlan_parent_retain(vlan_parent_ref vlp);
248 vlan_parent_release(vlan_parent_ref vlp);
254 vlan_parent_flags_supports_vlan_mtu(vlan_parent_ref vlp)
256 return ((vlp->vlp_flags & VLPF_SUPPORTS_VLAN_MTU) != 0);
260 vlan_parent_flags_set_supports_vlan_mtu(vlan_parent_ref vlp)
262 vlp->vlp_flags |= VLPF_SUPPORTS_VLAN_MTU;
267 vlan_parent_flags_clear_supports_vlan_mtu(vlan_parent_ref vlp)
269 vlp->vlp_flags &= ~VLPF_SUPPORTS_VLAN_MTU;
274 vlan_parent_flags_change_in_progress(vlan_parent_ref vlp)
276 return ((vlp->vlp_flags & VLPF_CHANGE_IN_PROGRESS) != 0);
280 vlan_parent_flags_set_change_in_progress(vlan_parent_ref vlp)
282 vlp->vlp_flags |= VLPF_CHANGE_IN_PROGRESS;
287 vlan_parent_flags_clear_change_in_progress(vlan_parent_ref vlp)
289 vlp->vlp_flags &= ~VLPF_CHANGE_IN_PROGRESS;
294 vlan_parent_flags_detaching(struct vlan_parent * vlp)
296 return ((vlp->vlp_flags & VLPF_DETACHING) != 0);
300 vlan_parent_flags_set_detaching(struct vlan_parent * vlp)
302 vlp->vlp_flags |= VLPF_DETACHING;
442 vlan_parent_ref vlp = ifv->ifv_vlp;
444 if (vlan_parent_flags_detaching(vlp)) {
447 vlan_parent_retain(vlp);
448 return (vlp);
482 vlan_parent_ref vlp)
491 if (ifv->ifv_vlp != vlp) {
495 if (vlan_parent_flags_detaching(vlp)) {
598 vlan_parent_retain(vlan_parent_ref vlp)
600 if (vlp->vlp_signature != VLP_SIGNATURE) {
603 if (vlp->vlp_retain_count == 0) {
606 OSIncrementAtomic(&vlp->vlp_retain_count);
610 vlan_parent_release(vlan_parent_ref vlp)
614 if (vlp->vlp_signature != VLP_SIGNATURE) {
617 old_retain_count = OSDecrementAtomic(&vlp->vlp_retain_count);
624 struct ifnet * ifp = vlp->vlp_ifp;
628 vlp->vlp_signature = 0;
629 FREE(vlp, M_VLAN);
650 vlan_parent_wait(vlan_parent_ref vlp, const char * msg)
655 while (vlan_parent_flags_change_in_progress(vlp)) {
657 struct ifnet * ifp = vlp->vlp_ifp;
662 (void)msleep(vlp, vlan_lck_mtx, PZERO, msg, 0);
665 vlan_parent_flags_set_change_in_progress(vlp);
667 struct ifnet * ifp = vlp->vlp_ifp;
685 vlan_parent_signal(vlan_parent_ref vlp, const char * msg)
687 vlan_parent_flags_clear_change_in_progress(vlp);
688 wakeup((caddr_t)vlp);
690 struct ifnet * ifp = vlp->vlp_ifp;
711 vlan_parent_ref vlp = NULL;
718 vlp = ifvlan_get_vlan_parent_retained(ifv);
719 if (vlp == NULL) {
723 vlan_parent_wait(vlp, "vlan_setmulti");
726 if (ifnet_ifvlan_vlan_parent_ok(ifp, ifv, vlp) == FALSE) {
729 p = vlp->vlp_ifp;
738 vlan_parent_signal(vlp, "vlan_setmulti");
745 if (vlp != NULL) {
746 vlan_parent_release(vlp);
757 vlan_parent_ref vlp;
759 LIST_FOREACH(vlp, &g_vlan->parent_list, vlp_parent_list) {
760 if (vlp->vlp_ifp == p) {
761 return (vlp);
768 vlan_parent_lookup_tag(vlan_parent_ref vlp, int tag)
772 LIST_FOREACH(ifv, &vlp->vlp_vlan_list, ifv_vlan_list) {
783 vlan_parent_ref vlp;
785 vlp = parent_list_lookup(p);
786 if (vlp != NULL) {
787 return (vlan_parent_lookup_tag(vlp, tag));
793 vlan_parent_find_max_mtu(vlan_parent_ref vlp, ifvlan_ref exclude_ifv)
798 LIST_FOREACH(ifv, &vlp->vlp_vlan_list, ifv_vlan_list) {
822 vlan_parent_ref vlp;
825 vlp = _MALLOC(sizeof(*vlp), M_VLAN, M_WAITOK);
826 if (vlp == NULL) {
829 bzero(vlp, sizeof(*vlp));
830 error = siocgifdevmtu(p, &vlp->vlp_devmtu);
834 FREE(vlp, M_VLAN);
837 LIST_INIT(&vlp->vlp_vlan_list);
838 vlp->vlp_ifp = p;
839 vlp->vlp_retain_count = 1;
840 vlp->vlp_signature = VLP_SIGNATURE;
843 vlan_parent_flags_set_supports_vlan_mtu(vlp);
845 *ret_vlp = vlp;
855 vlan_parent_ref vlp;
858 vlp = parent_list_lookup(p);
859 if (vlp == NULL || vlan_parent_flags_detaching(vlp)) {
864 vlan_parent_flags_set_detaching(vlp);
865 vlan_parent_retain(vlp);
866 vlan_parent_wait(vlp, "vlan_parent_remove_all_vlans");
868 vlp = parent_list_lookup(p);
870 if (vlp == NULL) {
874 for (ifv = LIST_FIRST(&vlp->vlp_vlan_list); ifv != NULL; ifv = next) {
890 LIST_REMOVE(vlp, vlp_parent_list);
895 vlan_parent_signal(vlp, "vlan_parent_remove_all_vlans");
899 vlan_parent_release(vlp);
905 vlan_parent_no_vlans(vlan_parent_ref vlp)
907 return (LIST_EMPTY(&vlp->vlp_vlan_list));
911 vlan_parent_add_vlan(vlan_parent_ref vlp, ifvlan_ref ifv, int tag)
913 LIST_INSERT_HEAD(&vlp->vlp_vlan_list, ifv, ifv_vlan_list);
914 ifv->ifv_vlp = vlp;
920 vlan_parent_remove_vlan(__unused vlan_parent_ref vlp, ifvlan_ref ifv)
1092 vlan_parent_ref vlp = NULL;
1108 vlp = ifvlan_get_vlan_parent_retained(ifv);
1109 if (vlp == NULL) {
1112 p = vlp->vlp_ifp;
1121 vlan_parent_release(vlp);
1190 if (vlp != NULL) {
1191 vlan_parent_release(vlp);
1309 vlan_parent_ref vlp = NULL;
1327 vlp = parent_list_lookup(p);
1328 if (vlp != NULL) {
1329 vlan_parent_retain(vlp);
1331 if (vlan_parent_lookup_tag(vlp, tag) != NULL) {
1343 vlp = new_vlp;
1345 vlan_parent_retain(vlp);
1350 vlan_parent_wait(vlp, "vlan_config");
1358 if (parent_list_lookup(p) != vlp) {
1363 if (vlan_parent_flags_detaching(vlp)
1370 if (vlan_parent_lookup_tag(vlp, tag) != NULL) {
1376 if (vlan_parent_no_vlans(vlp)) {
1379 vlan_parent_add_vlan(vlp, ifv, tag);
1424 if (vlan_parent_flags_supports_vlan_mtu(vlp)) {
1453 vlan_parent_signal(vlp, "vlan_config");
1455 if (new_vlp != vlp) {
1473 vlan_parent_remove_vlan(vlp, ifv);
1474 if (!vlan_parent_flags_detaching(vlp) && vlan_parent_no_vlans(vlp)) {
1477 LIST_REMOVE(vlp, vlp_parent_list);
1485 vlan_parent_signal(vlp, "vlan_config");
1491 vlan_parent_release(vlp);
1493 if (new_vlp != vlp) {
1533 vlan_parent_ref vlp;
1536 vlp = ifv->ifv_vlp;
1537 if (vlp == NULL) {
1542 vlan_parent_retain(vlp);
1543 vlan_parent_wait(vlp, "vlan_unconfig");
1549 if (ifv->ifv_vlp != vlp) {
1555 /* ifv has a reference on vlp, need to remove it */
1557 p = vlp->vlp_ifp;
1560 if (LIST_NEXT(LIST_FIRST(&vlp->vlp_vlan_list), ifv_vlan_list) == NULL) {
1594 vlan_parent_remove_vlan(vlp, ifv);
1601 if (last_vlan && !vlan_parent_flags_detaching(vlp)) {
1604 LIST_REMOVE(vlp, vlp_parent_list);
1615 vlan_parent_signal(vlp, "vlan_unconfig");
1621 while (need_vlp_release--) { /* references to vlp */
1622 vlan_parent_release(vlp);
1633 vlan_parent_ref vlp;
1642 vlp = ifv->ifv_vlp;
1643 if (vlp == NULL) {
1648 error = ifnet_set_promiscuous(vlp->vlp_ifp, 1);
1655 error = ifnet_set_promiscuous(vlp->vlp_ifp, 0);
1678 vlan_parent_ref vlp;
1681 vlp = ifv->ifv_vlp;
1682 devmtu_p = &vlp->vlp_devmtu;
1687 max_mtu = vlan_parent_find_max_mtu(vlp, ifv);
1695 struct ifnet * p = vlp->vlp_ifp;
1714 vlan_parent_ref vlp;
1725 vlp = ifvlan_get_vlan_parent_retained(ifv);
1726 if (vlp == NULL) {
1734 vlan_parent_wait(vlp, "vlan_set_mtu");
1742 if (ifv->ifv_vlp != vlp) {
1746 if (vlan_parent_flags_detaching(vlp)) {
1755 vlan_parent_signal(vlp, "vlan_set_mtu");
1757 vlan_parent_release(vlp);
1775 vlan_parent_ref vlp;
1843 vlp = ifv->ifv_vlp;
1844 if (vlp != NULL) {
1845 int min_mtu = vlp->vlp_devmtu.ifdm_min - ifv->ifv_mtufudge;
1849 devmtu_p->ifdm_max = vlp->vlp_devmtu.ifdm_max - ifv->ifv_mtufudge;
2037 vlan_parent_ref vlp;
2045 vlp = parent_list_lookup(p);
2046 if (vlp == NULL) {
2052 vlan_parent_retain(vlp);
2053 vlan_parent_wait(vlp, "vlan_parent_link_event");
2054 if (vlan_parent_flags_detaching(vlp)) {
2061 LIST_FOREACH(ifv, &vlp->vlp_vlan_list, ifv_vlan_list) {
2070 vlan_parent_signal(vlp, "vlan_parent_link_event");
2072 vlan_parent_release(vlp);