Lines Matching refs:macinfo

215 #define	VLAN_CAPABLE(macinfo) \  argument
216 ((macinfo)->gldm_type == DL_ETHER && \
217 (macinfo)->gldm_send_tagged != NULL)
456 gld_mac_info_t *macinfo; in gld_mac_alloc() local
458 macinfo = kmem_zalloc(sizeof (gld_mac_info_t) + GLD_MAC_RESERVED, in gld_mac_alloc()
465 macinfo->gldm_driver_version = GLD_VERSION_200; in gld_mac_alloc()
471 macinfo->gldm_GLD_version = GLD_VERSION; in gld_mac_alloc()
473 return (macinfo); in gld_mac_alloc()
485 gld_mac_free(gld_mac_info_t *macinfo) in gld_mac_free() argument
487 ASSERT(macinfo); in gld_mac_free()
488 ASSERT(macinfo->gldm_GLD_version == GLD_VERSION); in gld_mac_free()
494 ASSERT(!GLDM_LOCK_INITED(macinfo) || in gld_mac_free()
495 (macinfo->gldm_GLD_flags & GLD_UNREGISTERED)); in gld_mac_free()
497 GLDM_LOCK_DESTROY(macinfo); in gld_mac_free()
499 kmem_free(macinfo, sizeof (gld_mac_info_t) + GLD_MAC_RESERVED); in gld_mac_free()
511 gld_register(dev_info_t *devinfo, char *devname, gld_mac_info_t *macinfo) in gld_register() argument
522 ASSERT(macinfo != NULL); in gld_register()
524 if (macinfo->gldm_driver_version != GLD_VERSION) in gld_register()
527 mediatype = macinfo->gldm_type; in gld_register()
535 ASSERT(macinfo->gldm_reset != NULL); in gld_register()
536 ASSERT(macinfo->gldm_start != NULL); in gld_register()
537 ASSERT(macinfo->gldm_stop != NULL); in gld_register()
538 ASSERT(macinfo->gldm_set_mac_addr != NULL); in gld_register()
539 ASSERT(macinfo->gldm_set_promiscuous != NULL); in gld_register()
540 ASSERT(macinfo->gldm_send != NULL); in gld_register()
542 ASSERT(macinfo->gldm_maxpkt >= macinfo->gldm_minpkt); in gld_register()
543 ASSERT(macinfo->gldm_GLD_version == GLD_VERSION); in gld_register()
544 ASSERT(macinfo->gldm_broadcast_addr != NULL); in gld_register()
545 ASSERT(macinfo->gldm_vendor_addr != NULL); in gld_register()
546 ASSERT(macinfo->gldm_ident != NULL); in gld_register()
548 if (macinfo->gldm_addrlen > GLD_MAX_ADDRLEN) { in gld_register()
550 "ported", devname, macinfo->gldm_addrlen, GLD_MAX_ADDRLEN); in gld_register()
557 if (macinfo->gldm_saplen != -2) { in gld_register()
559 "not supported", devname, macinfo->gldm_saplen); in gld_register()
565 macinfo->gldm_options |= GLDOPT_FAST_RECV; in gld_register()
604 glddev->gld_type = macinfo->gldm_type; in gld_register()
605 glddev->gld_minsdu = macinfo->gldm_minpkt; in gld_register()
606 glddev->gld_saplen = macinfo->gldm_saplen; in gld_register()
607 glddev->gld_addrlen = macinfo->gldm_addrlen; in gld_register()
608 glddev->gld_broadcast = kmem_zalloc(macinfo->gldm_addrlen, in gld_register()
610 bcopy(macinfo->gldm_broadcast_addr, in gld_register()
611 glddev->gld_broadcast, macinfo->gldm_addrlen); in gld_register()
612 glddev->gld_maxsdu = macinfo->gldm_maxpkt; in gld_register()
632 macinfo->gldm_mac_pvt = kmem_zalloc(sizeof (gld_mac_pvt_t), in gld_register()
634 ((gld_mac_pvt_t *)macinfo->gldm_mac_pvt)->interfacep = ifp = in gld_register()
648 if (macinfo->gldm_maxpkt > ifp->mtu_size) { in gld_register()
657 if (VLAN_CAPABLE(macinfo) && (macinfo->gldm_margin == 0)) in gld_register()
658 macinfo->gldm_margin = VTAG_SIZE; in gld_register()
664 if (macinfo->gldm_mdt_pre != NULL) { in gld_register()
674 if ((macinfo->gldm_mdt_send == NULL) || in gld_register()
675 (macinfo->gldm_mdt_post == NULL)) { in gld_register()
680 macinfo->gldm_options |= GLDOPT_MDT; in gld_register()
683 mac_pvt = (gld_mac_pvt_t *)macinfo->gldm_mac_pvt; in gld_register()
686 mac_pvt->curr_macaddr = kmem_zalloc(macinfo->gldm_addrlen, KM_SLEEP); in gld_register()
693 bcopy(macinfo->gldm_vendor_addr, mac_pvt->curr_macaddr, in gld_register()
694 macinfo->gldm_addrlen); in gld_register()
703 if (macinfo->gldm_capabilities & GLD_CAP_LINKSTATE) in gld_register()
707 GLDM_LOCK_INIT(macinfo); in gld_register()
709 ddi_set_driver_private(devinfo, macinfo); in gld_register()
717 if (macinfo->gldm_ppa != ddi_get_instance(devinfo)) in gld_register()
720 macinfo->gldm_ppa); in gld_register()
745 macinfo->gldm_ppa); in gld_register()
747 GLD_STYLE1_PPA_TO_MINOR(macinfo->gldm_ppa), DDI_NT_NET, in gld_register()
755 gldinsque(macinfo, glddev->gld_mac_prev); in gld_register()
770 if (gld_initstats(macinfo) != GLD_SUCCESS) { in gld_register()
772 gldremque(macinfo); in gld_register()
783 GLDM_LOCK(macinfo, RW_WRITER); in gld_register()
784 macinfo->gldm_GLD_flags |= GLD_MAC_READY; in gld_register()
785 GLDM_UNLOCK(macinfo); in gld_register()
788 if (macinfo->gldm_addrlen == sizeof (struct ether_addr)) in gld_register()
790 (struct ether_addr *)macinfo->gldm_vendor_addr, NULL); in gld_register()
795 macinfo->gldm_ppa, macinfo->gldm_ident, in gld_register()
797 gld_macaddr_sprintf(pbuf, macinfo->gldm_vendor_addr, in gld_register()
798 macinfo->gldm_addrlen)); in gld_register()
805 GLDM_LOCK_DESTROY(macinfo); in gld_register()
807 kmem_free(mac_pvt->curr_macaddr, macinfo->gldm_addrlen); in gld_register()
810 kmem_free(macinfo->gldm_mac_pvt, sizeof (gld_mac_pvt_t)); in gld_register()
811 macinfo->gldm_mac_pvt = NULL; in gld_register()
856 gld_unregister(gld_mac_info_t *macinfo) in gld_unregister() argument
858 gld_mac_pvt_t *mac_pvt = (gld_mac_pvt_t *)macinfo->gldm_mac_pvt; in gld_unregister()
864 GLDM_LOCK(macinfo, RW_WRITER); in gld_unregister()
867 GLDM_UNLOCK(macinfo); in gld_unregister()
887 gldremque(macinfo); in gld_unregister()
890 macinfo->gldm_GLD_flags |= GLD_UNREGISTERED; in gld_unregister()
892 GLDM_UNLOCK(macinfo); in gld_unregister()
895 ifp = ((gld_mac_pvt_t *)macinfo->gldm_mac_pvt)->interfacep; in gld_unregister()
896 (*ifp->uninit)(macinfo); in gld_unregister()
901 ASSERT(GLDM_LOCK_INITED(macinfo)); in gld_unregister()
902 kmem_free(mac_pvt->curr_macaddr, macinfo->gldm_addrlen); in gld_unregister()
907 kmem_free(macinfo->gldm_mac_pvt, sizeof (gld_mac_pvt_t)); in gld_unregister()
908 macinfo->gldm_mac_pvt = (caddr_t)NULL; in gld_unregister()
930 ddi_remove_minor_node(macinfo->gldm_devinfo, NULL); in gld_unregister()
947 gld_initstats(gld_mac_info_t *macinfo) in gld_initstats() argument
949 gld_mac_pvt_t *mac_pvt = (gld_mac_pvt_t *)macinfo->gldm_mac_pvt; in gld_initstats()
957 if ((ksp = kstat_create(glddev->gld_name, macinfo->gldm_ppa, in gld_initstats()
962 glddev->gld_name, macinfo->gldm_ppa); in gld_initstats()
968 ksp->ks_private = (void *)macinfo; in gld_initstats()
1004 ifp = ((gld_mac_pvt_t *)macinfo->gldm_mac_pvt)->interfacep; in gld_initstats()
1006 (*ifp->init)(macinfo); in gld_initstats()
1017 gld_mac_info_t *macinfo; in gld_update_kstat() local
1025 macinfo = (gld_mac_info_t *)ksp->ks_private; in gld_update_kstat()
1026 ASSERT(macinfo != NULL); in gld_update_kstat()
1028 GLDM_LOCK(macinfo, RW_WRITER); in gld_update_kstat()
1030 if (!(macinfo->gldm_GLD_flags & GLD_MAC_READY)) { in gld_update_kstat()
1031 GLDM_UNLOCK(macinfo); in gld_update_kstat()
1035 if (macinfo->gldm_GLD_flags & GLD_UNREGISTERED) { in gld_update_kstat()
1036 GLDM_UNLOCK(macinfo); in gld_update_kstat()
1040 mac_pvt = (gld_mac_pvt_t *)macinfo->gldm_mac_pvt; in gld_update_kstat()
1045 if (macinfo->gldm_get_stats) in gld_update_kstat()
1046 (void) (*macinfo->gldm_get_stats)(macinfo, stats); in gld_update_kstat()
1090 switch (macinfo->gldm_type) { in gld_update_kstat()
1157 GLDM_UNLOCK(macinfo); in gld_update_kstat()
1162 gld_sr_dump(macinfo); in gld_update_kstat()
1239 gld_mac_info_t *macinfo; in gld_update_vlan_kstat() local
1251 macinfo = vlan->gldv_mac; in gld_update_vlan_kstat()
1252 GLDM_LOCK(macinfo, RW_WRITER); in gld_update_vlan_kstat()
1254 mac_pvt = (gld_mac_pvt_t *)macinfo->gldm_mac_pvt; in gld_update_vlan_kstat()
1288 GLDM_UNLOCK(macinfo); in gld_update_vlan_kstat()
1429 gld_mac_info_t *macinfo; in gld_open() local
1516 for (macinfo = glddev->gld_mac_next; in gld_open()
1517 macinfo != (gld_mac_info_t *)(&glddev->gld_mac_next); in gld_open()
1518 macinfo = macinfo->gldm_next) { in gld_open()
1519 ASSERT(macinfo != NULL); in gld_open()
1520 if (macinfo->gldm_ppa != ppa) in gld_open()
1523 if (!(macinfo->gldm_GLD_flags & GLD_MAC_READY)) in gld_open()
1529 GLDM_LOCK(macinfo, RW_WRITER); in gld_open()
1531 gld->gld_mac_info = macinfo; in gld_open()
1533 if (macinfo->gldm_send_tagged != NULL) in gld_open()
1534 gld->gld_send = macinfo->gldm_send_tagged; in gld_open()
1536 gld->gld_send = macinfo->gldm_send; in gld_open()
1541 if ((vlan = gld_get_vlan(macinfo, VLAN_VID_NONE)) == NULL) { in gld_open()
1542 GLDM_UNLOCK(macinfo); in gld_open()
1548 mac_pvt = (gld_mac_pvt_t *)macinfo->gldm_mac_pvt; in gld_open()
1550 if (gld_start_mac(macinfo) != GLD_SUCCESS) { in gld_open()
1552 GLDM_UNLOCK(macinfo); in gld_open()
1565 GLDM_UNLOCK(macinfo); in gld_open()
1841 gld_mac_info_t *macinfo; in gld_wsrv() local
1859 macinfo = gld->gld_mac_info; in gld_wsrv()
1878 if (macinfo == NULL) { in gld_wsrv()
1931 if (macinfo == NULL) { in gld_wsrv()
1936 if (macinfo->gldm_mctl != NULL) { in gld_wsrv()
1937 GLDM_LOCK(macinfo, RW_WRITER); in gld_wsrv()
1938 (void) (*macinfo->gldm_mctl) (macinfo, q, mp); in gld_wsrv()
1939 GLDM_UNLOCK(macinfo); in gld_wsrv()
2043 gld_mac_info_t *macinfo; in gld_start() local
2054 macinfo = gld->gld_mac_info; in gld_start()
2055 mac_pvt = (gld_mac_pvt_t *)macinfo->gldm_mac_pvt; in gld_start()
2074 if ((*ifp->interpreter)(macinfo, mp, &pktinfo, GLD_TX) != 0) { in gld_start()
2120 tmp_vlan = gld_find_vlan(macinfo, raw_vid); in gld_start()
2134 ((macinfo->gldm_type == DL_ETHER) && (upri != 0))) { in gld_start()
2159 if (macinfo->gldm_capabilities & GLD_CAP_ZEROCOPY) in gld_start()
2168 macinfo->gldm_maxpkt) { in gld_start()
2177 macinfo->gldm_maxpkt); in gld_start()
2182 rc = (*gld->gld_send)(macinfo, mp, vtag); in gld_start()
2214 GLDM_LOCK(macinfo, RW_WRITER); in gld_start()
2215 gld_precv(macinfo, nmp, vtag, stats); in gld_start()
2216 GLDM_UNLOCK(macinfo); in gld_start()
2242 gld_mac_info_t *macinfo = gld->gld_mac_info; in gld_start_mdt() local
2243 gld_mac_pvt_t *mac_pvt = (gld_mac_pvt_t *)macinfo->gldm_mac_pvt; in gld_start_mdt()
2310 (void) (*ifp->interpreter_mdt)(macinfo, mp, NULL, &pktinfo, in gld_start_mdt()
2313 numpacks = (*macinfo->gldm_mdt_pre)(macinfo, mp, &cookie); in gld_start_mdt()
2330 (void) (*ifp->interpreter_mdt)(macinfo, NULL, in gld_start_mdt()
2341 GLDM_LOCK(macinfo, RW_WRITER); in gld_start_mdt()
2342 gld_precv_mdt(macinfo, vlan, mp, in gld_start_mdt()
2344 GLDM_UNLOCK(macinfo); in gld_start_mdt()
2350 (*macinfo->gldm_mdt_send)(macinfo, cookie, in gld_start_mdt()
2363 (*macinfo->gldm_mdt_post)(macinfo, mp, cookie); in gld_start_mdt()
2407 (void) (*ifp->interpreter_mdt)(macinfo, NULL, in gld_start_mdt()
2437 gld_intr(gld_mac_info_t *macinfo) in gld_intr() argument
2439 ASSERT(macinfo != NULL); in gld_intr()
2441 if (!(macinfo->gldm_GLD_flags & GLD_MAC_READY)) in gld_intr()
2444 return ((*macinfo->gldm_intr)(macinfo)); in gld_intr()
2455 gld_sched(gld_mac_info_t *macinfo) in gld_sched() argument
2462 ASSERT(macinfo != NULL); in gld_sched()
2464 GLDM_LOCK(macinfo, RW_WRITER); in gld_sched()
2466 if (macinfo->gldm_GLD_flags & GLD_UNREGISTERED) { in gld_sched()
2468 GLDM_UNLOCK(macinfo); in gld_sched()
2472 mac_pvt = (gld_mac_pvt_t *)macinfo->gldm_mac_pvt; in gld_sched()
2480 ASSERT(gld->gld_mac_info == macinfo); in gld_sched()
2491 GLDM_UNLOCK(macinfo); in gld_sched()
2502 gld_precv(gld_mac_info_t *macinfo, mblk_t *mp, uint32_t vtag, in gld_precv() argument
2509 ASSERT(GLDM_LOCK_HELD_WRITE(macinfo)); in gld_precv()
2511 mac_pvt = (gld_mac_pvt_t *)macinfo->gldm_mac_pvt; in gld_precv()
2517 if ((*ifp->interpreter)(macinfo, mp, &pktinfo, GLD_RXLOOP) != 0) { in gld_precv()
2536 gld_sendup(macinfo, &pktinfo, mp, gld_paccept); in gld_precv()
2546 gld_precv_mdt(gld_mac_info_t *macinfo, gld_vlan_t *vlan, mblk_t *mp, in gld_precv_mdt() argument
2550 gld_mac_pvt_t *mac_pvt = (gld_mac_pvt_t *)macinfo->gldm_mac_pvt; in gld_precv_mdt()
2553 ASSERT(GLDM_LOCK_HELD_WRITE(macinfo)); in gld_precv_mdt()
2558 (void) (*ifp->interpreter_mdt)(macinfo, mp, NULL, pktinfo, in gld_precv_mdt()
2561 gld_sendup(macinfo, pktinfo, adjmp, gld_paccept); in gld_precv_mdt()
2572 gld_recv(gld_mac_info_t *macinfo, mblk_t *mp) in gld_recv() argument
2574 gld_recv_tagged(macinfo, mp, VLAN_VTAG_NONE); in gld_recv()
2578 gld_recv_tagged(gld_mac_info_t *macinfo, mblk_t *mp, uint32_t vtag) in gld_recv_tagged() argument
2590 ASSERT(macinfo != NULL); in gld_recv_tagged()
2593 GLDM_LOCK(macinfo, RW_READER); in gld_recv_tagged()
2595 if (macinfo->gldm_GLD_flags & GLD_UNREGISTERED) { in gld_recv_tagged()
2610 mac_pvt = (gld_mac_pvt_t *)macinfo->gldm_mac_pvt; in gld_recv_tagged()
2614 vlan0 = gld_find_vlan(macinfo, VLAN_VID_NONE); in gld_recv_tagged()
2625 vlann = gld_find_vlan(macinfo, vid); in gld_recv_tagged()
2633 err = (*ifp->interpreter)(macinfo, mp, &pktinfo, GLD_RXQUICK); in gld_recv_tagged()
2691 if ((*ifp->interpreter)(macinfo, mp, &pktinfo, GLD_RX) != 0) { in gld_recv_tagged()
2722 macinfo->gldm_addrlen), gld_macaddr_sprintf(pbuf2, in gld_recv_tagged()
2723 pktinfo.dhost, macinfo->gldm_addrlen)); in gld_recv_tagged()
2737 gld_sendup(macinfo, &pktinfo, mp, gld_accept); in gld_recv_tagged()
2740 GLDM_UNLOCK(macinfo); in gld_recv_tagged()
2854 gld_sendup(gld_mac_info_t *macinfo, pktinfo_t *pktinfo, in gld_sendup() argument
2867 (void *)macinfo); in gld_sendup()
2871 ASSERT(macinfo != NULL); in gld_sendup()
2873 ASSERT(GLDM_LOCK_HELD(macinfo)); in gld_sendup()
2882 stats0 = ((gld_mac_pvt_t *)macinfo->gldm_mac_pvt)->statistics; in gld_sendup()
2883 vlan0 = gld_find_vlan(macinfo, VLAN_VID_NONE); in gld_sendup()
2887 vlann = gld_find_vlan(macinfo, pktinfo->vid); in gld_sendup()
2902 if (macinfo->gldm_options & GLDOPT_FAST_RECV) { in gld_sendup()
3196 gld_mac_info_t *macinfo = gld->gld_mac_info; in gld_addudind() local
3208 ASSERT(macinfo != NULL); in gld_addudind()
3215 2 * (macinfo->gldm_addrlen + abs(macinfo->gldm_saplen)); in gld_addudind()
3243 dludindp->dl_dest_addr_length = macinfo->gldm_addrlen + in gld_addudind()
3244 abs(macinfo->gldm_saplen); in gld_addudind()
3254 mac_copy(pktinfo->dhost, nmp->b_wptr, macinfo->gldm_addrlen); in gld_addudind()
3255 nmp->b_wptr += macinfo->gldm_addrlen; in gld_addudind()
3257 ASSERT(macinfo->gldm_saplen == -2); /* XXX following code assumes */ in gld_addudind()
3259 nmp->b_wptr += abs(macinfo->gldm_saplen); in gld_addudind()
3263 mac_copy(pktinfo->shost, nmp->b_wptr, macinfo->gldm_addrlen); in gld_addudind()
3264 nmp->b_wptr += macinfo->gldm_addrlen; in gld_addudind()
3267 nmp->b_wptr += abs(macinfo->gldm_saplen); in gld_addudind()
3373 gld_mac_info_t *macinfo; in gld_ioctl() local
3404 if ((macinfo = gld->gld_mac_info) == NULL) { in gld_ioctl()
3414 *((uint32_t *)mp->b_cont->b_rptr) = macinfo->gldm_margin; in gld_ioctl()
3419 macinfo = gld->gld_mac_info; in gld_ioctl()
3420 if (macinfo == NULL || macinfo->gldm_ioctl == NULL) { in gld_ioctl()
3425 GLDM_LOCK(macinfo, RW_WRITER); in gld_ioctl()
3426 (void) (*macinfo->gldm_ioctl) (macinfo, q, mp); in gld_ioctl()
3427 GLDM_UNLOCK(macinfo); in gld_ioctl()
3446 gld_mac_info_t *macinfo; in gld_fastpath() local
3458 macinfo = gld->gld_mac_info; in gld_fastpath()
3459 ASSERT(macinfo != NULL); in gld_fastpath()
3460 maclen = macinfo->gldm_addrlen + abs(macinfo->gldm_saplen); in gld_fastpath()
3486 GLDM_LOCK(macinfo, RW_WRITER); in gld_fastpath()
3488 GLDM_UNLOCK(macinfo); in gld_fastpath()
3490 ifp = ((gld_mac_pvt_t *)macinfo->gldm_mac_pvt)->interfacep; in gld_fastpath()
3680 gld_mac_info_t *macinfo = gld->gld_mac_info; in gld_cap_ack() local
3687 ifp = ((gld_mac_pvt_t *)macinfo->gldm_mac_pvt)->interfacep; in gld_cap_ack()
3689 if (macinfo->gldm_capabilities & GLD_CAP_CKSUM_ANY) in gld_cap_ack()
3692 if (macinfo->gldm_capabilities & GLD_CAP_ZEROCOPY) in gld_cap_ack()
3695 if (macinfo->gldm_options & GLDOPT_MDT) in gld_cap_ack()
3709 if (macinfo->gldm_capabilities & GLD_CAP_CKSUM_ANY) { in gld_cap_ack()
3718 if (macinfo->gldm_capabilities & GLD_CAP_CKSUM_PARTIAL) in gld_cap_ack()
3720 if (macinfo->gldm_capabilities & GLD_CAP_CKSUM_FULL_V4) in gld_cap_ack()
3722 if (macinfo->gldm_capabilities & GLD_CAP_CKSUM_FULL_V6) in gld_cap_ack()
3724 if (macinfo->gldm_capabilities & GLD_CAP_CKSUM_IPHDR) in gld_cap_ack()
3731 if (macinfo->gldm_capabilities & GLD_CAP_ZEROCOPY) { in gld_cap_ack()
3743 if (macinfo->gldm_options & GLDOPT_MDT) { in gld_cap_ack()
3750 dlmp->mdt_max_pld = macinfo->gldm_mdt_segs; in gld_cap_ack()
3751 dlmp->mdt_span_limit = macinfo->gldm_mdt_sgl; in gld_cap_ack()
3817 gld_notify_qs(gld_mac_info_t *macinfo, mblk_t *mp, uint32_t notification) in gld_notify_qs() argument
3825 ASSERT(GLDM_LOCK_HELD_WRITE(macinfo)); in gld_notify_qs()
3827 mac_pvt = (gld_mac_pvt_t *)macinfo->gldm_mac_pvt; in gld_notify_qs()
3842 ASSERT(gld->gld_mac_info == macinfo); in gld_notify_qs()
3872 gld_notify_ind(gld_mac_info_t *macinfo, uint32_t notifications, queue_t *q) in gld_notify_ind() argument
3881 GLDM_LOCK(macinfo, RW_WRITER); in gld_notify_ind()
3888 if (!(macinfo->gldm_GLD_flags & GLD_MAC_READY)) { in gld_notify_ind()
3889 GLDM_UNLOCK(macinfo); in gld_notify_ind()
3893 if (macinfo->gldm_GLD_flags & GLD_UNREGISTERED) { in gld_notify_ind()
3894 GLDM_UNLOCK(macinfo); in gld_notify_ind()
3902 mac_pvt = (gld_mac_pvt_t *)macinfo->gldm_mac_pvt; in gld_notify_ind()
3904 if (macinfo->gldm_get_stats) in gld_notify_ind()
3905 (void) (*macinfo->gldm_get_stats)(macinfo, stats); in gld_notify_ind()
3914 size += macinfo->gldm_addrlen; in gld_notify_ind()
3935 if (macinfo->gldm_linkstate == GLD_LINKSTATE_DOWN) in gld_notify_ind()
3940 if (macinfo->gldm_linkstate == GLD_LINKSTATE_UP) in gld_notify_ind()
3959 dlnip->dl_addr_length = macinfo->gldm_addrlen + in gld_notify_ind()
3960 abs(macinfo->gldm_saplen); in gld_notify_ind()
3961 mac_pvt = (gld_mac_pvt_t *)macinfo->gldm_mac_pvt; in gld_notify_ind()
3964 macinfo->gldm_addrlen); in gld_notify_ind()
3976 gld_notify_qs(macinfo, mp, bit); in gld_notify_ind()
3979 GLDM_UNLOCK(macinfo); in gld_notify_ind()
3989 gld_mac_info_t *macinfo; in gld_notify_req() local
4017 macinfo = gld->gld_mac_info; in gld_notify_req()
4018 pvt = (gld_mac_pvt_t *)macinfo->gldm_mac_pvt; in gld_notify_req()
4040 gld_notify_ind(macinfo, gld->gld_notifications, q); in gld_notify_req()
4053 gld_linkstate(gld_mac_info_t *macinfo, int32_t newstate) in gld_linkstate() argument
4074 GLDM_LOCK(macinfo, RW_WRITER); in gld_linkstate()
4075 if (macinfo->gldm_linkstate == newstate) in gld_linkstate()
4078 macinfo->gldm_linkstate = newstate; in gld_linkstate()
4079 GLDM_UNLOCK(macinfo); in gld_linkstate()
4082 gld_notify_ind(macinfo, notification, NULL); in gld_linkstate()
4147 gld_mac_info_t *macinfo = gld->gld_mac_info; in gld_bindack() local
4148 gld_mac_pvt_t *mac_pvt = (gld_mac_pvt_t *)macinfo->gldm_mac_pvt; in gld_bindack()
4154 addrlen = macinfo->gldm_addrlen + abs(macinfo->gldm_saplen); in gld_bindack()
4167 macinfo->gldm_addrlen); in gld_bindack()
4168 sapp = mp->b_rptr + dlp->dl_addr_offset + macinfo->gldm_addrlen; in gld_bindack()
4184 gld_mac_info_t *macinfo = gld->gld_mac_info; in gld_bind() local
4210 ASSERT(macinfo); in gld_bind()
4231 switch (macinfo->gldm_type) { in gld_bind()
4241 GLDM_LOCK(macinfo, RW_WRITER); in gld_bind()
4244 if ((macinfo->gldm_type == DL_ETHER) && (sap == ETHERTYPE_VLAN)) in gld_bind()
4255 GLDM_UNLOCK(macinfo); in gld_bind()
4273 gld_mac_info_t *macinfo = gld->gld_mac_info; in gld_unbind() local
4290 ASSERT(macinfo); in gld_unbind()
4310 GLDM_LOCK(macinfo, RW_WRITER); in gld_unbind()
4311 if ((macinfo->gldm_type == DL_ETHER) && in gld_unbind()
4318 GLDM_UNLOCK(macinfo); in gld_unbind()
4341 gld_mac_info_t *macinfo; in gld_inforeq() local
4362 macinfo = gld->gld_mac_info; in gld_inforeq()
4363 ASSERT(macinfo != NULL); in gld_inforeq()
4365 mac_pvt = (gld_mac_pvt_t *)macinfo->gldm_mac_pvt; in gld_inforeq()
4367 addr_length = macinfo->gldm_addrlen; in gld_inforeq()
4368 sap_length = macinfo->gldm_saplen; in gld_inforeq()
4369 brdcst_length = macinfo->gldm_addrlen; in gld_inforeq()
4427 dlp->dl_min_sdu = macinfo->gldm_minpkt; in gld_inforeq()
4428 dlp->dl_max_sdu = macinfo->gldm_maxpkt; in gld_inforeq()
4429 dlp->dl_mac_type = macinfo->gldm_type; in gld_inforeq()
4443 if ((macinfo->gldm_type == DL_TPR || in gld_inforeq()
4444 macinfo->gldm_type == DL_FDDI) && in gld_inforeq()
4452 addr_offset, macinfo->gldm_addrlen); in gld_inforeq()
4454 macinfo->gldm_addrlen; in gld_inforeq()
4461 dlp->dl_brdcst_addr_length = macinfo->gldm_addrlen; in gld_inforeq()
4463 mac_copy((caddr_t)macinfo->gldm_broadcast_addr, in gld_inforeq()
4497 gld_mac_info_t *macinfo = gld->gld_mac_info; in gld_unitdata() local
4523 ASSERT(macinfo != NULL); in gld_unitdata()
4527 macinfo->gldm_addrlen + abs(macinfo->gldm_saplen)) { in gld_unitdata()
4536 if (msglen == 0 || msglen > macinfo->gldm_maxpkt) { in gld_unitdata()
4549 ifp = ((gld_mac_pvt_t *)macinfo->gldm_mac_pvt)->interfacep; in gld_unitdata()
4590 gld_mac_info_t *macinfo; in gldattach() local
4612 for (macinfo = glddev->gld_mac_next; in gldattach()
4613 macinfo != (gld_mac_info_t *)&glddev->gld_mac_next; in gldattach()
4614 macinfo = macinfo->gldm_next) { in gldattach()
4617 ASSERT(macinfo != NULL); in gldattach()
4618 if (macinfo->gldm_ppa != ppa) in gldattach()
4621 if (!(macinfo->gldm_GLD_flags & GLD_MAC_READY)) in gldattach()
4627 if (vid != VLAN_VID_NONE && !VLAN_CAPABLE(macinfo)) { in gldattach()
4635 inst = ddi_get_instance(macinfo->gldm_devinfo); in gldattach()
4648 GLDM_LOCK(macinfo, RW_WRITER); in gldattach()
4650 gld->gld_mac_info = macinfo; in gldattach()
4652 if (macinfo->gldm_send_tagged != NULL) in gldattach()
4653 gld->gld_send = macinfo->gldm_send_tagged; in gldattach()
4655 gld->gld_send = macinfo->gldm_send; in gldattach()
4657 if ((vlan = gld_get_vlan(macinfo, vid)) == NULL) { in gldattach()
4658 GLDM_UNLOCK(macinfo); in gldattach()
4665 mac_pvt = (gld_mac_pvt_t *)macinfo->gldm_mac_pvt; in gldattach()
4667 if (gld_start_mac(macinfo) != GLD_SUCCESS) { in gldattach()
4669 GLDM_UNLOCK(macinfo); in gldattach()
4683 GLDM_UNLOCK(macinfo); in gldattach()
4688 (void *)q, (void *)mp, macinfo->gldm_ppa); in gldattach()
4709 gld_mac_info_t *macinfo = gld->gld_mac_info; in gldunattach() local
4721 ASSERT(macinfo != NULL); in gldunattach()
4723 mac_pvt = (gld_mac_pvt_t *)macinfo->gldm_mac_pvt; in gldunattach()
4728 (void *)q, (void *)mp, macinfo->gldm_ppa); in gldunattach()
4732 GLDM_LOCK(macinfo, RW_WRITER); in gldunattach()
4740 gld_send_disable_multi(macinfo, mcast); in gldunattach()
4764 (void) (*macinfo->gldm_set_promiscuous)(macinfo, op); in gldunattach()
4778 GLDM_UNLOCK(macinfo); in gldunattach()
4781 gld_notify_ind(macinfo, DL_NOTE_PROMISC_OFF_PHYS, NULL); in gldunattach()
4788 GLDM_LOCK(macinfo, RW_WRITER); in gldunattach()
4803 gld_stop_mac(macinfo); in gldunattach()
4804 macinfo->gldm_GLD_flags &= ~GLD_INTR_WAIT; in gldunattach()
4811 GLDM_UNLOCK(macinfo); in gldunattach()
4837 gld_mac_info_t *macinfo = gld->gld_mac_info; in gld_enable_multi() local
4854 ASSERT(macinfo != NULL); in gld_enable_multi()
4855 mac_pvt = (gld_mac_pvt_t *)macinfo->gldm_mac_pvt; in gld_enable_multi()
4857 if (macinfo->gldm_set_multicast == NULL) { in gld_enable_multi()
4864 multi->dl_addr_length != macinfo->gldm_addrlen) in gld_enable_multi()
4882 GLDM_LOCK(macinfo, RW_WRITER); in gld_enable_multi()
4890 GLDM_UNLOCK(macinfo); in gld_enable_multi()
4899 maddr, macinfo->gldm_addrlen)) { in gld_enable_multi()
4902 GLDM_UNLOCK(macinfo); in gld_enable_multi()
4917 GLDM_UNLOCK(macinfo); in gld_enable_multi()
4925 maddr, macinfo->gldm_addrlen)) { in gld_enable_multi()
4937 macinfo->gldm_addrlen); in gld_enable_multi()
4944 GLDM_UNLOCK(macinfo); in gld_enable_multi()
4957 ASSERT(sizeof (cmaddr) >= macinfo->gldm_addrlen); in gld_enable_multi()
4959 macinfo->gldm_addrlen, macinfo); in gld_enable_multi()
4961 rc = (*macinfo->gldm_set_multicast) in gld_enable_multi()
4962 (macinfo, cmaddr, GLD_MULTI_ENABLE); in gld_enable_multi()
4964 GLDM_UNLOCK(macinfo); in gld_enable_multi()
4967 GLDM_UNLOCK(macinfo); in gld_enable_multi()
4970 GLDM_UNLOCK(macinfo); in gld_enable_multi()
4980 GLDM_UNLOCK(macinfo); in gld_enable_multi()
4983 GLDM_UNLOCK(macinfo); in gld_enable_multi()
4991 GLDM_UNLOCK(macinfo); in gld_enable_multi()
4997 GLDM_UNLOCK(macinfo); in gld_enable_multi()
5011 gld_mac_info_t *macinfo; in gld_disable_multi() local
5028 macinfo = gld->gld_mac_info; in gld_disable_multi()
5029 ASSERT(macinfo != NULL); in gld_disable_multi()
5030 if (macinfo->gldm_set_multicast == NULL) { in gld_disable_multi()
5037 multi->dl_addr_length != macinfo->gldm_addrlen) in gld_disable_multi()
5044 GLDM_LOCK(macinfo, RW_WRITER); in gld_disable_multi()
5049 maddr, macinfo->gldm_addrlen)) { in gld_disable_multi()
5051 gld_send_disable_multi(macinfo, mcast); in gld_disable_multi()
5053 GLDM_UNLOCK(macinfo); in gld_disable_multi()
5058 GLDM_UNLOCK(macinfo); in gld_disable_multi()
5069 gld_send_disable_multi(gld_mac_info_t *macinfo, gld_mcast_t *mcast) in gld_send_disable_multi() argument
5071 ASSERT(macinfo != NULL); in gld_send_disable_multi()
5072 ASSERT(GLDM_LOCK_HELD_WRITE(macinfo)); in gld_send_disable_multi()
5088 if (macinfo->gldm_options & GLDOPT_CANONICAL_ADDR) in gld_send_disable_multi()
5089 gld_bitreverse(mcast->gldm_addr, macinfo->gldm_addrlen); in gld_send_disable_multi()
5092 (void) (*macinfo->gldm_set_multicast) in gld_send_disable_multi()
5093 (macinfo, mcast->gldm_addr, GLD_MULTI_DISABLE); in gld_send_disable_multi()
5104 gld_mac_info_t *macinfo; in gld_promisc() local
5126 macinfo = gld->gld_mac_info; in gld_promisc()
5127 ASSERT(macinfo != NULL); in gld_promisc()
5128 mac_pvt = (gld_mac_pvt_t *)macinfo->gldm_mac_pvt; in gld_promisc()
5133 GLDM_LOCK(macinfo, RW_WRITER); in gld_promisc()
5196 GLDM_UNLOCK(macinfo); in gld_promisc()
5204 macrc = (*macinfo->gldm_set_promiscuous)(macinfo, op); in gld_promisc()
5267 GLDM_UNLOCK(macinfo); in gld_promisc()
5306 gld_notify_ind(macinfo, DL_NOTE_PROMISC_ON_PHYS, NULL); in gld_promisc()
5310 gld_notify_ind(macinfo, DL_NOTE_PROMISC_OFF_PHYS, NULL); in gld_promisc()
5325 gld_mac_info_t *macinfo; in gld_physaddr() local
5332 macinfo = (gld_mac_info_t *)gld->gld_mac_info; in gld_physaddr()
5333 ASSERT(macinfo != NULL); in gld_physaddr()
5334 ASSERT(macinfo->gldm_addrlen <= GLD_MAX_ADDRLEN); in gld_physaddr()
5338 mac_copy((caddr_t)macinfo->gldm_vendor_addr, in gld_physaddr()
5339 (caddr_t)addr, macinfo->gldm_addrlen); in gld_physaddr()
5343 GLDM_LOCK(macinfo, RW_WRITER); in gld_physaddr()
5345 ((gld_mac_pvt_t *)macinfo->gldm_mac_pvt)->curr_macaddr, in gld_physaddr()
5346 (caddr_t)addr, macinfo->gldm_addrlen); in gld_physaddr()
5347 GLDM_UNLOCK(macinfo); in gld_physaddr()
5352 dlphysaddrack(q, mp, (caddr_t)addr, macinfo->gldm_addrlen); in gld_physaddr()
5364 gld_mac_info_t *macinfo; in gld_setaddr() local
5381 macinfo = (gld_mac_info_t *)gld->gld_mac_info; in gld_setaddr()
5382 ASSERT(macinfo != NULL); in gld_setaddr()
5383 mac_pvt = (gld_mac_pvt_t *)macinfo->gldm_mac_pvt; in gld_setaddr()
5387 prim->set_physaddr_req.dl_addr_length != macinfo->gldm_addrlen) in gld_setaddr()
5390 GLDM_LOCK(macinfo, RW_WRITER); in gld_setaddr()
5394 ASSERT(sizeof (cmaddr) >= macinfo->gldm_addrlen); in gld_setaddr()
5395 cmac_copy(addr, cmaddr, macinfo->gldm_addrlen, macinfo); in gld_setaddr()
5397 rc = (*macinfo->gldm_set_mac_addr)(macinfo, cmaddr); in gld_setaddr()
5400 macinfo->gldm_addrlen); in gld_setaddr()
5402 GLDM_UNLOCK(macinfo); in gld_setaddr()
5419 gld_notify_ind(macinfo, DL_NOTE_PHYS_ADDR, NULL); in gld_setaddr()
5430 gld_mac_info_t *macinfo = gld->gld_mac_info; in gld_get_statistics() local
5436 ASSERT(macinfo != NULL); in gld_get_statistics()
5438 mac_pvt = (gld_mac_pvt_t *)macinfo->gldm_mac_pvt; in gld_get_statistics()
5452 GLDM_LOCK(macinfo, RW_WRITER); in gld_get_statistics()
5456 GLDM_UNLOCK(macinfo); in gld_get_statistics()
5470 gld_start_mac(gld_mac_info_t *macinfo) in gld_start_mac() argument
5474 gld_mac_pvt_t *mac_pvt = (gld_mac_pvt_t *)macinfo->gldm_mac_pvt; in gld_start_mac()
5476 ASSERT(GLDM_LOCK_HELD_WRITE(macinfo)); in gld_start_mac()
5479 rc = (*macinfo->gldm_reset)(macinfo); in gld_start_mac()
5484 ASSERT(sizeof (cmaddr) >= macinfo->gldm_addrlen); in gld_start_mac()
5485 cmac_copy(((gld_mac_pvt_t *)macinfo->gldm_mac_pvt) in gld_start_mac()
5486 ->curr_macaddr, cmaddr, macinfo->gldm_addrlen, macinfo); in gld_start_mac()
5488 rc = (*macinfo->gldm_set_mac_addr)(macinfo, cmaddr); in gld_start_mac()
5493 rc = (*macinfo->gldm_start)(macinfo); in gld_start_mac()
5505 gld_stop_mac(gld_mac_info_t *macinfo) in gld_stop_mac() argument
5507 gld_mac_pvt_t *mac_pvt = (gld_mac_pvt_t *)macinfo->gldm_mac_pvt; in gld_stop_mac()
5509 ASSERT(GLDM_LOCK_HELD_WRITE(macinfo)); in gld_stop_mac()
5512 (void) (*macinfo->gldm_stop)(macinfo); in gld_stop_mac()
5530 gld_mac_info_t *macinfo = gld->gld_mac_info; in gld_set_ipq() local
5536 ASSERT(GLDM_LOCK_HELD_WRITE(macinfo)); in gld_set_ipq()
5539 if (((macinfo->gldm_type != DL_ETHER) && in gld_set_ipq()
5540 (macinfo->gldm_type != DL_IB)) || in gld_set_ipq()
5724 gld_add_vlan(gld_mac_info_t *macinfo, uint32_t vid) in gld_add_vlan() argument
5726 gld_mac_pvt_t *mac_pvt = (gld_mac_pvt_t *)macinfo->gldm_mac_pvt; in gld_add_vlan()
5739 p->gldv_mac = macinfo; in gld_add_vlan()
5768 gld_mac_info_t *macinfo = vlan->gldv_mac; in gld_rem_vlan() local
5769 gld_mac_pvt_t *mac_pvt = (gld_mac_pvt_t *)macinfo->gldm_mac_pvt; in gld_rem_vlan()
5792 gld_find_vlan(gld_mac_info_t *macinfo, uint32_t vid) in gld_find_vlan() argument
5794 gld_mac_pvt_t *mac_pvt = (gld_mac_pvt_t *)macinfo->gldm_mac_pvt; in gld_find_vlan()
5807 gld_get_vlan(gld_mac_info_t *macinfo, uint32_t vid) in gld_get_vlan() argument
5811 if ((vlan = gld_find_vlan(macinfo, vid)) == NULL) in gld_get_vlan()
5812 vlan = gld_add_vlan(macinfo, vid); in gld_get_vlan()