Lines Matching refs:ifp
74 ether_input(struct ifnet *ifp, struct mbuf *m)
91 IF_APPEND(&ifp->if_rcv, m);
92 release_sem_etc(ifp->if_rcv_sem, 1, B_DO_NOT_RESCHEDULE);
96 ether_ifattach(struct ifnet *ifp, const uint8 *etheraddr)
98 ipro1000_device *dev = ifp->if_softc->dev;
102 TAILQ_INIT(&ifp->if_multiaddrs);
106 ifp->if_input = ether_input;
108 ifp->if_rcv_sem = create_sem(0, "ifp->if_rcv_sem");
109 set_sem_owner(ifp->if_rcv_sem, B_SYSTEM_TEAM);
112 ifp->if_init(ifp->if_softc);
118 ether_find_multi(struct ifnet *ifp, const struct sockaddr *_address)
123 TAILQ_FOREACH (ifma, &ifp->if_multiaddrs, ifma_link) {
135 ether_add_multi(struct ifnet *ifp, const struct sockaddr *address)
137 struct ifmultiaddr *addr = ether_find_multi(ifp, address);
153 TAILQ_INSERT_HEAD(&ifp->if_multiaddrs, addr, ifma_link);
155 return ifp->if_ioctl(ifp, SIOCADDMULTI, NULL);
160 ether_delete_multi(struct ifnet *ifp, struct ifmultiaddr *ifma)
162 TAILQ_REMOVE(&ifp->if_multiaddrs, ifma, ifma_link);
168 ether_rem_multi(struct ifnet *ifp, const struct sockaddr *address)
170 struct ifmultiaddr *addr = ether_find_multi(ifp, address);
176 ether_delete_multi(ifp, addr);
177 return ifp->if_ioctl(ifp, SIOCDELMULTI, NULL);
185 ether_ifdetach(struct ifnet *ifp)
191 delete_sem(ifp->if_rcv_sem);
193 TAILQ_FOREACH_SAFE(ifma, &ifp->if_multiaddrs, ifma_link, next)
194 ether_delete_multi(ifp, ifma);