Lines Matching refs:ifb
355 static int bond_get_status(ifbond_ref ifb, struct if_bond_req * ibr_p,
359 ifbond_flags_if_detaching(ifbond_ref ifb) in ifbond_flags_if_detaching() argument
361 return (ifb->ifb_flags & IFBF_IF_DETACHING) != 0; in ifbond_flags_if_detaching()
365 ifbond_flags_set_if_detaching(ifbond_ref ifb) in ifbond_flags_set_if_detaching() argument
367 ifb->ifb_flags |= IFBF_IF_DETACHING; in ifbond_flags_set_if_detaching()
372 ifbond_flags_lladdr(ifbond_ref ifb) in ifbond_flags_lladdr() argument
374 return (ifb->ifb_flags & IFBF_LLADDR) != 0; in ifbond_flags_lladdr()
378 ifbond_flags_change_in_progress(ifbond_ref ifb) in ifbond_flags_change_in_progress() argument
380 return (ifb->ifb_flags & IFBF_CHANGE_IN_PROGRESS) != 0; in ifbond_flags_change_in_progress()
384 ifbond_flags_set_change_in_progress(ifbond_ref ifb) in ifbond_flags_set_change_in_progress() argument
386 ifb->ifb_flags |= IFBF_CHANGE_IN_PROGRESS; in ifbond_flags_set_change_in_progress()
391 ifbond_flags_clear_change_in_progress(ifbond_ref ifb) in ifbond_flags_clear_change_in_progress() argument
393 ifb->ifb_flags &= ~IFBF_CHANGE_IN_PROGRESS; in ifbond_flags_clear_change_in_progress()
398 ifbond_flags_promisc(ifbond_ref ifb) in ifbond_flags_promisc() argument
400 return (ifb->ifb_flags & IFBF_PROMISC) != 0; in ifbond_flags_promisc()
404 ifbond_flags_set_promisc(ifbond_ref ifb) in ifbond_flags_set_promisc() argument
406 ifb->ifb_flags |= IFBF_PROMISC; in ifbond_flags_set_promisc()
411 ifbond_flags_clear_promisc(ifbond_ref ifb) in ifbond_flags_clear_promisc() argument
413 ifb->ifb_flags &= ~IFBF_PROMISC; in ifbond_flags_clear_promisc()
700 static int bond_remove_interface(ifbond_ref ifb, struct ifnet * port_ifp);
743 ifbond_retain(ifbond_ref ifb) in ifbond_retain() argument
745 os_ref_retain(&ifb->ifb_retain_count); in ifbond_retain()
749 ifbond_release(ifbond_ref ifb) in ifbond_release() argument
751 if (os_ref_release(&ifb->ifb_retain_count) != 0) { in ifbond_release()
754 BOND_LOG(LOG_DEBUG, BD_DBGF_LIFECYCLE, "%s", ifb->ifb_name); in ifbond_release()
755 if (ifb->ifb_ifma_slow_proto != NULL) { in ifbond_release()
757 "%s: removing multicast", ifb->ifb_name); in ifbond_release()
758 (void) if_delmulti_anon(ifb->ifb_ifma_slow_proto->ifma_ifp, in ifbond_release()
759 ifb->ifb_ifma_slow_proto->ifma_addr); in ifbond_release()
760 IFMA_REMREF(ifb->ifb_ifma_slow_proto); in ifbond_release()
762 kfree_type_counted_by(bondport_ref, ifb->ifb_distributing_max, in ifbond_release()
763 ifb->ifb_distributing_array); in ifbond_release()
764 kfree_type(struct ifbond_s, ifb); in ifbond_release()
788 ifbond_wait(ifbond_ref ifb, const char * msg) in ifbond_wait() argument
793 while (ifbond_flags_change_in_progress(ifb)) { in ifbond_wait()
795 ifb->ifb_name, msg); in ifbond_wait()
797 (void)msleep(ifb, &bond_lck_mtx, PZERO, msg, 0); in ifbond_wait()
800 ifbond_flags_set_change_in_progress(ifb); in ifbond_wait()
803 "%s: %s woke up", ifb->ifb_name, msg); in ifbond_wait()
819 ifbond_signal(ifbond_ref ifb, const char * msg) in ifbond_signal() argument
821 ifbond_flags_clear_change_in_progress(ifb); in ifbond_signal()
822 wakeup((caddr_t)ifb); in ifbond_signal()
824 ifb->ifb_name, msg); in ifbond_signal()
1107 ifbond_ref ifb; in bond_setmulti() local
1113 ifb = ifnet_softc(ifp); in bond_setmulti()
1114 if (ifb == NULL || ifbond_flags_if_detaching(ifb) in bond_setmulti()
1115 || TAILQ_EMPTY(&ifb->ifb_port_list)) { in bond_setmulti()
1119 ifbond_retain(ifb); in bond_setmulti()
1120 ifbond_wait(ifb, "bond_setmulti"); in bond_setmulti()
1122 if (ifbond_flags_if_detaching(ifb)) { in bond_setmulti()
1130 TAILQ_FOREACH(p, &ifb->ifb_port_list, po_port_list) { in bond_setmulti()
1138 ifb->ifb_name, port_ifp->if_xname, error); in bond_setmulti()
1144 ifbond_signal(ifb, __func__); in bond_setmulti()
1146 ifbond_release(ifb); in bond_setmulti()
1162 ifbond_add_slow_proto_multicast(ifbond_ref ifb) in ifbond_add_slow_proto_multicast() argument
1177 error = if_addmulti_anon(ifb->ifb_ifp, SA(&sdl), &ifma); in ifbond_add_slow_proto_multicast()
1179 ifb->ifb_ifma_slow_proto = ifma; in ifbond_add_slow_proto_multicast()
1188 ifbond_ref ifb; in bond_clone_create() local
1197 ifb = kalloc_type(struct ifbond_s, Z_WAITOK_ZERO_NOFAIL); in bond_clone_create()
1198 os_ref_init(&ifb->ifb_retain_count, NULL); in bond_clone_create()
1199 TAILQ_INIT(&ifb->ifb_port_list); in bond_clone_create()
1200 TAILQ_INIT(&ifb->ifb_lag_list); in bond_clone_create()
1201 ifb->ifb_key = unit + 1; in bond_clone_create()
1204 if ((u_int32_t)snprintf(ifb->ifb_name, sizeof(ifb->ifb_name), "%s%d", in bond_clone_create()
1205 ifc->ifc_name, unit) >= sizeof(ifb->ifb_name)) { in bond_clone_create()
1206 ifbond_release(ifb); in bond_clone_create()
1214 bond_init.uniqueid_len = strbuflen(ifb->ifb_name); in bond_clone_create()
1215 bond_init.uniqueid = ifb->ifb_name; in bond_clone_create()
1230 bond_init.softc = ifb; in bond_clone_create()
1234 ifbond_release(ifb); in bond_clone_create()
1238 ifb->ifb_ifp = ifp; in bond_clone_create()
1247 ifbond_release(ifb); in bond_clone_create()
1250 error = ifbond_add_slow_proto_multicast(ifb); in bond_clone_create()
1254 ifb->ifb_name, error); in bond_clone_create()
1261 TAILQ_INSERT_HEAD(&g_bond->ifbond_list, ifb, ifb_bond_list); in bond_clone_create()
1268 bond_remove_all_interfaces(ifbond_ref ifb) in bond_remove_all_interfaces() argument
1278 while ((p = TAILQ_LAST(&ifb->ifb_port_list, port_list)) != NULL) { in bond_remove_all_interfaces()
1279 bond_remove_interface(ifb, p->po_ifp); in bond_remove_all_interfaces()
1285 bond_remove(ifbond_ref ifb) in bond_remove() argument
1288 ifbond_flags_set_if_detaching(ifb); in bond_remove()
1289 TAILQ_REMOVE(&g_bond->ifbond_list, ifb, ifb_bond_list); in bond_remove()
1290 bond_remove_all_interfaces(ifb); in bond_remove()
1310 ifbond_ref ifb; in bond_clone_destroy() local
1313 ifb = ifnet_softc(ifp); in bond_clone_destroy()
1314 if (ifb == NULL || ifnet_type(ifp) != IFT_IEEE8023ADLAG) { in bond_clone_destroy()
1318 if (ifbond_flags_if_detaching(ifb)) { in bond_clone_destroy()
1322 bond_remove(ifb); in bond_clone_destroy()
1545 ifbond_ref ifb; in bond_get_port_ifp() local
1549 ifb = ifnet_softc(ifp); in bond_get_port_ifp()
1550 if (ifb == NULL || ifbond_flags_if_detaching(ifb) in bond_get_port_ifp()
1551 || ifb->ifb_distributing_count == 0) { in bond_get_port_ifp()
1554 port_index = hash % ifb->ifb_distributing_count; in bond_get_port_ifp()
1555 port_ifp = ifb->ifb_distributing_array[port_index]->po_ifp; in bond_get_port_ifp()
1610 ifbond_lookup_port(ifbond_ref ifb, struct ifnet * port_ifp) in ifbond_lookup_port() argument
1613 TAILQ_FOREACH(p, &ifb->ifb_port_list, po_port_list) { in ifbond_lookup_port()
1624 ifbond_ref ifb; in bond_lookup_port() local
1627 TAILQ_FOREACH(ifb, &g_bond->ifbond_list, ifb_bond_list) { in bond_lookup_port()
1628 port = ifbond_lookup_port(ifb, port_ifp); in bond_lookup_port()
1640 ifbond_ref ifb; in bond_receive_lacpdu() local
1658 ifb = p->po_bond; in bond_receive_lacpdu()
1659 if (ifb->ifb_mode != IF_BOND_MODE_LACP) { in bond_receive_lacpdu()
1681 if (ifbond_selection(ifb)) { in bond_receive_lacpdu()
1682 event_code = (ifb->ifb_active_lag == NULL) in bond_receive_lacpdu()
1686 bond_ifp = ifb->ifb_ifp; in bond_receive_lacpdu()
1687 ifb->ifb_last_link_event = event_code; in bond_receive_lacpdu()
1689 event_code = (ifb->ifb_active_lag == NULL) in bond_receive_lacpdu()
1692 if (event_code != ifb->ifb_last_link_event) { in bond_receive_lacpdu()
1695 ifb->ifb_name); in bond_receive_lacpdu()
1696 bond_ifp = ifb->ifb_ifp; in bond_receive_lacpdu()
1697 ifb->ifb_last_link_event = event_code; in bond_receive_lacpdu()
1816 ifbond_ref ifb; in bond_input_packet_list() local
1830 ifb = p->po_bond; in bond_input_packet_list()
1831 ifp = ifb->ifb_ifp; in bond_input_packet_list()
2106 bond_device_mtu(struct ifnet * ifp, ifbond_ref ifb) in bond_device_mtu() argument
2108 return ((int)ifnet_mtu(ifp) > ifb->ifb_altmtu) in bond_device_mtu()
2109 ? (int)ifnet_mtu(ifp) : ifb->ifb_altmtu; in bond_device_mtu()
2121 ifbond_ref ifb; in bond_add_interface() local
2138 ifb = (ifbond_ref)ifnet_softc(ifp); in bond_add_interface()
2139 if (ifb == NULL || ifbond_flags_if_detaching(ifb)) { in bond_add_interface()
2142 return ifb == NULL ? EOPNOTSUPP : EBUSY; in bond_add_interface()
2146 devmtu = bond_device_mtu(ifp, ifb); in bond_add_interface()
2158 ifbond_retain(ifb); in bond_add_interface()
2161 ifbond_wait(ifb, __func__); in bond_add_interface()
2163 if (ifbond_flags_if_detaching(ifb)) { in bond_add_interface()
2188 if (TAILQ_EMPTY(&ifb->ifb_port_list)) { in bond_add_interface()
2191 if (ifbond_flags_lladdr(ifb) == FALSE) { in bond_add_interface()
2207 ifb->ifb_name, bondport_get_name(p), in bond_add_interface()
2217 p->po_bond = ifb; in bond_add_interface()
2224 TAILQ_INSERT_TAIL(&ifb->ifb_port_list, p, po_port_list); in bond_add_interface()
2225 ifb->ifb_port_count++; in bond_add_interface()
2238 new_max = ifb->ifb_port_count; in bond_add_interface()
2253 devmtu = bond_device_mtu(ifp, ifb); in bond_add_interface()
2258 ifb->ifb_name, bondport_get_name(p), devmtu, error); in bond_add_interface()
2268 ifb->ifb_name, bondport_get_name(p), error); in bond_add_interface()
2279 ifb->ifb_name, bondport_get_name(p), error); in bond_add_interface()
2297 ifb->ifb_name, bondport_get_name(p), error); in bond_add_interface()
2303 ifb->ifb_name, bondport_get_name(p), error); in bond_add_interface()
2314 if (ifbond_flags_promisc(ifb)) { in bond_add_interface()
2320 ifb->ifb_name, bondport_get_name(p), error); in bond_add_interface()
2334 if (ifb->ifb_distributing_count) { in bond_add_interface()
2335 bcopy(ifb->ifb_distributing_array, new_array, in bond_add_interface()
2336 sizeof(*new_array) * ifb->ifb_distributing_count); in bond_add_interface()
2338 old_array = ifb->ifb_distributing_array; in bond_add_interface()
2339 old_max = ifb->ifb_distributing_max; in bond_add_interface()
2340 ifb->ifb_distributing_array = new_array; in bond_add_interface()
2341 ifb->ifb_distributing_max = new_max; in bond_add_interface()
2343 if (ifb->ifb_mode == IF_BOND_MODE_LACP) { in bond_add_interface()
2347 if (ifbond_selection(ifb)) { in bond_add_interface()
2348 event_code = (ifb->ifb_active_lag == NULL) in bond_add_interface()
2351 ifb->ifb_last_link_event = event_code; in bond_add_interface()
2356 if (ifb->ifb_distributing_count == 0) { in bond_add_interface()
2357 ifb->ifb_last_link_event = event_code = KEV_DL_LINK_ON; in bond_add_interface()
2366 ifbond_signal(ifb, __func__); in bond_add_interface()
2391 ifb->ifb_name, bondport_get_name(p), error1); in bond_add_interface()
2402 ifb->ifb_name, bondport_get_name(p), error1); in bond_add_interface()
2417 ifb->ifb_name, bondport_get_name(p), in bond_add_interface()
2424 TAILQ_REMOVE(&ifb->ifb_port_list, p, po_port_list); in bond_add_interface()
2425 ifb->ifb_port_count--; in bond_add_interface()
2428 if (TAILQ_EMPTY(&ifb->ifb_port_list)) { in bond_add_interface()
2429 ifb->ifb_altmtu = 0; in bond_add_interface()
2435 ifbond_signal(ifb, __func__); in bond_add_interface()
2437 ifbond_release(ifb); in bond_add_interface()
2443 bond_remove_interface(ifbond_ref ifb, struct ifnet * port_ifp) in bond_remove_interface() argument
2458 ifbond_retain(ifb); in bond_remove_interface()
2459 ifbond_wait(ifb, "bond_remove_interface"); in bond_remove_interface()
2461 p = ifbond_lookup_port(ifb, port_ifp); in bond_remove_interface()
2471 if (ifb->ifb_mode == IF_BOND_MODE_LACP) { in bond_remove_interface()
2487 TAILQ_REMOVE(&ifb->ifb_port_list, p, po_port_list); in bond_remove_interface()
2488 ifb->ifb_port_count--; in bond_remove_interface()
2490 ifp = ifb->ifb_ifp; in bond_remove_interface()
2491 head_port = TAILQ_FIRST(&ifb->ifb_port_list); in bond_remove_interface()
2494 if (ifbond_flags_lladdr(ifb) == FALSE) { in bond_remove_interface()
2499 ifb->ifb_altmtu = 0; in bond_remove_interface()
2500 } else if (ifbond_flags_lladdr(ifb) == FALSE in bond_remove_interface()
2506 if (ifb->ifb_mode == IF_BOND_MODE_LACP) { in bond_remove_interface()
2507 if (ifbond_selection(ifb) || active_lag) { in bond_remove_interface()
2508 event_code = (ifb->ifb_active_lag == NULL) in bond_remove_interface()
2511 ifb->ifb_last_link_event = event_code; in bond_remove_interface()
2517 if (was_distributing && ifb->ifb_distributing_count == 0) { in bond_remove_interface()
2518 ifb->ifb_last_link_event = event_code = KEV_DL_LINK_OFF; in bond_remove_interface()
2537 TAILQ_FOREACH(scan_port, &ifb->ifb_port_list, po_port_list) { in bond_remove_interface()
2550 ifb->ifb_name, bondport_get_name(p), in bond_remove_interface()
2563 ifb->ifb_name, bondport_get_name(p), error); in bond_remove_interface()
2574 ifb->ifb_name, bondport_get_name(p), error); in bond_remove_interface()
2585 ifb->ifb_name, bondport_get_name(p), error); in bond_remove_interface()
2594 ifb->ifb_name, bondport_get_name(p), in bond_remove_interface()
2610 ifbond_release(ifb); in bond_remove_interface()
2613 ifbond_signal(ifb, __func__); in bond_remove_interface()
2614 ifbond_release(ifb); in bond_remove_interface()
2619 bond_set_lacp_mode(ifbond_ref ifb) in bond_set_lacp_mode() argument
2623 TAILQ_FOREACH(p, &ifb->ifb_port_list, po_port_list) { in bond_set_lacp_mode()
2631 bond_set_static_mode(ifbond_ref ifb) in bond_set_static_mode() argument
2636 TAILQ_FOREACH(p, &ifb->ifb_port_list, po_port_list) { in bond_set_static_mode()
2670 ifbond_ref ifb; in bond_set_mode() local
2673 ifb = (ifbond_ref)ifnet_softc(ifp); in bond_set_mode()
2674 if (ifb == NULL || ifbond_flags_if_detaching(ifb)) { in bond_set_mode()
2676 return (ifb == NULL) ? EOPNOTSUPP : EBUSY; in bond_set_mode()
2678 if (ifb->ifb_mode == mode) { in bond_set_mode()
2683 ifbond_retain(ifb); in bond_set_mode()
2684 ifbond_wait(ifb, "bond_set_mode"); in bond_set_mode()
2687 if (ifb->ifb_mode == mode) { in bond_set_mode()
2692 ifb->ifb_mode = mode; in bond_set_mode()
2694 bond_set_lacp_mode(ifb); in bond_set_mode()
2697 if (ifbond_selection(ifb)) { in bond_set_mode()
2698 event_code = (ifb->ifb_active_lag == NULL) in bond_set_mode()
2703 bond_set_static_mode(ifb); in bond_set_mode()
2704 event_code = (ifb->ifb_distributing_count == 0) in bond_set_mode()
2708 ifb->ifb_last_link_event = event_code; in bond_set_mode()
2711 ifbond_signal(ifb, __func__); in bond_set_mode()
2713 ifbond_release(ifb); in bond_set_mode()
2722 bond_get_status(ifbond_ref ifb, struct if_bond_req * ibr_p, user_addr_t datap) in bond_get_status() argument
2735 ibsr->ibsr_key = ifb->ifb_key; in bond_get_status()
2736 ibsr->ibsr_mode = ifb->ifb_mode; in bond_get_status()
2737 ibsr->ibsr_total = ifb->ifb_port_count; in bond_get_status()
2748 count = (ifb->ifb_port_count < ibsr->ibsr_count) in bond_get_status()
2749 ? ifb->ifb_port_count : ibsr->ibsr_count; in bond_get_status()
2750 TAILQ_FOREACH(port, &ifb->ifb_port_list, po_port_list) { in bond_get_status()
2760 if (ifb->ifb_mode == IF_BOND_MODE_LACP) { in bond_get_status()
2797 ifbond_ref ifb; in bond_set_promisc() local
2806 ifb = (ifbond_ref)ifnet_softc(ifp); in bond_set_promisc()
2807 if (ifb == NULL) { in bond_set_promisc()
2812 if (is_promisc == ifbond_flags_promisc(ifb)) { in bond_set_promisc()
2817 ifbond_retain(ifb); in bond_set_promisc()
2818 ifbond_wait(ifb, __func__); in bond_set_promisc()
2819 if (ifbond_flags_if_detaching(ifb)) { in bond_set_promisc()
2828 TAILQ_FOREACH(p, &ifb->ifb_port_list, po_port_list) { in bond_set_promisc()
2842 ifb->ifb_name, port_ifp->if_xname, val, error); in bond_set_promisc()
2847 ifb->ifb_name, port_ifp->if_xname, val); in bond_set_promisc()
2864 ifbond_flags_set_promisc(ifb); in bond_set_promisc()
2866 ifbond_flags_clear_promisc(ifb); in bond_set_promisc()
2870 ifbond_signal(ifb, __func__); in bond_set_promisc()
2872 ifbond_release(ifb); in bond_set_promisc()
2879 bond_get_mtu_values(ifbond_ref ifb, int * ret_min, int * ret_max) in bond_get_mtu_values() argument
2885 if (TAILQ_FIRST(&ifb->ifb_port_list) != NULL) { in bond_get_mtu_values()
2888 TAILQ_FOREACH(p, &ifb->ifb_port_list, po_port_list) { in bond_get_mtu_values()
2904 bond_set_mtu_on_ports(ifbond_ref ifb, int mtu) in bond_set_mtu_on_ports() argument
2909 TAILQ_FOREACH(p, &ifb->ifb_port_list, po_port_list) { in bond_set_mtu_on_ports()
2914 ifb->ifb_name, bondport_get_name(p), error); in bond_set_mtu_on_ports()
2925 ifbond_ref ifb; in bond_set_mtu() local
2932 ifb = (ifbond_ref)ifnet_softc(ifp); in bond_set_mtu()
2933 if (ifb == NULL || ifbond_flags_if_detaching(ifb)) { in bond_set_mtu()
2934 error = (ifb == NULL) ? EOPNOTSUPP : EBUSY; in bond_set_mtu()
2937 ifbond_retain(ifb); in bond_set_mtu()
2938 ifbond_wait(ifb, "bond_set_mtu"); in bond_set_mtu()
2941 if (ifnet_softc(ifp) == NULL || ifbond_flags_if_detaching(ifb)) { in bond_set_mtu()
2945 bond_get_mtu_values(ifb, &mtu_min, &mtu_max); in bond_set_mtu()
2958 new_max = (mtu > ifb->ifb_altmtu) ? mtu : ifb->ifb_altmtu; in bond_set_mtu()
2960 old_max = ((int)ifnet_mtu(ifp) > ifb->ifb_altmtu) in bond_set_mtu()
2961 ? (int)ifnet_mtu(ifp) : ifb->ifb_altmtu; in bond_set_mtu()
2965 error = bond_set_mtu_on_ports(ifb, new_max); in bond_set_mtu()
2968 (void)bond_set_mtu_on_ports(ifb, old_max); in bond_set_mtu()
2974 ifb->ifb_altmtu = mtu; in bond_set_mtu()
2981 ifbond_signal(ifb, __func__); in bond_set_mtu()
2982 ifbond_release(ifb); in bond_set_mtu()
2995 ifbond_ref ifb; in bond_ioctl() local
3015 ifb = (ifbond_ref)ifnet_softc(ifp); in bond_ioctl()
3016 if (ifb == NULL || ifbond_flags_if_detaching(ifb)) { in bond_ioctl()
3018 return ifb == NULL ? EOPNOTSUPP : EBUSY; in bond_ioctl()
3026 if (ifb->ifb_mode == IF_BOND_MODE_LACP) { in bond_ioctl()
3027 if (ifb->ifb_active_lag != NULL) { in bond_ioctl()
3028 ifmr->ifm_active = ifb->ifb_active_lag->lag_active_media; in bond_ioctl()
3031 } else if (ifb->ifb_distributing_count > 0) { in bond_ioctl()
3033 = ifb->ifb_distributing_array[0]->po_media_info.mi_active; in bond_ioctl()
3054 ifb = (ifbond_ref)ifnet_softc(ifp); in bond_ioctl()
3055 if (ifb == NULL || ifbond_flags_if_detaching(ifb)) { in bond_ioctl()
3057 error = (ifb == NULL) ? EOPNOTSUPP : EBUSY; in bond_ioctl()
3060 ifr->ifr_devmtu.ifdm_current = bond_device_mtu(ifp, ifb); in bond_ioctl()
3061 bond_get_mtu_values(ifb, &ifr->ifr_devmtu.ifdm_min, in bond_ioctl()
3068 ifb = (ifbond_ref)ifnet_softc(ifp); in bond_ioctl()
3069 if (ifb == NULL || ifbond_flags_if_detaching(ifb)) { in bond_ioctl()
3071 error = (ifb == NULL) ? EOPNOTSUPP : EBUSY; in bond_ioctl()
3074 ifr->ifr_mtu = ifb->ifb_altmtu; in bond_ioctl()
3121 ifb = (ifbond_ref)ifnet_softc(ifp); in bond_ioctl()
3122 if (ifb == NULL || ifbond_flags_if_detaching(ifb)) { in bond_ioctl()
3124 return ifb == NULL ? EOPNOTSUPP : EBUSY; in bond_ioctl()
3126 error = bond_remove_interface(ifb, port_ifp); in bond_ioctl()
3164 ifb = (ifbond_ref)ifnet_softc(ifp); in bond_ioctl()
3165 if (ifb == NULL || ifbond_flags_if_detaching(ifb)) { in bond_ioctl()
3167 return ifb == NULL ? EOPNOTSUPP : EBUSY; in bond_ioctl()
3171 error = bond_get_status(ifb, &ibr, user_addr); in bond_ioctl()
3199 ifbond_ref ifb; in bond_if_free() local
3205 ifb = (ifbond_ref)ifnet_softc(ifp); in bond_if_free()
3206 if (ifb == NULL) { in bond_if_free()
3210 ifbond_release(ifb); in bond_if_free()
3220 ifbond_ref ifb; in bond_handle_event() local
3242 ifb = p->po_bond; in bond_handle_event()
3243 old_distributing_count = ifb->ifb_distributing_count; in bond_handle_event()
3247 bond_remove_interface(ifb, p->po_ifp); in bond_handle_event()
3258 if (ifb->ifb_mode == IF_BOND_MODE_LACP) { in bond_handle_event()
3259 if (ifbond_selection(ifb)) { in bond_handle_event()
3260 event_code = (ifb->ifb_active_lag == NULL) in bond_handle_event()
3264 bond_ifp = ifb->ifb_ifp; in bond_handle_event()
3265 ifb->ifb_last_link_event = event_code; in bond_handle_event()
3267 event_code = (ifb->ifb_active_lag == NULL) in bond_handle_event()
3270 if (event_code != ifb->ifb_last_link_event) { in bond_handle_event()
3273 ifb->ifb_name); in bond_handle_event()
3274 bond_ifp = ifb->ifb_ifp; in bond_handle_event()
3275 ifb->ifb_last_link_event = event_code; in bond_handle_event()
3284 && ifb->ifb_distributing_count != 0) { in bond_handle_event()
3287 && ifb->ifb_distributing_count == 0) { in bond_handle_event()
3290 if (event_code != 0 && event_code != ifb->ifb_last_link_event) { in bond_handle_event()
3291 bond_ifp = ifb->ifb_ifp; in bond_handle_event()
3292 ifb->ifb_last_link_event = event_code; in bond_handle_event()