Lines Matching refs:ifp

43 insert_into_device_name_list(struct ifnet * ifp)
48 gDeviceNameList[i] = ifp->device_name;
58 remove_from_device_name_list(struct ifnet * ifp)
62 if (ifp->device_name == gDeviceNameList[i]) {
86 struct ifnet *ifp;
89 ifp = ifnet_byindex_locked(idx);
92 return (ifp);
99 struct ifnet *ifp;
101 ifp = gDevices[idx];
103 return (ifp);
108 ifnet_setbyindex_locked(u_short idx, struct ifnet *ifp)
110 gDevices[idx] = ifp;
115 ifnet_setbyindex(u_short idx, struct ifnet *ifp)
118 ifnet_setbyindex_locked(idx, ifp);
153 if_alloc_inplace(struct ifnet *ifp, u_char type)
160 ifp->receive_sem = create_sem(0, semName);
161 if (ifp->receive_sem < B_OK)
162 return ifp->receive_sem;
164 ifp->link_state_sem = -1;
165 ifp->open_count = 0;
166 ifp->flags = 0;
167 ifp->if_type = type;
168 ifq_init(&ifp->receive_queue, semName);
170 ifp->scan_done_sem = -1;
183 ifp->if_index = index;
184 ifnet_setbyindex(ifp->if_index, ifp);
186 IF_ADDR_LOCK_INIT(ifp);
190 delete_sem(ifp->receive_sem);
199 struct ifnet *ifp = _kernel_malloc(sizeof(struct ifnet), M_ZERO);
200 if (ifp == NULL)
203 if (if_alloc_inplace(ifp, type) != 0) {
204 _kernel_free(ifp);
208 return ifp;
213 if_free_inplace(struct ifnet *ifp)
217 if (ifp->if_type == IFT_ETHER)
218 remove_from_device_name_list(ifp);
221 ifindex_free_locked(ifp->if_index);
224 IF_ADDR_LOCK_DESTROY(ifp);
226 delete_sem(ifp->receive_sem);
227 ifq_uninit(&ifp->receive_queue);
232 if_free(struct ifnet *ifp)
234 if_free_inplace(ifp);
236 _kernel_free(ifp);
241 if_initname(struct ifnet *ifp, const char *name, int unit)
243 dprintf("if_initname(%p, %s, %d)\n", ifp, name, unit);
248 ifp->if_dname = name;
249 ifp->if_dunit = unit;
251 strlcpy(ifp->if_xname, name, sizeof(ifp->if_xname));
253 snprintf(ifp->device_name, sizeof(ifp->device_name), "net/%s/%i",
254 gDriverName, ifp->if_index);
256 driver_printf("%s: /dev/%s\n", gDriverName, ifp->device_name);
257 insert_into_device_name_list(ifp);
259 ifp->root_device = find_root_device(unit);
284 if_transmit(struct ifnet *ifp, struct mbuf *m)
288 IFQ_HANDOFF(ifp, m, error);
294 if_input_default(struct ifnet *ifp __unused, struct mbuf *m)
305 if_qflush(struct ifnet *ifp)
310 ifq = &ifp->if_snd;
329 if_attach(struct ifnet *ifp)
336 TAILQ_INIT(&ifp->if_addrhead);
337 TAILQ_INIT(&ifp->if_prefixhead);
338 TAILQ_INIT(&ifp->if_multiaddrs);
340 IF_ADDR_LOCK_INIT(ifp);
342 ifp->if_lladdr.sdl_family = AF_LINK;
344 ifq_init((struct ifqueue *) &ifp->if_snd, ifp->if_xname);
346 if (ifp->if_transmit == NULL) {
347 ifp->if_transmit = if_transmit;
348 ifp->if_qflush = if_qflush;
350 if (ifp->if_input == NULL)
351 ifp->if_input = if_input_default;
353 if (ifp->if_requestencap == NULL)
354 ifp->if_requestencap = if_requestencap_default;
359 namelen = strlen(ifp->if_xname);
365 socksize = masklen + ifp->if_addrlen;
374 bcopy(ifp->if_xname, sdl->sdl_data, namelen);
376 sdl->sdl_index = ifp->if_index;
377 sdl->sdl_type = ifp->if_type;
378 ifp->if_addr = ifa;
379 ifa->ifa_ifp = ifp;
392 if_detach(struct ifnet *ifp)
395 taskqueue_drain(taskqueue_swi, &ifp->if_linktask);
397 IF_ADDR_LOCK_DESTROY(ifp);
398 ifq_uninit((struct ifqueue *) &ifp->if_snd);
403 if_start(struct ifnet *ifp)
405 ifp->if_start(ifp);
410 if_printf(struct ifnet *ifp, const char *format, ...)
418 dprintf("[%s] %s", ifp->device_name, buf);
435 if_requestencap_default(struct ifnet *ifp, struct if_encap_req *req)
462 if_link_state_change(struct ifnet *ifp, int linkState)
464 if (ifp->if_link_state == linkState)
467 ifp->if_link_state = linkState;
468 release_sem_etc(ifp->link_state_sem, 1, B_DO_NOT_RESCHEDULE);
472 if_findmulti(struct ifnet *ifp, struct sockaddr *_address)
477 TAILQ_FOREACH (ifma, &ifp->if_multiaddrs, ifma_link) {
515 _if_addmulti(struct ifnet *ifp, struct sockaddr *address)
517 struct ifmultiaddr *addr = if_findmulti(ifp, address);
529 addr->ifma_ifp = ifp;
537 TAILQ_INSERT_HEAD(&ifp->if_multiaddrs, addr, ifma_link);
544 if_addmulti(struct ifnet *ifp, struct sockaddr *address,
550 IF_ADDR_LOCK(ifp);
551 result = _if_addmulti(ifp, address);
554 IF_ADDR_UNLOCK(ifp);
559 if (refcount == 1 && ifp->if_ioctl != NULL)
560 ifp->if_ioctl(ifp, SIOCADDMULTI, NULL);
570 if_delmulti_locked(struct ifnet *ifp, struct ifmultiaddr *ifma, int detaching)
574 if (ifp != NULL && ifma->ifma_ifp != NULL) {
575 KASSERT(ifma->ifma_ifp == ifp,
576 ("%s: inconsistent ifp %p", __func__, ifp));
577 IF_ADDR_LOCK_ASSERT(ifp);
580 ifp = ifma->ifma_ifp;
591 printf("%s: detaching ifnet instance %p\n", __func__, ifp);
594 * ifp may already be nulled out if we are being reentered
597 if (ifp != NULL) {
620 if (ifp != NULL) {
621 TAILQ_REMOVE(&ifp->if_multiaddrs, ll_ifma,
629 if (ifp != NULL)
630 TAILQ_REMOVE(&ifp->if_multiaddrs, ifma, ifma_link);
647 if_delallmulti(struct ifnet *ifp)
652 IF_ADDR_LOCK(ifp);
653 TAILQ_FOREACH_SAFE(ifma, &ifp->if_multiaddrs, ifma_link, next)
654 if_delmulti_locked(ifp, ifma, 0);
655 IF_ADDR_UNLOCK(ifp);
660 if_delete_multiaddr(struct ifnet *ifp, struct ifmultiaddr *ifma)
662 TAILQ_REMOVE(&ifp->if_multiaddrs, ifma, ifma_link);
668 if_delmulti(struct ifnet *ifp, struct sockaddr *sa)
677 if (ifp == oifp)
679 if (ifp != oifp)
680 ifp = NULL;
683 KASSERT(ifp != NULL, ("%s: ifnet went away", __func__));
685 if (ifp == NULL)
688 IF_ADDR_LOCK(ifp);
690 ifma = if_findmulti(ifp, sa);
692 lastref = if_delmulti_locked(ifp, ifma, 0);
693 IF_ADDR_UNLOCK(ifp);
698 if (lastref && ifp->if_ioctl != NULL) {
699 (void)(*ifp->if_ioctl)(ifp, SIOCDELMULTI, 0);
707 if_purgemaddrs(struct ifnet *ifp)
712 IF_ADDR_LOCK(ifp);
713 TAILQ_FOREACH_SAFE(ifma, &ifp->if_multiaddrs, ifma_link, next)
714 if_delmulti_locked(ifp, ifma, 1);
715 IF_ADDR_UNLOCK(ifp);
722 if_get_counter_default(struct ifnet *ifp, ift_counter cnt)
729 return atomic_get64((int64 *)&ifp->if_ipackets);
731 return atomic_get64((int64 *)&ifp->if_ierrors);
733 return atomic_get64((int64 *)&ifp->if_opackets);
735 return atomic_get64((int64 *)&ifp->if_oerrors);
737 return atomic_get64((int64 *)&ifp->if_collisions);
739 return atomic_get64((int64 *)&ifp->if_ibytes);
741 return atomic_get64((int64 *)&ifp->if_obytes);
743 return atomic_get64((int64 *)&ifp->if_imcasts);
745 return atomic_get64((int64 *)&ifp->if_omcasts);
747 return atomic_get64((int64 *)&ifp->if_iqdrops);
749 return atomic_get64((int64 *)&ifp->if_oqdrops);
751 return atomic_get64((int64 *)&ifp->if_noproto);
759 if_addr_rlock(struct ifnet *ifp)
761 IF_ADDR_LOCK(ifp);
766 if_addr_runlock(struct ifnet *ifp)
768 IF_ADDR_UNLOCK(ifp);
773 if_maddr_rlock(struct ifnet *ifp)
775 IF_ADDR_LOCK(ifp);
780 if_maddr_runlock(struct ifnet *ifp)
782 IF_ADDR_UNLOCK(ifp);
787 ether_output(struct ifnet *ifp, struct mbuf *m, struct sockaddr *dst,
791 IFQ_HANDOFF(ifp, m, error);
797 ether_input(struct ifnet *ifp, struct mbuf *m)
801 IF_LOCK(&ifp->receive_queue);
806 _IF_ENQUEUE(&ifp->receive_queue, m);
811 IF_UNLOCK(&ifp->receive_queue);
813 release_sem_etc(ifp->receive_sem, count, B_DO_NOT_RESCHEDULE);
818 ether_ifattach(struct ifnet *ifp, const uint8_t *lla)
823 ifp->if_addrlen = ETHER_ADDR_LEN;
824 ifp->if_hdrlen = ETHER_HDR_LEN;
825 if_attach(ifp);
826 ifp->if_mtu = ETHERMTU;
827 ifp->if_output = ether_output;
828 ifp->if_input = ether_input;
829 ifp->if_resolvemulti = NULL; // done in the stack
830 ifp->if_get_counter = NULL;
831 ifp->if_broadcastaddr = etherbroadcastaddr;
833 ifa = ifp->if_addr;
836 sdl->sdl_alen = ifp->if_addrlen;
837 bcopy(lla, LLADDR(sdl), ifp->if_addrlen);
842 ether_ifdetach(struct ifnet *ifp)
844 if_detach(ifp);
849 ether_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
859 ifp->if_mtu = ifr->ifr_mtu;
912 if_inc_counter(struct ifnet *ifp, ift_counter cnt, int64_t inc)
916 atomic_add64((int64 *)&ifp->if_ipackets, inc);
919 atomic_add64((int64 *)&ifp->if_ierrors, inc);
922 atomic_add64((int64 *)&ifp->if_opackets, inc);
925 atomic_add64((int64 *)&ifp->if_oerrors, inc);
928 atomic_add64((int64 *)&ifp->if_collisions, inc);
931 atomic_add64((int64 *)&ifp->if_ibytes, inc);
934 atomic_add64((int64 *)&ifp->if_obytes, inc);
937 atomic_add64((int64 *)&ifp->if_imcasts, inc);
940 atomic_add64((int64 *)&ifp->if_omcasts, inc);
943 atomic_add64((int64 *)&ifp->if_iqdrops, inc);
946 atomic_add64((int64 *)&ifp->if_oqdrops, inc);
949 atomic_add64((int64 *)&ifp->if_noproto, inc);
959 if_setbaudrate(struct ifnet *ifp, uint64_t baudrate)
963 oldbrate = ifp->if_baudrate;
964 ifp->if_baudrate = baudrate;
969 if_getbaudrate(if_t ifp)
972 return (((struct ifnet *)ifp)->if_baudrate);
976 if_setcapabilities(if_t ifp, int capabilities)
978 ((struct ifnet *)ifp)->if_capabilities = capabilities;
983 if_setcapabilitiesbit(if_t ifp, int setbit, int clearbit)
985 ((struct ifnet *)ifp)->if_capabilities |= setbit;
986 ((struct ifnet *)ifp)->if_capabilities &= ~clearbit;
992 if_getcapabilities(if_t ifp)
994 return ((struct ifnet *)ifp)->if_capabilities;
998 if_setcapenable(if_t ifp, int capabilities)
1000 ((struct ifnet *)ifp)->if_capenable = capabilities;
1005 if_setcapenablebit(if_t ifp, int setcap, int clearcap)
1008 ((struct ifnet *)ifp)->if_capenable |= setcap;
1010 ((struct ifnet *)ifp)->if_capenable &= ~clearcap;
1016 if_getdname(if_t ifp)
1018 return ((struct ifnet *)ifp)->if_dname;
1022 if_togglecapenable(if_t ifp, int togglecap)
1024 ((struct ifnet *)ifp)->if_capenable ^= togglecap;
1029 if_getcapenable(if_t ifp)
1031 return ((struct ifnet *)ifp)->if_capenable;
1041 if_setdev(if_t ifp, void *dev)
1047 if_setdrvflagbits(if_t ifp, int set_flags, int clear_flags)
1049 ((struct ifnet *)ifp)->if_drv_flags |= set_flags;
1050 ((struct ifnet *)ifp)->if_drv_flags &= ~clear_flags;
1056 if_getdrvflags(if_t ifp)
1058 if ((struct ifnet *)ifp == NULL)
1060 return ((struct ifnet *)ifp)->if_drv_flags;
1064 if_setdrvflags(if_t ifp, int flags)
1066 ((struct ifnet *)ifp)->if_drv_flags = flags;
1072 if_setflags(if_t ifp, int flags)
1074 ((struct ifnet *)ifp)->if_flags = flags;
1079 if_setflagbits(if_t ifp, int set, int clear)
1081 ((struct ifnet *)ifp)->if_flags |= set;
1082 ((struct ifnet *)ifp)->if_flags &= ~clear;
1088 if_getflags(if_t ifp)
1090 return ((struct ifnet *)ifp)->if_flags;
1094 if_clearhwassist(if_t ifp)
1096 ((struct ifnet *)ifp)->if_hwassist = 0;
1101 if_sethwassistbits(if_t ifp, int toset, int toclear)
1103 ((struct ifnet *)ifp)->if_hwassist |= toset;
1104 ((struct ifnet *)ifp)->if_hwassist &= ~toclear;
1110 if_sethwassist(if_t ifp, int hwassist_bit)
1112 ((struct ifnet *)ifp)->if_hwassist = hwassist_bit;
1117 if_gethwassist(if_t ifp)
1119 return ((struct ifnet *)ifp)->if_hwassist;
1123 if_setmtu(if_t ifp, int mtu)
1125 ((struct ifnet *)ifp)->if_mtu = mtu;
1130 if_getmtu(if_t ifp)
1132 return ((struct ifnet *)ifp)->if_mtu;
1136 if_setsoftc(if_t ifp, void *softc)
1138 ((struct ifnet *)ifp)->if_softc = softc;
1143 if_getsoftc(if_t ifp)
1145 return ((struct ifnet *)ifp)->if_softc;
1149 if_setrcvif(struct mbuf *m, if_t ifp)
1151 m->m_pkthdr.rcvif = (struct ifnet *)ifp;
1168 if_sendq_empty(if_t ifp)
1170 return IFQ_DRV_IS_EMPTY(&((struct ifnet *)ifp)->if_snd);
1174 if_getamcount(if_t ifp)
1176 return ((struct ifnet *)ifp)->if_amcount;
1181 if_setsendqready(if_t ifp)
1183 IFQ_SET_READY(&((struct ifnet *)ifp)->if_snd);
1188 if_setsendqlen(if_t ifp, int tx_desc_count)
1190 IFQ_SET_MAXLEN(&((struct ifnet *)ifp)->if_snd, tx_desc_count);
1191 ((struct ifnet *)ifp)->if_snd.ifq_drv_maxlen = tx_desc_count;
1197 if_vlantrunkinuse(if_t ifp)
1199 return ((struct ifnet *)ifp)->if_vlantrunk != NULL?1:0;
1203 if_input(if_t ifp, struct mbuf* sendmp)
1205 (*((struct ifnet *)ifp)->if_input)((struct ifnet *)ifp, sendmp);
1216 if_setupmultiaddr(if_t ifp, void *mta, int *cnt, int max)
1222 TAILQ_FOREACH(ifma, &((struct ifnet *)ifp)->if_multiaddrs, ifma_link) {
1239 if_multiaddr_array(if_t ifp, void *mta, int *cnt, int max)
1243 if_maddr_rlock(ifp);
1244 error = if_setupmultiaddr(ifp, mta, cnt, max);
1245 if_maddr_runlock(ifp);
1250 if_multiaddr_count(if_t ifp, int max)
1256 if_maddr_rlock(ifp);
1257 TAILQ_FOREACH(ifma, &((struct ifnet *)ifp)->if_multiaddrs, ifma_link) {
1264 if_maddr_runlock(ifp);
1269 if_llmaddr_count(if_t ifp)
1275 TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) {
1284 if_foreach_llmaddr(if_t ifp, iflladdr_cb_t cb, void *cb_arg)
1290 TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) {
1301 if_dequeue(if_t ifp)
1304 IFQ_DRV_DEQUEUE(&((struct ifnet *)ifp)->if_snd, m);
1310 if_sendq_prepend(if_t ifp, struct mbuf *m)
1312 IFQ_DRV_PREPEND(&((struct ifnet *)ifp)->if_snd, m);
1317 if_setifheaderlen(if_t ifp, int len)
1319 ((struct ifnet *)ifp)->if_hdrlen = len;
1324 if_getlladdr(if_t ifp)
1326 return (IF_LLADDR((struct ifnet *)ifp));
1338 struct ifnet *ifp = (struct ifnet *)ifh;
1340 BPF_MTAP(ifp, m);
1346 struct ifnet *ifp = (struct ifnet *)ifh;
1348 ETHER_BPF_MTAP(ifp, m);
1354 struct ifnet *ifp = (struct ifnet *)ifh;
1355 VLAN_CAPABILITIES(ifp);
1359 if_setinitfn(if_t ifp, void (*init_fn)(void *))
1361 ((struct ifnet *)ifp)->if_init = init_fn;
1365 if_setioctlfn(if_t ifp, int (*ioctl_fn)(if_t, u_long, caddr_t))
1367 ((struct ifnet *)ifp)->if_ioctl = (void *)ioctl_fn;
1371 if_setstartfn(if_t ifp, void (*start_fn)(if_t))
1373 ((struct ifnet *)ifp)->if_start = (void *)start_fn;
1377 if_settransmitfn(if_t ifp, if_transmit_fn_t start_fn)
1379 ((struct ifnet *)ifp)->if_transmit = start_fn;
1382 void if_setqflushfn(if_t ifp, if_qflush_fn_t flush_fn)
1384 ((struct ifnet *)ifp)->if_qflush = flush_fn;
1388 if_setgetcounterfn(if_t ifp, if_get_counter_t fn)
1391 ifp->if_get_counter = fn;