Lines Matching refs:fwip

105 static SYSCTL_NODE(_hw_firewire, OID_AUTO, fwip, CTLFLAG_RD, 0,
110 TUNABLE_INT("hw.firewire.fwip.rx_queue_len", &rx_queue_len);
118 struct fwip_softc *fwip;
124 fwip = ((struct fwip_eth_softc *)ifp->if_softc)->fwip;
125 fc = fwip->fd.fc;
134 BUS_ADD_CHILD(parent, 0, "fwip", device_get_unit(parent));
154 struct fwip_softc *fwip;
159 fwip = ((struct fwip_softc *)device_get_softc(dev));
161 ifp = fwip->fw_softc.fwip_ifp = if_alloc(IFT_IEEE1394);
165 mtx_init(&fwip->mtx, "fwip", NULL, MTX_DEF);
167 fwip->dma_ch = -1;
169 fwip->fd.fc = device_get_ivars(dev);
171 tx_speed = fwip->fd.fc->speed;
173 fwip->fd.dev = dev;
174 fwip->fd.post_explore = NULL;
175 fwip->fd.post_busreset = fwip_post_busreset;
176 fwip->fw_softc.fwip = fwip;
177 TASK_INIT(&fwip->start_send, 0, fwip_start_send, fwip);
182 hwaddr = &IFP2FWC(fwip->fw_softc.fwip_ifp)->fc_hwaddr;
183 hwaddr->sender_unique_ID_hi = htonl(fwip->fd.fc->eui.hi);
184 hwaddr->sender_unique_ID_lo = htonl(fwip->fd.fc->eui.lo);
185 hwaddr->sender_max_rec = fwip->fd.fc->maxrec;
186 hwaddr->sspd = fwip->fd.fc->speed;
191 ifp->if_softc = &fwip->fw_softc;
197 ifp->if_name = "fwip";
217 fwip_stop(struct fwip_softc *fwip)
221 struct ifnet *ifp = fwip->fw_softc.fwip_ifp;
225 fc = fwip->fd.fc;
227 if (fwip->dma_ch >= 0) {
228 xferq = fc->ir[fwip->dma_ch];
231 fc->irx_disable(fc, fwip->dma_ch);
241 fw_bindremove(fc, &fwip->fwb);
242 for (xfer = STAILQ_FIRST(&fwip->fwb.xferlist); xfer != NULL;
248 for (xfer = STAILQ_FIRST(&fwip->xferlist); xfer != NULL;
253 STAILQ_INIT(&fwip->xferlist);
256 fwip->dma_ch = -1;
269 struct fwip_softc *fwip;
273 fwip = (struct fwip_softc *)device_get_softc(dev);
274 ifp = fwip->fw_softc.fwip_ifp;
283 fwip_stop(fwip);
286 mtx_destroy(&fwip->mtx);
295 struct fwip_softc *fwip = ((struct fwip_eth_softc *)arg)->fwip;
297 struct ifnet *ifp = fwip->fw_softc.fwip_ifp;
305 fc = fwip->fd.fc;
307 if (fwip->dma_ch < 0) {
308 fwip->dma_ch = fw_open_isodma(fc, /* tx */0);
309 if (fwip->dma_ch < 0)
311 xferq = fc->ir[fwip->dma_ch];
317 xferq->sc = (caddr_t) fwip;
343 fwip->fwb.start = INET_FIFO;
344 fwip->fwb.end = INET_FIFO + 16384; /* S3200 packet size */
347 STAILQ_INIT(&fwip->fwb.xferlist);
357 xfer->sc = (caddr_t)fwip;
359 STAILQ_INSERT_TAIL(&fwip->fwb.xferlist, xfer, link);
361 fw_bindadd(fc, &fwip->fwb);
363 STAILQ_INIT(&fwip->xferlist);
369 xfer->fc = fwip->fd.fc;
370 xfer->sc = (caddr_t)fwip;
372 STAILQ_INSERT_TAIL(&fwip->xferlist, xfer, link);
375 xferq = fc->ir[fwip->dma_ch];
377 fwip->last_dest.hi = 0;
378 fwip->last_dest.lo = 0;
382 fc->irx_enable(fc, fwip->dma_ch);
401 struct fwip_softc *fwip = ((struct fwip_eth_softc *)ifp->if_softc)->fwip;
413 fwip_init(&fwip->fw_softc);
420 fwip_stop(fwip);
431 struct firewire_comm *fc = fwip->fd.fc;
480 struct fwip_softc *fwip = arg;
484 src = fwip->fd.fc->crom_src;
485 root = fwip->fd.fc->crom_root;
488 bzero(&fwip->unit4, sizeof(struct crom_chunk));
489 crom_add_chunk(src, root, &fwip->unit4, CROM_UDIR);
490 crom_add_entry(&fwip->unit4, CSRKEY_SPEC, CSRVAL_IETF);
491 crom_add_simple_text(src, &fwip->unit4, &fwip->spec4, "IANA");
492 crom_add_entry(&fwip->unit4, CSRKEY_VER, 1);
493 crom_add_simple_text(src, &fwip->unit4, &fwip->ver4, "IPv4");
496 bzero(&fwip->unit6, sizeof(struct crom_chunk));
497 crom_add_chunk(src, root, &fwip->unit6, CROM_UDIR);
498 crom_add_entry(&fwip->unit6, CSRKEY_SPEC, CSRVAL_IETF);
499 crom_add_simple_text(src, &fwip->unit6, &fwip->spec6, "IANA");
500 crom_add_entry(&fwip->unit6, CSRKEY_VER, 2);
501 crom_add_simple_text(src, &fwip->unit6, &fwip->ver6, "IPv6");
503 fwip->last_dest.hi = 0;
504 fwip->last_dest.lo = 0;
505 firewire_busreset(fwip->fw_softc.fwip_ifp);
511 struct fwip_softc *fwip;
515 fwip = (struct fwip_softc *)xfer->sc;
516 ifp = fwip->fw_softc.fwip_ifp;
526 FWIP_LOCK(fwip);
527 STAILQ_INSERT_TAIL(&fwip->xferlist, xfer, link);
528 FWIP_UNLOCK(fwip);
540 struct fwip_softc *fwip = ((struct fwip_eth_softc *)ifp->if_softc)->fwip;
545 if (fwip->dma_ch < 0) {
570 fwip_async_output(fwip, ifp);
582 fwip_async_output(struct fwip_softc *fwip, struct ifnet *ifp)
584 struct firewire_comm *fc = fwip->fd.fc;
599 FWIP_LOCK(fwip);
600 xfer = STAILQ_FIRST(&fwip->xferlist);
602 FWIP_UNLOCK(fwip);
608 STAILQ_REMOVE_HEAD(&fwip->xferlist, link);
609 FWIP_UNLOCK(fwip);
613 FWIP_LOCK(fwip);
614 STAILQ_INSERT_HEAD(&fwip->xferlist, xfer, link);
615 FWIP_UNLOCK(fwip);
685 if (fwip->last_dest.hi != eui.hi ||
686 fwip->last_dest.lo != eui.lo) {
696 fwip->last_hdr.mode.wreqb.dst = FWLOCALBUS | fd->dst;
697 fwip->last_hdr.mode.wreqb.tlrt = 0;
698 fwip->last_hdr.mode.wreqb.tcode = FWTCODE_WREQB;
699 fwip->last_hdr.mode.wreqb.pri = 0;
700 fwip->last_hdr.mode.wreqb.src = nodeid;
701 fwip->last_hdr.mode.wreqb.dest_hi =
703 fwip->last_hdr.mode.wreqb.dest_lo =
705 fwip->last_hdr.mode.wreqb.extcode = 0;
706 fwip->last_dest = eui;
709 fp->mode.wreqb = fwip->last_hdr.mode.wreqb;
723 FWIP_LOCK(fwip);
724 STAILQ_INSERT_TAIL(&fwip->xferlist, xfer, link);
725 FWIP_UNLOCK(fwip);
751 struct fwip_softc *fwip = arg;
753 fwip->fd.fc->atq->start(fwip->fd.fc);
763 struct fwip_softc *fwip;
770 fwip = (struct fwip_softc *)xferq->sc;
771 ifp = fwip->fw_softc.fwip_ifp;
776 if (fwip->fd.fc->irx_post != NULL)
777 fwip->fd.fc->irx_post(fwip->fd.fc, fp->mode.ld);
840 fd = fw_noderesolve_nodeid(fwip->fd.fc,
862 fwip->fd.fc->irx_enable(fwip->fd.fc, fwip->dma_ch);
866 fwip_unicast_input_recycle(struct fwip_softc *fwip, struct fw_xfer *xfer)
879 STAILQ_INSERT_TAIL(&fwip->fwb.xferlist, xfer, link);
889 struct fwip_softc *fwip;
894 fwip = (struct fwip_softc *)xfer->sc;
895 ifp = fwip->fw_softc.fwip_ifp;
918 fwip_unicast_input_recycle(fwip, xfer);
939 fd = fw_noderesolve_nodeid(fwip->fd.fc,
975 "fwip",
982 DECLARE_DUMMY_MODULE(fwip);
984 DRIVER_MODULE(fwip, firewire, fwip_driver, fwip_devclass, 0, 0);
985 MODULE_VERSION(fwip, 1);
986 MODULE_DEPEND(fwip, firewire, 1, 1, 1);