Lines Matching refs:ifb
354 static int bond_get_status(ifbond_ref ifb, struct if_bond_req * ibr_p,
358 ifbond_flags_if_detaching(ifbond_ref ifb) in ifbond_flags_if_detaching() argument
360 return (ifb->ifb_flags & IFBF_IF_DETACHING) != 0; in ifbond_flags_if_detaching()
364 ifbond_flags_set_if_detaching(ifbond_ref ifb) in ifbond_flags_set_if_detaching() argument
366 ifb->ifb_flags |= IFBF_IF_DETACHING; in ifbond_flags_set_if_detaching()
371 ifbond_flags_lladdr(ifbond_ref ifb) in ifbond_flags_lladdr() argument
373 return (ifb->ifb_flags & IFBF_LLADDR) != 0; in ifbond_flags_lladdr()
377 ifbond_flags_change_in_progress(ifbond_ref ifb) in ifbond_flags_change_in_progress() argument
379 return (ifb->ifb_flags & IFBF_CHANGE_IN_PROGRESS) != 0; in ifbond_flags_change_in_progress()
383 ifbond_flags_set_change_in_progress(ifbond_ref ifb) in ifbond_flags_set_change_in_progress() argument
385 ifb->ifb_flags |= IFBF_CHANGE_IN_PROGRESS; in ifbond_flags_set_change_in_progress()
390 ifbond_flags_clear_change_in_progress(ifbond_ref ifb) in ifbond_flags_clear_change_in_progress() argument
392 ifb->ifb_flags &= ~IFBF_CHANGE_IN_PROGRESS; in ifbond_flags_clear_change_in_progress()
397 ifbond_flags_promisc(ifbond_ref ifb) in ifbond_flags_promisc() argument
399 return (ifb->ifb_flags & IFBF_PROMISC) != 0; in ifbond_flags_promisc()
403 ifbond_flags_set_promisc(ifbond_ref ifb) in ifbond_flags_set_promisc() argument
405 ifb->ifb_flags |= IFBF_PROMISC; in ifbond_flags_set_promisc()
410 ifbond_flags_clear_promisc(ifbond_ref ifb) in ifbond_flags_clear_promisc() argument
412 ifb->ifb_flags &= ~IFBF_PROMISC; in ifbond_flags_clear_promisc()
699 static int bond_remove_interface(ifbond_ref ifb, struct ifnet * port_ifp);
742 ifbond_retain(ifbond_ref ifb) in ifbond_retain() argument
744 os_ref_retain(&ifb->ifb_retain_count); in ifbond_retain()
748 ifbond_release(ifbond_ref ifb) in ifbond_release() argument
750 if (os_ref_release(&ifb->ifb_retain_count) != 0) { in ifbond_release()
753 BOND_LOG(LOG_DEBUG, BD_DBGF_LIFECYCLE, "%s", ifb->ifb_name); in ifbond_release()
754 if (ifb->ifb_ifma_slow_proto != NULL) { in ifbond_release()
756 "%s: removing multicast", ifb->ifb_name); in ifbond_release()
757 (void) if_delmulti_anon(ifb->ifb_ifma_slow_proto->ifma_ifp, in ifbond_release()
758 ifb->ifb_ifma_slow_proto->ifma_addr); in ifbond_release()
759 IFMA_REMREF(ifb->ifb_ifma_slow_proto); in ifbond_release()
761 kfree_type_counted_by(bondport_ref, ifb->ifb_distributing_max, in ifbond_release()
762 ifb->ifb_distributing_array); in ifbond_release()
763 kfree_type(struct ifbond_s, ifb); in ifbond_release()
787 ifbond_wait(ifbond_ref ifb, const char * msg) in ifbond_wait() argument
792 while (ifbond_flags_change_in_progress(ifb)) { in ifbond_wait()
794 ifb->ifb_name, msg); in ifbond_wait()
796 (void)msleep(ifb, &bond_lck_mtx, PZERO, msg, 0); in ifbond_wait()
799 ifbond_flags_set_change_in_progress(ifb); in ifbond_wait()
802 "%s: %s woke up", ifb->ifb_name, msg); in ifbond_wait()
818 ifbond_signal(ifbond_ref ifb, const char * msg) in ifbond_signal() argument
820 ifbond_flags_clear_change_in_progress(ifb); in ifbond_signal()
821 wakeup((caddr_t)ifb); in ifbond_signal()
823 ifb->ifb_name, msg); in ifbond_signal()
1106 ifbond_ref ifb; in bond_setmulti() local
1112 ifb = ifnet_softc(ifp); in bond_setmulti()
1113 if (ifb == NULL || ifbond_flags_if_detaching(ifb) in bond_setmulti()
1114 || TAILQ_EMPTY(&ifb->ifb_port_list)) { in bond_setmulti()
1118 ifbond_retain(ifb); in bond_setmulti()
1119 ifbond_wait(ifb, "bond_setmulti"); in bond_setmulti()
1121 if (ifbond_flags_if_detaching(ifb)) { in bond_setmulti()
1129 TAILQ_FOREACH(p, &ifb->ifb_port_list, po_port_list) { in bond_setmulti()
1137 ifb->ifb_name, port_ifp->if_xname, error); in bond_setmulti()
1143 ifbond_signal(ifb, __func__); in bond_setmulti()
1145 ifbond_release(ifb); in bond_setmulti()
1161 ifbond_add_slow_proto_multicast(ifbond_ref ifb) in ifbond_add_slow_proto_multicast() argument
1176 error = if_addmulti_anon(ifb->ifb_ifp, SA(&sdl), &ifma); in ifbond_add_slow_proto_multicast()
1178 ifb->ifb_ifma_slow_proto = ifma; in ifbond_add_slow_proto_multicast()
1187 ifbond_ref ifb; in bond_clone_create() local
1196 ifb = kalloc_type(struct ifbond_s, Z_WAITOK_ZERO_NOFAIL); in bond_clone_create()
1197 os_ref_init(&ifb->ifb_retain_count, NULL); in bond_clone_create()
1198 TAILQ_INIT(&ifb->ifb_port_list); in bond_clone_create()
1199 TAILQ_INIT(&ifb->ifb_lag_list); in bond_clone_create()
1200 ifb->ifb_key = unit + 1; in bond_clone_create()
1203 if ((u_int32_t)snprintf(ifb->ifb_name, sizeof(ifb->ifb_name), "%s%d", in bond_clone_create()
1204 ifc->ifc_name, unit) >= sizeof(ifb->ifb_name)) { in bond_clone_create()
1205 ifbond_release(ifb); in bond_clone_create()
1213 bond_init.uniqueid_len = strbuflen(ifb->ifb_name); in bond_clone_create()
1214 bond_init.uniqueid = ifb->ifb_name; in bond_clone_create()
1229 bond_init.softc = ifb; in bond_clone_create()
1233 ifbond_release(ifb); in bond_clone_create()
1237 ifb->ifb_ifp = ifp; in bond_clone_create()
1246 ifbond_release(ifb); in bond_clone_create()
1249 error = ifbond_add_slow_proto_multicast(ifb); in bond_clone_create()
1253 ifb->ifb_name, error); in bond_clone_create()
1260 TAILQ_INSERT_HEAD(&g_bond->ifbond_list, ifb, ifb_bond_list); in bond_clone_create()
1267 bond_remove_all_interfaces(ifbond_ref ifb) in bond_remove_all_interfaces() argument
1277 while ((p = TAILQ_LAST(&ifb->ifb_port_list, port_list)) != NULL) { in bond_remove_all_interfaces()
1278 bond_remove_interface(ifb, p->po_ifp); in bond_remove_all_interfaces()
1284 bond_remove(ifbond_ref ifb) in bond_remove() argument
1287 ifbond_flags_set_if_detaching(ifb); in bond_remove()
1288 TAILQ_REMOVE(&g_bond->ifbond_list, ifb, ifb_bond_list); in bond_remove()
1289 bond_remove_all_interfaces(ifb); in bond_remove()
1309 ifbond_ref ifb; in bond_clone_destroy() local
1312 ifb = ifnet_softc(ifp); in bond_clone_destroy()
1313 if (ifb == NULL || ifnet_type(ifp) != IFT_IEEE8023ADLAG) { in bond_clone_destroy()
1317 if (ifbond_flags_if_detaching(ifb)) { in bond_clone_destroy()
1321 bond_remove(ifb); in bond_clone_destroy()
1544 ifbond_ref ifb; in bond_get_port_ifp() local
1548 ifb = ifnet_softc(ifp); in bond_get_port_ifp()
1549 if (ifb == NULL || ifbond_flags_if_detaching(ifb) in bond_get_port_ifp()
1550 || ifb->ifb_distributing_count == 0) { in bond_get_port_ifp()
1553 port_index = hash % ifb->ifb_distributing_count; in bond_get_port_ifp()
1554 port_ifp = ifb->ifb_distributing_array[port_index]->po_ifp; in bond_get_port_ifp()
1609 ifbond_lookup_port(ifbond_ref ifb, struct ifnet * port_ifp) in ifbond_lookup_port() argument
1612 TAILQ_FOREACH(p, &ifb->ifb_port_list, po_port_list) { in ifbond_lookup_port()
1623 ifbond_ref ifb; in bond_lookup_port() local
1626 TAILQ_FOREACH(ifb, &g_bond->ifbond_list, ifb_bond_list) { in bond_lookup_port()
1627 port = ifbond_lookup_port(ifb, port_ifp); in bond_lookup_port()
1639 ifbond_ref ifb; in bond_receive_lacpdu() local
1657 ifb = p->po_bond; in bond_receive_lacpdu()
1658 if (ifb->ifb_mode != IF_BOND_MODE_LACP) { in bond_receive_lacpdu()
1680 if (ifbond_selection(ifb)) { in bond_receive_lacpdu()
1681 event_code = (ifb->ifb_active_lag == NULL) in bond_receive_lacpdu()
1685 bond_ifp = ifb->ifb_ifp; in bond_receive_lacpdu()
1686 ifb->ifb_last_link_event = event_code; in bond_receive_lacpdu()
1688 event_code = (ifb->ifb_active_lag == NULL) in bond_receive_lacpdu()
1691 if (event_code != ifb->ifb_last_link_event) { in bond_receive_lacpdu()
1694 ifb->ifb_name); in bond_receive_lacpdu()
1695 bond_ifp = ifb->ifb_ifp; in bond_receive_lacpdu()
1696 ifb->ifb_last_link_event = event_code; in bond_receive_lacpdu()
1815 ifbond_ref ifb; in bond_input_packet_list() local
1829 ifb = p->po_bond; in bond_input_packet_list()
1830 ifp = ifb->ifb_ifp; in bond_input_packet_list()
2105 bond_device_mtu(struct ifnet * ifp, ifbond_ref ifb) in bond_device_mtu() argument
2107 return ((int)ifnet_mtu(ifp) > ifb->ifb_altmtu) in bond_device_mtu()
2108 ? (int)ifnet_mtu(ifp) : ifb->ifb_altmtu; in bond_device_mtu()
2120 ifbond_ref ifb; in bond_add_interface() local
2137 ifb = (ifbond_ref)ifnet_softc(ifp); in bond_add_interface()
2138 if (ifb == NULL || ifbond_flags_if_detaching(ifb)) { in bond_add_interface()
2141 return ifb == NULL ? EOPNOTSUPP : EBUSY; in bond_add_interface()
2145 devmtu = bond_device_mtu(ifp, ifb); in bond_add_interface()
2157 ifbond_retain(ifb); in bond_add_interface()
2160 ifbond_wait(ifb, __func__); in bond_add_interface()
2162 if (ifbond_flags_if_detaching(ifb)) { in bond_add_interface()
2187 if (TAILQ_EMPTY(&ifb->ifb_port_list)) { in bond_add_interface()
2190 if (ifbond_flags_lladdr(ifb) == FALSE) { in bond_add_interface()
2206 ifb->ifb_name, bondport_get_name(p), in bond_add_interface()
2216 p->po_bond = ifb; in bond_add_interface()
2223 TAILQ_INSERT_TAIL(&ifb->ifb_port_list, p, po_port_list); in bond_add_interface()
2224 ifb->ifb_port_count++; in bond_add_interface()
2237 new_max = ifb->ifb_port_count; in bond_add_interface()
2252 devmtu = bond_device_mtu(ifp, ifb); in bond_add_interface()
2257 ifb->ifb_name, bondport_get_name(p), devmtu, error); in bond_add_interface()
2267 ifb->ifb_name, bondport_get_name(p), error); in bond_add_interface()
2278 ifb->ifb_name, bondport_get_name(p), error); in bond_add_interface()
2296 ifb->ifb_name, bondport_get_name(p), error); in bond_add_interface()
2302 ifb->ifb_name, bondport_get_name(p), error); in bond_add_interface()
2313 if (ifbond_flags_promisc(ifb)) { in bond_add_interface()
2319 ifb->ifb_name, bondport_get_name(p), error); in bond_add_interface()
2333 if (ifb->ifb_distributing_count) { in bond_add_interface()
2334 bcopy(ifb->ifb_distributing_array, new_array, in bond_add_interface()
2335 sizeof(*new_array) * ifb->ifb_distributing_count); in bond_add_interface()
2337 old_array = ifb->ifb_distributing_array; in bond_add_interface()
2338 old_max = ifb->ifb_distributing_max; in bond_add_interface()
2339 ifb->ifb_distributing_array = new_array; in bond_add_interface()
2340 ifb->ifb_distributing_max = new_max; in bond_add_interface()
2342 if (ifb->ifb_mode == IF_BOND_MODE_LACP) { in bond_add_interface()
2346 if (ifbond_selection(ifb)) { in bond_add_interface()
2347 event_code = (ifb->ifb_active_lag == NULL) in bond_add_interface()
2350 ifb->ifb_last_link_event = event_code; in bond_add_interface()
2355 if (ifb->ifb_distributing_count == 0) { in bond_add_interface()
2356 ifb->ifb_last_link_event = event_code = KEV_DL_LINK_ON; in bond_add_interface()
2365 ifbond_signal(ifb, __func__); in bond_add_interface()
2390 ifb->ifb_name, bondport_get_name(p), error1); in bond_add_interface()
2401 ifb->ifb_name, bondport_get_name(p), error1); in bond_add_interface()
2416 ifb->ifb_name, bondport_get_name(p), in bond_add_interface()
2423 TAILQ_REMOVE(&ifb->ifb_port_list, p, po_port_list); in bond_add_interface()
2424 ifb->ifb_port_count--; in bond_add_interface()
2427 if (TAILQ_EMPTY(&ifb->ifb_port_list)) { in bond_add_interface()
2428 ifb->ifb_altmtu = 0; in bond_add_interface()
2434 ifbond_signal(ifb, __func__); in bond_add_interface()
2436 ifbond_release(ifb); in bond_add_interface()
2442 bond_remove_interface(ifbond_ref ifb, struct ifnet * port_ifp) in bond_remove_interface() argument
2457 ifbond_retain(ifb); in bond_remove_interface()
2458 ifbond_wait(ifb, "bond_remove_interface"); in bond_remove_interface()
2460 p = ifbond_lookup_port(ifb, port_ifp); in bond_remove_interface()
2470 if (ifb->ifb_mode == IF_BOND_MODE_LACP) { in bond_remove_interface()
2486 TAILQ_REMOVE(&ifb->ifb_port_list, p, po_port_list); in bond_remove_interface()
2487 ifb->ifb_port_count--; in bond_remove_interface()
2489 ifp = ifb->ifb_ifp; in bond_remove_interface()
2490 head_port = TAILQ_FIRST(&ifb->ifb_port_list); in bond_remove_interface()
2493 if (ifbond_flags_lladdr(ifb) == FALSE) { in bond_remove_interface()
2498 ifb->ifb_altmtu = 0; in bond_remove_interface()
2499 } else if (ifbond_flags_lladdr(ifb) == FALSE in bond_remove_interface()
2505 if (ifb->ifb_mode == IF_BOND_MODE_LACP) { in bond_remove_interface()
2506 if (ifbond_selection(ifb) || active_lag) { in bond_remove_interface()
2507 event_code = (ifb->ifb_active_lag == NULL) in bond_remove_interface()
2510 ifb->ifb_last_link_event = event_code; in bond_remove_interface()
2516 if (was_distributing && ifb->ifb_distributing_count == 0) { in bond_remove_interface()
2517 ifb->ifb_last_link_event = event_code = KEV_DL_LINK_OFF; in bond_remove_interface()
2536 TAILQ_FOREACH(scan_port, &ifb->ifb_port_list, po_port_list) { in bond_remove_interface()
2549 ifb->ifb_name, bondport_get_name(p), in bond_remove_interface()
2562 ifb->ifb_name, bondport_get_name(p), error); in bond_remove_interface()
2573 ifb->ifb_name, bondport_get_name(p), error); in bond_remove_interface()
2584 ifb->ifb_name, bondport_get_name(p), error); in bond_remove_interface()
2593 ifb->ifb_name, bondport_get_name(p), in bond_remove_interface()
2609 ifbond_release(ifb); in bond_remove_interface()
2612 ifbond_signal(ifb, __func__); in bond_remove_interface()
2613 ifbond_release(ifb); in bond_remove_interface()
2618 bond_set_lacp_mode(ifbond_ref ifb) in bond_set_lacp_mode() argument
2622 TAILQ_FOREACH(p, &ifb->ifb_port_list, po_port_list) { in bond_set_lacp_mode()
2630 bond_set_static_mode(ifbond_ref ifb) in bond_set_static_mode() argument
2635 TAILQ_FOREACH(p, &ifb->ifb_port_list, po_port_list) { in bond_set_static_mode()
2669 ifbond_ref ifb; in bond_set_mode() local
2672 ifb = (ifbond_ref)ifnet_softc(ifp); in bond_set_mode()
2673 if (ifb == NULL || ifbond_flags_if_detaching(ifb)) { in bond_set_mode()
2675 return (ifb == NULL) ? EOPNOTSUPP : EBUSY; in bond_set_mode()
2677 if (ifb->ifb_mode == mode) { in bond_set_mode()
2682 ifbond_retain(ifb); in bond_set_mode()
2683 ifbond_wait(ifb, "bond_set_mode"); in bond_set_mode()
2686 if (ifb->ifb_mode == mode) { in bond_set_mode()
2691 ifb->ifb_mode = mode; in bond_set_mode()
2693 bond_set_lacp_mode(ifb); in bond_set_mode()
2696 if (ifbond_selection(ifb)) { in bond_set_mode()
2697 event_code = (ifb->ifb_active_lag == NULL) in bond_set_mode()
2702 bond_set_static_mode(ifb); in bond_set_mode()
2703 event_code = (ifb->ifb_distributing_count == 0) in bond_set_mode()
2707 ifb->ifb_last_link_event = event_code; in bond_set_mode()
2710 ifbond_signal(ifb, __func__); in bond_set_mode()
2712 ifbond_release(ifb); in bond_set_mode()
2721 bond_get_status(ifbond_ref ifb, struct if_bond_req * ibr_p, user_addr_t datap) in bond_get_status() argument
2734 ibsr->ibsr_key = ifb->ifb_key; in bond_get_status()
2735 ibsr->ibsr_mode = ifb->ifb_mode; in bond_get_status()
2736 ibsr->ibsr_total = ifb->ifb_port_count; in bond_get_status()
2747 count = (ifb->ifb_port_count < ibsr->ibsr_count) in bond_get_status()
2748 ? ifb->ifb_port_count : ibsr->ibsr_count; in bond_get_status()
2749 TAILQ_FOREACH(port, &ifb->ifb_port_list, po_port_list) { in bond_get_status()
2759 if (ifb->ifb_mode == IF_BOND_MODE_LACP) { in bond_get_status()
2796 ifbond_ref ifb; in bond_set_promisc() local
2805 ifb = (ifbond_ref)ifnet_softc(ifp); in bond_set_promisc()
2806 if (ifb == NULL) { in bond_set_promisc()
2811 if (is_promisc == ifbond_flags_promisc(ifb)) { in bond_set_promisc()
2816 ifbond_retain(ifb); in bond_set_promisc()
2817 ifbond_wait(ifb, __func__); in bond_set_promisc()
2818 if (ifbond_flags_if_detaching(ifb)) { in bond_set_promisc()
2827 TAILQ_FOREACH(p, &ifb->ifb_port_list, po_port_list) { in bond_set_promisc()
2841 ifb->ifb_name, port_ifp->if_xname, val, error); in bond_set_promisc()
2846 ifb->ifb_name, port_ifp->if_xname, val); in bond_set_promisc()
2863 ifbond_flags_set_promisc(ifb); in bond_set_promisc()
2865 ifbond_flags_clear_promisc(ifb); in bond_set_promisc()
2869 ifbond_signal(ifb, __func__); in bond_set_promisc()
2871 ifbond_release(ifb); in bond_set_promisc()
2878 bond_get_mtu_values(ifbond_ref ifb, int * ret_min, int * ret_max) in bond_get_mtu_values() argument
2884 if (TAILQ_FIRST(&ifb->ifb_port_list) != NULL) { in bond_get_mtu_values()
2887 TAILQ_FOREACH(p, &ifb->ifb_port_list, po_port_list) { in bond_get_mtu_values()
2903 bond_set_mtu_on_ports(ifbond_ref ifb, int mtu) in bond_set_mtu_on_ports() argument
2908 TAILQ_FOREACH(p, &ifb->ifb_port_list, po_port_list) { in bond_set_mtu_on_ports()
2913 ifb->ifb_name, bondport_get_name(p), error); in bond_set_mtu_on_ports()
2924 ifbond_ref ifb; in bond_set_mtu() local
2931 ifb = (ifbond_ref)ifnet_softc(ifp); in bond_set_mtu()
2932 if (ifb == NULL || ifbond_flags_if_detaching(ifb)) { in bond_set_mtu()
2933 error = (ifb == NULL) ? EOPNOTSUPP : EBUSY; in bond_set_mtu()
2936 ifbond_retain(ifb); in bond_set_mtu()
2937 ifbond_wait(ifb, "bond_set_mtu"); in bond_set_mtu()
2940 if (ifnet_softc(ifp) == NULL || ifbond_flags_if_detaching(ifb)) { in bond_set_mtu()
2944 bond_get_mtu_values(ifb, &mtu_min, &mtu_max); in bond_set_mtu()
2957 new_max = (mtu > ifb->ifb_altmtu) ? mtu : ifb->ifb_altmtu; in bond_set_mtu()
2959 old_max = ((int)ifnet_mtu(ifp) > ifb->ifb_altmtu) in bond_set_mtu()
2960 ? (int)ifnet_mtu(ifp) : ifb->ifb_altmtu; in bond_set_mtu()
2964 error = bond_set_mtu_on_ports(ifb, new_max); in bond_set_mtu()
2967 (void)bond_set_mtu_on_ports(ifb, old_max); in bond_set_mtu()
2973 ifb->ifb_altmtu = mtu; in bond_set_mtu()
2980 ifbond_signal(ifb, __func__); in bond_set_mtu()
2981 ifbond_release(ifb); in bond_set_mtu()
2994 ifbond_ref ifb; in bond_ioctl() local
3014 ifb = (ifbond_ref)ifnet_softc(ifp); in bond_ioctl()
3015 if (ifb == NULL || ifbond_flags_if_detaching(ifb)) { in bond_ioctl()
3017 return ifb == NULL ? EOPNOTSUPP : EBUSY; in bond_ioctl()
3025 if (ifb->ifb_mode == IF_BOND_MODE_LACP) { in bond_ioctl()
3026 if (ifb->ifb_active_lag != NULL) { in bond_ioctl()
3027 ifmr->ifm_active = ifb->ifb_active_lag->lag_active_media; in bond_ioctl()
3030 } else if (ifb->ifb_distributing_count > 0) { in bond_ioctl()
3032 = ifb->ifb_distributing_array[0]->po_media_info.mi_active; in bond_ioctl()
3053 ifb = (ifbond_ref)ifnet_softc(ifp); in bond_ioctl()
3054 if (ifb == NULL || ifbond_flags_if_detaching(ifb)) { in bond_ioctl()
3056 error = (ifb == NULL) ? EOPNOTSUPP : EBUSY; in bond_ioctl()
3059 ifr->ifr_devmtu.ifdm_current = bond_device_mtu(ifp, ifb); in bond_ioctl()
3060 bond_get_mtu_values(ifb, &ifr->ifr_devmtu.ifdm_min, in bond_ioctl()
3067 ifb = (ifbond_ref)ifnet_softc(ifp); in bond_ioctl()
3068 if (ifb == NULL || ifbond_flags_if_detaching(ifb)) { in bond_ioctl()
3070 error = (ifb == NULL) ? EOPNOTSUPP : EBUSY; in bond_ioctl()
3073 ifr->ifr_mtu = ifb->ifb_altmtu; in bond_ioctl()
3120 ifb = (ifbond_ref)ifnet_softc(ifp); in bond_ioctl()
3121 if (ifb == NULL || ifbond_flags_if_detaching(ifb)) { in bond_ioctl()
3123 return ifb == NULL ? EOPNOTSUPP : EBUSY; in bond_ioctl()
3125 error = bond_remove_interface(ifb, port_ifp); in bond_ioctl()
3163 ifb = (ifbond_ref)ifnet_softc(ifp); in bond_ioctl()
3164 if (ifb == NULL || ifbond_flags_if_detaching(ifb)) { in bond_ioctl()
3166 return ifb == NULL ? EOPNOTSUPP : EBUSY; in bond_ioctl()
3170 error = bond_get_status(ifb, &ibr, user_addr); in bond_ioctl()
3198 ifbond_ref ifb; in bond_if_free() local
3204 ifb = (ifbond_ref)ifnet_softc(ifp); in bond_if_free()
3205 if (ifb == NULL) { in bond_if_free()
3209 ifbond_release(ifb); in bond_if_free()
3219 ifbond_ref ifb; in bond_handle_event() local
3241 ifb = p->po_bond; in bond_handle_event()
3242 old_distributing_count = ifb->ifb_distributing_count; in bond_handle_event()
3246 bond_remove_interface(ifb, p->po_ifp); in bond_handle_event()
3257 if (ifb->ifb_mode == IF_BOND_MODE_LACP) { in bond_handle_event()
3258 if (ifbond_selection(ifb)) { in bond_handle_event()
3259 event_code = (ifb->ifb_active_lag == NULL) in bond_handle_event()
3263 bond_ifp = ifb->ifb_ifp; in bond_handle_event()
3264 ifb->ifb_last_link_event = event_code; in bond_handle_event()
3266 event_code = (ifb->ifb_active_lag == NULL) in bond_handle_event()
3269 if (event_code != ifb->ifb_last_link_event) { in bond_handle_event()
3272 ifb->ifb_name); in bond_handle_event()
3273 bond_ifp = ifb->ifb_ifp; in bond_handle_event()
3274 ifb->ifb_last_link_event = event_code; in bond_handle_event()
3283 && ifb->ifb_distributing_count != 0) { in bond_handle_event()
3286 && ifb->ifb_distributing_count == 0) { in bond_handle_event()
3289 if (event_code != 0 && event_code != ifb->ifb_last_link_event) { in bond_handle_event()
3290 bond_ifp = ifb->ifb_ifp; in bond_handle_event()
3291 ifb->ifb_last_link_event = event_code; in bond_handle_event()