Lines Matching refs:port

287 aggr_grp_port_hold(aggr_port_t *port)  in aggr_grp_port_hold()  argument
289 aggr_grp_t *grp = port->lp_grp; in aggr_grp_port_hold()
291 AGGR_PORT_REFHOLD(port); in aggr_grp_port_hold()
302 aggr_grp_port_rele(aggr_port_t *port) in aggr_grp_port_rele() argument
304 aggr_grp_t *grp = port->lp_grp; in aggr_grp_port_rele()
310 AGGR_PORT_REFRELE(port); in aggr_grp_port_rele()
337 aggr_grp_attach_port(aggr_grp_t *grp, aggr_port_t *port) in aggr_grp_attach_port() argument
342 ASSERT(MAC_PERIM_HELD(port->lp_mh)); in aggr_grp_attach_port()
344 if (port->lp_state == AGGR_PORT_STATE_ATTACHED) in aggr_grp_attach_port()
351 if (port->lp_ifspeed == 0 || in aggr_grp_attach_port()
352 port->lp_link_state != LINK_STATE_UP || in aggr_grp_attach_port()
353 port->lp_link_duplex != LINK_DUPLEX_FULL) { in aggr_grp_attach_port()
367 grp->lg_ifspeed = port->lp_ifspeed; in aggr_grp_attach_port()
369 } else if (grp->lg_ifspeed != port->lp_ifspeed) { in aggr_grp_attach_port()
396 port->lp_state = AGGR_PORT_STATE_ATTACHED; in aggr_grp_attach_port()
398 aggr_grp_multicst_port(port, B_TRUE); in aggr_grp_attach_port()
407 mac_client_set_flow_cb(port->lp_mch, aggr_recv_cb, port); in aggr_grp_attach_port()
418 aggr_send_port_enable(port); in aggr_grp_attach_port()
420 aggr_lacp_port_attached(port); in aggr_grp_attach_port()
426 aggr_grp_detach_port(aggr_grp_t *grp, aggr_port_t *port) in aggr_grp_detach_port() argument
431 ASSERT(MAC_PERIM_HELD(port->lp_mh)); in aggr_grp_detach_port()
434 if (port->lp_state != AGGR_PORT_STATE_ATTACHED) in aggr_grp_detach_port()
437 mac_client_clear_flow_cb(port->lp_mch); in aggr_grp_detach_port()
439 aggr_grp_multicst_port(port, B_FALSE); in aggr_grp_detach_port()
442 aggr_send_port_disable(port); in aggr_grp_detach_port()
444 aggr_lacp_port_detached(port); in aggr_grp_detach_port()
446 port->lp_state = AGGR_PORT_STATE_STANDBY; in aggr_grp_detach_port()
518 aggr_grp_port_mac_changed(aggr_grp_t *grp, aggr_port_t *port, in aggr_grp_port_mac_changed() argument
522 ASSERT(MAC_PERIM_HELD(port->lp_mh)); in aggr_grp_port_mac_changed()
537 if (grp->lg_mac_addr_port == port) { in aggr_grp_port_mac_changed()
542 bcopy(port->lp_addr, grp->lg_addr, ETHERADDRL); in aggr_grp_port_mac_changed()
549 if (aggr_port_unicst(port) != 0) { in aggr_grp_port_mac_changed()
550 *link_state_changedp = aggr_grp_detach_port(grp, port); in aggr_grp_port_mac_changed()
559 *link_state_changedp = aggr_grp_attach_port(grp, port); in aggr_grp_port_mac_changed()
571 aggr_port_t *port, **cport; in aggr_grp_add_port() local
590 err = aggr_port_create(grp, port_linkid, force, &port); in aggr_grp_add_port()
594 mac_perim_enter_by_mh(port->lp_mh, &mph); in aggr_grp_add_port()
600 *cport = port; in aggr_grp_add_port()
607 port->lp_grp = grp; in aggr_grp_add_port()
613 aggr_lacp_init_port(port); in aggr_grp_add_port()
617 *pp = port; in aggr_grp_add_port()
643 aggr_port_t *port; in aggr_grp_update_default() local
653 port = grp->lg_tx_ports[0]; in aggr_grp_update_default()
654 ASSERT(port->lp_tx_ring_cnt > 0); in aggr_grp_update_default()
655 mac_hwring_set_default(grp->lg_mh, port->lp_pseudo_tx_rings[0]); in aggr_grp_update_default()
663 aggr_add_pseudo_rx_ring(aggr_port_t *port, in aggr_add_pseudo_rx_ring() argument
684 ring->arr_port = port; in aggr_add_pseudo_rx_ring()
704 (void *)port, (mac_resource_handle_t)ring); in aggr_add_pseudo_rx_ring()
745 aggr_add_pseudo_rx_group(aggr_port_t *port, aggr_pseudo_rx_group_t *rx_grp) in aggr_add_pseudo_rx_group() argument
755 ASSERT(MAC_PERIM_HELD(port->lp_grp->lg_mh)); in aggr_add_pseudo_rx_group()
757 mac_perim_enter_by_mh(port->lp_mh, &pmph); in aggr_add_pseudo_rx_group()
770 hw_rh_cnt = mac_hwrings_idx_get(port->lp_mh, g_idx, in aggr_add_pseudo_rx_group()
771 &port->lp_hwghs[g_idx], hw_rh, MAC_RING_TYPE_RX); in aggr_add_pseudo_rx_group()
778 if ((err = aggr_port_addvlan(port, g_idx, avp->av_vid)) != 0) in aggr_add_pseudo_rx_group()
783 if ((err = aggr_port_addmac(port, g_idx, addr->aua_addr)) != 0) in aggr_add_pseudo_rx_group()
788 err = aggr_add_pseudo_rx_ring(port, rx_grp, hw_rh[i]); in aggr_add_pseudo_rx_group()
803 aggr_port_remmac(port, g_idx, a->aua_addr); in aggr_add_pseudo_rx_group()
811 if ((err2 = aggr_port_remvlan(port, g_idx, avp->av_vid)) != 0) { in aggr_add_pseudo_rx_group()
814 mac_client_name(port->lp_mch), err2); in aggr_add_pseudo_rx_group()
818 port->lp_hwghs[g_idx] = NULL; in aggr_add_pseudo_rx_group()
830 aggr_rem_pseudo_rx_group(aggr_port_t *port, aggr_pseudo_rx_group_t *rx_grp) in aggr_rem_pseudo_rx_group() argument
838 ASSERT(MAC_PERIM_HELD(port->lp_grp->lg_mh)); in aggr_rem_pseudo_rx_group()
841 mac_perim_enter_by_mh(port->lp_mh, &pmph); in aggr_rem_pseudo_rx_group()
843 hw_rh_cnt = mac_hwrings_idx_get(port->lp_mh, g_idx, NULL, hw_rh, in aggr_rem_pseudo_rx_group()
850 aggr_port_remmac(port, g_idx, addr->aua_addr); in aggr_rem_pseudo_rx_group()
856 if ((err = aggr_port_remvlan(port, g_idx, avp->av_vid)) != 0) { in aggr_rem_pseudo_rx_group()
859 mac_client_name(port->lp_mch), err); in aggr_rem_pseudo_rx_group()
863 port->lp_hwghs[g_idx] = NULL; in aggr_rem_pseudo_rx_group()
871 aggr_add_pseudo_tx_ring(aggr_port_t *port, in aggr_add_pseudo_tx_ring() argument
879 ASSERT(MAC_PERIM_HELD(port->lp_mh)); in aggr_add_pseudo_tx_ring()
897 ring->atr_port = port; in aggr_add_pseudo_tx_ring()
953 aggr_add_pseudo_tx_group(aggr_port_t *port, aggr_pseudo_tx_group_t *tx_grp, in aggr_add_pseudo_tx_group() argument
956 aggr_grp_t *grp = port->lp_grp; in aggr_add_pseudo_tx_group()
966 mac_perim_enter_by_mh(port->lp_mh, &pmph); in aggr_add_pseudo_tx_group()
971 hw_rh_cnt = mac_hwrings_get(port->lp_mch, NULL, hw_rh, in aggr_add_pseudo_tx_group()
980 port->lp_tx_ring_cnt = 1; in aggr_add_pseudo_tx_group()
982 port->lp_tx_ring_cnt = MIN(hw_rh_cnt, limit); in aggr_add_pseudo_tx_group()
984 port->lp_tx_ring_alloc = port->lp_tx_ring_cnt; in aggr_add_pseudo_tx_group()
985 port->lp_tx_rings = kmem_zalloc((sizeof (mac_ring_handle_t *) * in aggr_add_pseudo_tx_group()
986 port->lp_tx_ring_alloc), KM_SLEEP); in aggr_add_pseudo_tx_group()
987 port->lp_pseudo_tx_rings = kmem_zalloc((sizeof (mac_ring_handle_t *) * in aggr_add_pseudo_tx_group()
988 port->lp_tx_ring_alloc), KM_SLEEP); in aggr_add_pseudo_tx_group()
991 if ((err = aggr_add_pseudo_tx_ring(port, tx_grp, in aggr_add_pseudo_tx_group()
993 port->lp_tx_rings[0] = NULL; in aggr_add_pseudo_tx_group()
994 port->lp_pseudo_tx_rings[0] = pseudo_rh; in aggr_add_pseudo_tx_group()
997 for (i = 0; err == 0 && i < port->lp_tx_ring_cnt; i++) { in aggr_add_pseudo_tx_group()
998 err = aggr_add_pseudo_tx_ring(port, in aggr_add_pseudo_tx_group()
1002 port->lp_tx_rings[i] = hw_rh[i]; in aggr_add_pseudo_tx_group()
1003 port->lp_pseudo_tx_rings[i] = pseudo_rh; in aggr_add_pseudo_tx_group()
1011 port->lp_pseudo_tx_rings[j]); in aggr_add_pseudo_tx_group()
1014 kmem_free(port->lp_tx_rings, in aggr_add_pseudo_tx_group()
1015 (sizeof (mac_ring_handle_t *) * port->lp_tx_ring_alloc)); in aggr_add_pseudo_tx_group()
1016 kmem_free(port->lp_pseudo_tx_rings, in aggr_add_pseudo_tx_group()
1017 (sizeof (mac_ring_handle_t *) * port->lp_tx_ring_alloc)); in aggr_add_pseudo_tx_group()
1018 port->lp_tx_ring_cnt = 0; in aggr_add_pseudo_tx_group()
1019 port->lp_tx_ring_alloc = 0; in aggr_add_pseudo_tx_group()
1021 port->lp_tx_grp_added = B_TRUE; in aggr_add_pseudo_tx_group()
1022 port->lp_tx_notify_mh = mac_client_tx_notify(port->lp_mch, in aggr_add_pseudo_tx_group()
1023 aggr_tx_ring_update, port); in aggr_add_pseudo_tx_group()
1035 aggr_rem_pseudo_tx_group(aggr_port_t *port, aggr_pseudo_tx_group_t *tx_grp) in aggr_rem_pseudo_tx_group() argument
1037 aggr_grp_t *grp = port->lp_grp; in aggr_rem_pseudo_tx_group()
1042 mac_perim_enter_by_mh(port->lp_mh, &pmph); in aggr_rem_pseudo_tx_group()
1044 if (!port->lp_tx_grp_added) in aggr_rem_pseudo_tx_group()
1049 for (i = 0; i < port->lp_tx_ring_cnt; i++) in aggr_rem_pseudo_tx_group()
1050 aggr_rem_pseudo_tx_ring(tx_grp, port->lp_pseudo_tx_rings[i]); in aggr_rem_pseudo_tx_group()
1052 kmem_free(port->lp_tx_rings, in aggr_rem_pseudo_tx_group()
1053 (sizeof (mac_ring_handle_t *) * port->lp_tx_ring_alloc)); in aggr_rem_pseudo_tx_group()
1054 kmem_free(port->lp_pseudo_tx_rings, in aggr_rem_pseudo_tx_group()
1055 (sizeof (mac_ring_handle_t *) * port->lp_tx_ring_alloc)); in aggr_rem_pseudo_tx_group()
1057 port->lp_tx_ring_cnt = 0; in aggr_rem_pseudo_tx_group()
1058 (void) mac_client_tx_notify(port->lp_mch, NULL, port->lp_tx_notify_mh); in aggr_rem_pseudo_tx_group()
1059 port->lp_tx_grp_added = B_FALSE; in aggr_rem_pseudo_tx_group()
1128 aggr_port_t *port; in aggr_grp_balance_tx() local
1135 for (port = grp->lg_ports; port != NULL; port = port->lp_next) { in aggr_grp_balance_tx()
1136 mac_perim_enter_by_mh(port->lp_mh, &mph); in aggr_grp_balance_tx()
1143 if (port->lp_tx_ring_cnt <= tx_ring_limit) { in aggr_grp_balance_tx()
1149 tx_ring_cnt = port->lp_tx_ring_cnt; in aggr_grp_balance_tx()
1150 port->lp_tx_ring_cnt = tx_ring_limit; in aggr_grp_balance_tx()
1155 port->lp_pseudo_tx_rings[i]); in aggr_grp_balance_tx()
1175 aggr_port_t *port; in aggr_grp_add_ports() local
1217 force, &port)) != 0) { in aggr_grp_add_ports()
1221 ASSERT(port != NULL); in aggr_grp_add_ports()
1225 if (!aggr_grp_capab_check(grp, port) || in aggr_grp_add_ports()
1226 !aggr_grp_sdu_check(grp, port) || in aggr_grp_add_ports()
1227 !aggr_grp_margin_check(grp, port)) { in aggr_grp_add_ports()
1236 rc = aggr_add_pseudo_tx_group(port, &grp->lg_tx_group, in aggr_grp_add_ports()
1242 rc = aggr_add_pseudo_rx_group(port, in aggr_grp_add_ports()
1251 mac_perim_enter_by_mh(port->lp_mh, &pmph); in aggr_grp_add_ports()
1254 aggr_port_lacp_set_mode(grp, port); in aggr_grp_add_ports()
1258 rc = aggr_port_start(port); in aggr_grp_add_ports()
1270 if (grp->lg_promisc || port->lp_prom_addr != NULL) { in aggr_grp_add_ports()
1271 rc = aggr_port_promisc(port, B_TRUE); in aggr_grp_add_ports()
1283 if (aggr_port_notify_link(grp, port)) in aggr_grp_add_ports()
1289 aggr_port_init_callbacks(port); in aggr_grp_add_ports()
1305 port = aggr_grp_port_lookup(grp, ports[i].lp_linkid); in aggr_grp_add_ports()
1306 ASSERT(port != NULL); in aggr_grp_add_ports()
1309 mac_perim_enter_by_mh(port->lp_mh, &pmph); in aggr_grp_add_ports()
1310 (void) aggr_port_promisc(port, B_FALSE); in aggr_grp_add_ports()
1311 aggr_port_stop(port); in aggr_grp_add_ports()
1315 aggr_rem_pseudo_tx_group(port, &grp->lg_tx_group); in aggr_grp_add_ports()
1325 aggr_rem_pseudo_rx_group(port, in aggr_grp_add_ports()
1329 (void) aggr_grp_rem_port(grp, port, NULL, NULL); in aggr_grp_add_ports()
1371 aggr_port_t *port = grp->lg_ports; in aggr_grp_modify_common() local
1373 mac_perim_enter_by_mh(port->lp_mh, &pmph); in aggr_grp_modify_common()
1374 bcopy(port->lp_addr, grp->lg_addr, ETHERADDRL); in aggr_grp_modify_common()
1375 grp->lg_mac_addr_port = port; in aggr_grp_modify_common()
1446 aggr_port_t *port; in aggr_grp_create() local
1515 err = aggr_grp_add_port(grp, ports[i].lp_linkid, force, &port); in aggr_grp_create()
1522 for (port = grp->lg_ports; port != NULL; port = port->lp_next) { in aggr_grp_create()
1525 mac_perim_enter_by_mh(port->lp_mh, &mph); in aggr_grp_create()
1526 num_rgroups = mac_get_num_rx_groups(port->lp_mh); in aggr_grp_create()
1646 for (port = grp->lg_ports; port != NULL; port = port->lp_next) { in aggr_grp_create()
1652 err = aggr_add_pseudo_tx_group(port, &grp->lg_tx_group, in aggr_grp_create()
1661 err = aggr_add_pseudo_rx_group(port, in aggr_grp_create()
1669 aggr_rem_pseudo_tx_group(port, in aggr_grp_create()
1673 aggr_rem_pseudo_rx_group(port, in aggr_grp_create()
1682 if (aggr_port_notify_link(grp, port)) in aggr_grp_create()
1688 aggr_port_init_callbacks(port); in aggr_grp_create()
1690 last_attached = port; in aggr_grp_create()
1741 for (port = grp->lg_ports; ; port = port->lp_next) { in aggr_grp_create()
1742 mac_perim_enter_by_mh(port->lp_mh, &pmph); in aggr_grp_create()
1743 (void) aggr_grp_detach_port(grp, port); in aggr_grp_create()
1746 aggr_rem_pseudo_tx_group(port, in aggr_grp_create()
1750 aggr_rem_pseudo_rx_group(port, in aggr_grp_create()
1753 if (port == last_attached) in aggr_grp_create()
1763 port = grp->lg_ports; in aggr_grp_create()
1764 while (port != NULL) { in aggr_grp_create()
1767 cport = port->lp_next; in aggr_grp_create()
1768 aggr_port_delete(port); in aggr_grp_create()
1769 port = cport; in aggr_grp_create()
1785 aggr_port_t *port; in aggr_grp_port_lookup() local
1789 for (port = grp->lg_ports; port != NULL; port = port->lp_next) { in aggr_grp_port_lookup()
1790 if (port->lp_linkid == linkid) in aggr_grp_port_lookup()
1794 return (port); in aggr_grp_port_lookup()
1801 aggr_grp_rem_port(aggr_grp_t *grp, aggr_port_t *port, in aggr_grp_rem_port() argument
1818 for (pport = &grp->lg_ports; *pport != port; in aggr_grp_rem_port()
1825 *pport = port->lp_next; in aggr_grp_rem_port()
1827 mac_perim_enter_by_mh(port->lp_mh, &mph); in aggr_grp_rem_port()
1834 if (!grp->lg_addr_fixed && grp->lg_mac_addr_port == port) { in aggr_grp_rem_port()
1844 link_state_changed = aggr_grp_detach_port(grp, port); in aggr_grp_rem_port()
1857 val = aggr_port_stat(port, stat); in aggr_grp_rem_port()
1858 val -= port->lp_stat[i]; in aggr_grp_rem_port()
1867 val = aggr_port_stat(port, stat); in aggr_grp_rem_port()
1868 val -= port->lp_ether_stat[i]; in aggr_grp_rem_port()
1877 aggr_rem_pseudo_tx_group(port, &grp->lg_tx_group); in aggr_grp_rem_port()
1878 aggr_port_delete(port); in aggr_grp_rem_port()
1906 aggr_port_t *port; in aggr_grp_rem_ports() local
1944 port = aggr_grp_port_lookup(grp, ports[i].lp_linkid); in aggr_grp_rem_ports()
1945 ASSERT(port != NULL); in aggr_grp_rem_ports()
1947 mac_perim_enter_by_mh(port->lp_mh, &pmph); in aggr_grp_rem_ports()
1948 rc = aggr_port_promisc(port, B_FALSE); in aggr_grp_rem_ports()
1953 port = aggr_grp_port_lookup(grp, in aggr_grp_rem_ports()
1955 ASSERT(port != NULL); in aggr_grp_rem_ports()
1962 mac_perim_enter_by_mh(port->lp_mh, &pmph); in aggr_grp_rem_ports()
1963 if (port->lp_started && (grp->lg_promisc || in aggr_grp_rem_ports()
1964 port->lp_prom_addr != NULL)) { in aggr_grp_rem_ports()
1965 (void) aggr_port_promisc(port, B_TRUE); in aggr_grp_rem_ports()
1975 port = aggr_grp_port_lookup(grp, ports[i].lp_linkid); in aggr_grp_rem_ports()
1976 ASSERT(port != NULL); in aggr_grp_rem_ports()
1980 mac_perim_enter_by_mh(port->lp_mh, &pmph); in aggr_grp_rem_ports()
1981 aggr_port_stop(port); in aggr_grp_rem_ports()
1998 aggr_rem_pseudo_rx_group(port, &grp->lg_rx_groups[j]); in aggr_grp_rem_ports()
2001 rc = aggr_grp_rem_port(grp, port, &mac_addr_changed, in aggr_grp_rem_ports()
2024 aggr_port_t *port, *cport; in aggr_grp_delete() local
2094 port = grp->lg_ports; in aggr_grp_delete()
2095 while (port != NULL) { in aggr_grp_delete()
2096 cport = port->lp_next; in aggr_grp_delete()
2097 mac_perim_enter_by_mh(port->lp_mh, &pmph); in aggr_grp_delete()
2099 aggr_port_stop(port); in aggr_grp_delete()
2100 (void) aggr_grp_detach_port(grp, port); in aggr_grp_delete()
2102 aggr_rem_pseudo_tx_group(port, &grp->lg_tx_group); in aggr_grp_delete()
2104 aggr_rem_pseudo_rx_group(port, &grp->lg_rx_groups[i]); in aggr_grp_delete()
2105 aggr_port_delete(port); in aggr_grp_delete()
2106 port = cport; in aggr_grp_delete()
2149 aggr_port_t *port; in aggr_grp_info() local
2180 for (port = grp->lg_ports; port != NULL; port = port->lp_next) { in aggr_grp_info()
2181 mac_perim_enter_by_mh(port->lp_mh, &pmph); in aggr_grp_info()
2182 rc = new_port_fn(fn_arg, port->lp_linkid, port->lp_addr, in aggr_grp_info()
2183 port->lp_state, &port->lp_lacp.ActorOperPortState); in aggr_grp_info()
2206 aggr_port_t *port; in aggr_grp_stat() local
2224 for (port = grp->lg_ports; port != NULL; port = port->lp_next) { in aggr_grp_stat()
2226 *val += aggr_port_stat(port, stat); in aggr_grp_stat()
2233 *val -= port->lp_stat[stat_index]; in aggr_grp_stat()
2237 *val -= port->lp_ether_stat[stat_index]; in aggr_grp_stat()
2252 aggr_port_t *port = rx_ring->arr_port; in aggr_rx_ring_stat() local
2254 *val = mac_stat_get(port->lp_mh, stat); in aggr_rx_ring_stat()
2268 aggr_port_t *port = tx_ring->atr_port; in aggr_tx_ring_stat() local
2270 *val = mac_stat_get(port->lp_mh, stat); in aggr_tx_ring_stat()
2309 aggr_port_t *port; in aggr_m_start() local
2319 for (port = grp->lg_ports; port != NULL; port = port->lp_next) { in aggr_m_start()
2320 mac_perim_enter_by_mh(port->lp_mh, &pmph); in aggr_m_start()
2321 if (aggr_port_start(port) != 0) { in aggr_m_start()
2331 if (grp->lg_promisc || port->lp_prom_addr != NULL) { in aggr_m_start()
2332 if (aggr_port_promisc(port, B_TRUE) != 0) in aggr_m_start()
2333 aggr_port_stop(port); in aggr_m_start()
2348 aggr_port_t *port; in aggr_m_stop() local
2353 for (port = grp->lg_ports; port != NULL; port = port->lp_next) { in aggr_m_stop()
2354 mac_perim_enter_by_mh(port->lp_mh, &pmph); in aggr_m_stop()
2357 (void) aggr_port_promisc(port, B_FALSE); in aggr_m_stop()
2359 aggr_port_stop(port); in aggr_m_stop()
2371 aggr_port_t *port; in aggr_m_promisc() local
2383 for (port = grp->lg_ports; port != NULL; port = port->lp_next) { in aggr_m_promisc()
2386 mac_perim_enter_by_mh(port->lp_mh, &pmph); in aggr_m_promisc()
2387 AGGR_PORT_REFHOLD(port); in aggr_m_promisc()
2388 if (!on && (port->lp_prom_addr == NULL)) in aggr_m_promisc()
2389 err = aggr_port_promisc(port, B_FALSE); in aggr_m_promisc()
2390 else if (on && port->lp_started) in aggr_m_promisc()
2391 err = aggr_port_promisc(port, B_TRUE); in aggr_m_promisc()
2394 if (aggr_grp_detach_port(grp, port)) in aggr_m_promisc()
2404 if (aggr_grp_attach_port(grp, port)) in aggr_m_promisc()
2408 AGGR_PORT_REFRELE(port); in aggr_m_promisc()
2642 aggr_port_t *port = rr_ring->arr_port; in aggr_rx_poll() local
2643 aggr_grp_t *grp = port->lp_grp; in aggr_rx_poll()
2660 aggr_recv_lacp(port, in aggr_rx_poll()
2666 if (!port->lp_collector_enabled) { in aggr_rx_poll()
2683 aggr_port_t *port, *p; in aggr_addmac() local
2712 for (port = grp->lg_ports; port != NULL; port = port->lp_next) in aggr_addmac()
2713 if ((err = aggr_port_addmac(port, idx, mac_addr)) != 0) in aggr_addmac()
2717 for (p = grp->lg_ports; p != port; p = p->lp_next) in aggr_addmac()
2734 aggr_port_t *port; in aggr_remmac() local
2762 for (port = grp->lg_ports; port != NULL; port = port->lp_next) in aggr_remmac()
2763 aggr_port_remmac(port, rx_group->arg_index, mac_addr); in aggr_remmac()
2801 aggr_port_t *port, *p; in aggr_addvlan() local
2834 for (port = aggr->lg_ports; port != NULL; port = port->lp_next) in aggr_addvlan()
2835 if ((err = aggr_port_addvlan(port, idx, vid)) != 0) in aggr_addvlan()
2845 for (p = aggr->lg_ports; p != port; p = p->lp_next) { in aggr_addvlan()
2881 aggr_port_t *port, *p; in aggr_remvlan() local
2915 for (port = aggr->lg_ports; port != NULL; port = port->lp_next) in aggr_remvlan()
2916 if ((err = aggr_port_remvlan(port, idx, vid)) != 0) in aggr_remvlan()
2924 for (p = aggr->lg_ports; p != port; p = p->lp_next) { in aggr_remvlan()
2963 aggr_grp_multicst_port(aggr_port_t *port, boolean_t add) in aggr_grp_multicst_port() argument
2965 aggr_grp_t *grp = port->lp_grp; in aggr_grp_multicst_port()
2967 ASSERT(MAC_PERIM_HELD(port->lp_mh)); in aggr_grp_multicst_port()
2970 if (!port->lp_started || port->lp_state != AGGR_PORT_STATE_ATTACHED) in aggr_grp_multicst_port()
2973 mac_multicast_refresh(grp->lg_mh, aggr_port_multicst, port, add); in aggr_grp_multicst_port()
2980 aggr_port_t *port = NULL, *errport = NULL; in aggr_m_multicst() local
2985 for (port = grp->lg_ports; port != NULL; port = port->lp_next) { in aggr_m_multicst()
2986 if (port->lp_state != AGGR_PORT_STATE_ATTACHED || in aggr_m_multicst()
2987 !port->lp_started) { in aggr_m_multicst()
2990 err = aggr_port_multicst(port, add, addrp); in aggr_m_multicst()
2992 errport = port; in aggr_m_multicst()
3005 for (port = grp->lg_ports; port != errport; in aggr_m_multicst()
3006 port = port->lp_next) { in aggr_m_multicst()
3007 if (port->lp_state != AGGR_PORT_STATE_ATTACHED || in aggr_m_multicst()
3008 !port->lp_started) { in aggr_m_multicst()
3011 (void) aggr_port_multicst(port, B_FALSE, addrp); in aggr_m_multicst()
3040 aggr_port_t *port; in aggr_grp_capab_set() local
3054 for (port = grp->lg_ports; port != NULL; port = port->lp_next) { in aggr_grp_capab_set()
3055 if (!mac_capab_get(port->lp_mh, MAC_CAPAB_HCKSUM, &cksum)) in aggr_grp_capab_set()
3060 !mac_capab_get(port->lp_mh, MAC_CAPAB_NO_NATIVEVLAN, NULL); in aggr_grp_capab_set()
3063 !mac_capab_get(port->lp_mh, MAC_CAPAB_NO_ZCOPY, NULL); in aggr_grp_capab_set()
3066 mac_capab_get(port->lp_mh, MAC_CAPAB_LSO, &cap_lso); in aggr_grp_capab_set()
3082 aggr_grp_capab_check(aggr_grp_t *grp, aggr_port_t *port) in aggr_grp_capab_check() argument
3088 if (((!mac_capab_get(port->lp_mh, MAC_CAPAB_NO_NATIVEVLAN, NULL)) & in aggr_grp_capab_check()
3093 if (((!mac_capab_get(port->lp_mh, MAC_CAPAB_NO_ZCOPY, NULL)) & in aggr_grp_capab_check()
3098 if (!mac_capab_get(port->lp_mh, MAC_CAPAB_HCKSUM, &hcksum_txflags)) { in aggr_grp_capab_check()
3109 if (mac_capab_get(port->lp_mh, MAC_CAPAB_LSO, &cap_lso)) { in aggr_grp_capab_check()
3131 aggr_port_t *port; in aggr_grp_max_sdu() local
3135 for (port = grp->lg_ports; port != NULL; port = port->lp_next) { in aggr_grp_max_sdu()
3138 mac_sdu_get(port->lp_mh, NULL, &port_sdu_max); in aggr_grp_max_sdu()
3152 aggr_grp_sdu_check(aggr_grp_t *grp, aggr_port_t *port) in aggr_grp_sdu_check() argument
3156 mac_sdu_get(port->lp_mh, NULL, &port_sdu_max); in aggr_grp_sdu_check()
3167 aggr_port_t *port; in aggr_grp_max_margin() local
3172 for (port = grp->lg_ports; port != NULL; port = port->lp_next) { in aggr_grp_max_margin()
3173 if (margin > port->lp_margin) in aggr_grp_max_margin()
3174 margin = port->lp_margin; in aggr_grp_max_margin()
3187 aggr_grp_margin_check(aggr_grp_t *grp, aggr_port_t *port) in aggr_grp_margin_check() argument
3189 if (port->lp_margin >= grp->lg_margin) in aggr_grp_margin_check()
3196 if (!mac_margin_update(grp->lg_mh, port->lp_margin)) in aggr_grp_margin_check()
3199 grp->lg_margin = port->lp_margin; in aggr_grp_margin_check()
3207 aggr_set_port_sdu(aggr_grp_t *grp, aggr_port_t *port, uint32_t sdu, in aggr_set_port_sdu() argument
3215 if (port->lp_mah != NULL) { in aggr_set_port_sdu()
3216 (void) mac_unicast_remove(port->lp_mch, port->lp_mah); in aggr_set_port_sdu()
3217 port->lp_mah = NULL; in aggr_set_port_sdu()
3220 err = mac_set_mtu(port->lp_mh, sdu, old_mtu); in aggr_set_port_sdu()
3222 if (removed && (rv = mac_unicast_add(port->lp_mch, NULL, in aggr_set_port_sdu()
3224 &port->lp_mah, 0, &diag)) != 0) { in aggr_set_port_sdu()
3238 mac_perim_enter_by_mh(port->lp_mh, &mph); in aggr_set_port_sdu()
3239 (void) aggr_grp_detach_port(grp, port); in aggr_set_port_sdu()
3243 mac_client_name(port->lp_mch)); in aggr_set_port_sdu()
3252 aggr_port_t *port; in aggr_sdu_update() local
3269 for (port = grp->lg_ports, i = 0; port != NULL && err == 0; in aggr_sdu_update()
3270 port = port->lp_next, i++) { in aggr_sdu_update()
3271 err = aggr_set_port_sdu(grp, port, sdu, mtu + i); in aggr_sdu_update()
3277 for (tmp = grp->lg_ports, i = 0; tmp != port; in aggr_sdu_update()
3435 aggr_port_t *port; in aggr_grp_possible_mtu_range() local
3450 for (port = grp->lg_ports, i = 0; port != NULL; in aggr_grp_possible_mtu_range()
3451 port = port->lp_next, i++) { in aggr_grp_possible_mtu_range()
3457 mac_perim_enter_by_mh(port->lp_mh, &mph); in aggr_grp_possible_mtu_range()
3459 err = mac_prop_info(port->lp_mh, MAC_PROP_MTU, NULL, in aggr_grp_possible_mtu_range()
3471 err = mac_prop_info(port->lp_mh, MAC_PROP_MTU, NULL, in aggr_grp_possible_mtu_range()
3487 if (port != NULL) { in aggr_grp_possible_mtu_range()