Lines Matching refs:ifp

105 static int eco_interestingp(struct ifnet *ifp, struct mbuf *m);
106 static struct mbuf *eco_immediate(struct ifnet *ifp, struct mbuf *m);
107 static struct mbuf *eco_ack(struct ifnet *ifp, struct mbuf *m);
114 eco_ifattach(struct ifnet *ifp, const uint8_t *lla)
116 struct ecocom *ec = (void *)ifp;
118 ifp->if_type = IFT_ECONET;
119 ifp->if_addrlen = ECO_ADDR_LEN;
120 ifp->if_hdrlen = ECO_HDR_LEN;
121 ifp->if_dlt = DLT_ECONET;
122 ifp->if_mtu = ECO_MTU;
124 ifp->if_output = eco_output;
125 ifp->if_input = eco_input;
126 ifp->if_start = eco_start;
127 ifp->if_ioctl = eco_ioctl;
129 /* ifp->if_baudrate...; */
130 if_set_sadl(ifp, lla, ECO_ADDR_LEN, FALSE);
132 ifp->if_broadcastaddr = eco_broadcastaddr;
136 bpf_attach(ifp, ifp->if_dlt, ECO_HDR_LEN);
145 eco_init(struct ifnet *ifp)
147 struct ecocom *ec = (struct ecocom *)ifp;
149 if ((ifp->if_flags & IFF_RUNNING) == 0)
155 eco_stop(struct ifnet *ifp, int disable)
157 struct ecocom *ec = (struct ecocom *)ifp;
164 eco_output(struct ifnet *ifp, struct mbuf *m0, const struct sockaddr *dst,
183 if ((ifp->if_flags & (IFF_UP|IFF_RUNNING)) != (IFF_UP|IFF_RUNNING))
189 if (rt->rt_ifp != ifp)
191 (ifp, m0, dst, rt);
205 (rt->rt_ifp != ifp)) {
221 IFQ_CLASSIFY(&ifp->if_snd, m, dst->sa_family, &pktattr);
233 else if (!arpresolve(ifp, rt, m, dst, ehdr.eco_dhost))
236 if ((m->m_flags & M_BCAST) && (ifp->if_flags & IFF_SIMPLEX))
291 log(LOG_ERR, "%s: can't handle af%d\n", ifp->if_xname,
297 (void) looutput(ifp, mcopy, dst, rt);
309 memcpy(eh->eco_shost, CLLADDR(ifp->if_sadl),
324 if ((error = pfil_run_hooks(&ifp->if_pfil, &m, ifp, PFIL_OUT)) != 0)
330 return ifq_enqueue(ifp, m ALTQ_COMMA ALTQ_DECL(&pktattr));
342 eco_interestingp(struct ifnet *ifp, struct mbuf *m)
357 eco_input(struct ifnet *ifp, struct mbuf *m)
370 if (pfil_run_hooks(&ifp->if_pfil, &m, ifp, PFIL_IN) != 0)
413 2*ifp->if_data.ifi_addrlen;
419 ah->ar_hln = ifp->if_data.ifi_addrlen;
447 ifp->if_output(ifp, m, dst, NULL);
452 ifp->if_xname, eco_sprintf(eh->eco_shost),
470 ifp->if_xname, eco_sprintf(eh->eco_shost),
487 eco_start(struct ifnet *ifp)
489 struct ecocom *ec = (void *)ifp;
494 IFQ_DEQUEUE(&ifp->if_snd, m);
496 if (ec->ec_claimwire(ifp) == 0) {
499 ec->ec_txframe(ifp, m);
502 ec->ec_txframe(ifp, m);
512 ec->ec_txframe(ifp, m);
515 ifp->if_flags |= IFF_OACTIVE;
517 log(LOG_ERR, "%s: line jammed\n", ifp->if_xname);
523 eco_ioctl(struct ifnet *ifp, u_long cmd, void *data)
530 ifp->if_flags |= IFF_UP;
531 if ((ifp->if_flags & IFF_RUNNING) == 0 &&
532 (error = (*ifp->if_init)(ifp)) != 0)
537 arp_ifinit(ifp, ifa);
545 if ((error = ifioctl_common(ifp, cmd, data)) != ENETRESET)
547 else if (ifp->if_flags & IFF_UP)
548 return (*ifp->if_init)(ifp);
553 if ((error = ifioctl_common(ifp, cmd, data)) != 0)
555 switch (ifp->if_flags & (IFF_UP|IFF_RUNNING)) {
561 (*ifp->if_stop)(ifp, 1);
568 return (*ifp->if_init)(ifp);
574 return (*ifp->if_init)(ifp);
580 return ifioctl_common(ifp, cmd, data);
594 eco_inputframe(struct ifnet *ifp, struct mbuf *m)
596 struct ecocom *ec = (void *)ifp;
607 ifp->if_xname);
613 eco_input(ifp, m);
614 } else if (memcmp(eh->eco_dhost, CLLADDR(ifp->if_sadl),
618 return eco_immediate(ifp, m);
620 if (eco_interestingp(ifp, m)) {
621 reply = eco_ack(ifp, m);
646 ifp->if_xname);
649 reply = eco_ack(ifp, m);
661 eco_input(ifp, m0);
671 ifp->if_xname);
702 ifp->if_xname);
724 eco_immediate(struct ifnet *ifp, struct mbuf *m)
740 memcpy(reh->eco_shost, CLLADDR(ifp->if_sadl),
758 eco_ack(struct ifnet *ifp, struct mbuf *m)
770 memcpy(reh->eco_shost, CLLADDR(ifp->if_sadl), ECO_ADDR_LEN);
775 eco_inputidle(struct ifnet *ifp)
777 struct ecocom *ec = (void *)ifp;
795 eco_defer(ifp, m, erp->erp_delay);
797 printf("%s: pkt failed\n", ifp->if_xname);
808 ifp->if_start(ifp);
830 eco_defer(struct ifnet *ifp, struct mbuf *m, int retry_delay)
832 struct ecocom *ec = (struct ecocom *)ifp;
843 er->er_ifp = ifp;
869 struct ifnet *ifp;
871 ifp = er->er_ifp;
874 (void)ifq_enqueue(ifp, m ALTQ_COMMA ALTQ_DECL(NULL));