Lines Matching defs:fwdev

143  * Lookup fwdev by node id.
148 struct fw_device *fwdev;
151 STAILQ_FOREACH(fwdev, &fc->devices, link)
152 if (fwdev->dst == dst && fwdev->status != FWDEVINVAL)
156 return fwdev;
160 * Lookup fwdev by EUI64.
165 struct fw_device *fwdev;
168 STAILQ_FOREACH(fwdev, &fc->devices, link)
169 if (FW_EUI64_EQUAL(fwdev->eui, *eui))
173 if (fwdev == NULL)
175 if (fwdev->status == FWDEVINVAL)
177 return fwdev;
510 struct fw_device *fwdev, *fwdev_next;
536 for (fwdev = STAILQ_FIRST(&fc->devices); fwdev != NULL;
537 fwdev = fwdev_next) {
538 fwdev_next = STAILQ_NEXT(fwdev, link);
539 free(fwdev, M_FW);
1402 struct fw_device *fwdev;
1414 STAILQ_FOREACH(fwdev, &fc->devices, link)
1415 if (fwdev->status != FWDEVINVAL) {
1416 fwdev->status = FWDEVINVAL;
1417 fwdev->rcnt = 0;
1421 __func__, fwdev->eui.hi, fwdev->eui.lo);
1426 __func__, fwdev->eui.hi, fwdev->eui.lo);
1434 fw_explore_read_quads(struct fw_device *fwdev, int offset,
1442 xfer = fwmem_read_quad(fwdev, NULL, -1, 0xffff,
1461 fw_explore_csrblock(struct fw_device *fwdev, int offset, int recur)
1467 dir = (struct csrdirectory *)&fwdev->csrrom[offset / sizeof(uint32_t)];
1468 err = fw_explore_read_quads(fwdev, CSRROMOFF + offset,
1474 reg = (struct csrreg *)&fwdev->csrrom[offset / sizeof(uint32_t)];
1475 err = fw_explore_read_quads(fwdev, CSRROMOFF + offset,
1483 if (fwdev->rommax < off)
1484 fwdev->rommax = off;
1502 err = fw_explore_csrblock(fwdev, off, recur);
1513 struct fw_device *fwdev, *pfwdev, *tfwdev;
1563 STAILQ_FOREACH(fwdev, &fc->devices, link)
1564 if (FW_EUI64_EQUAL(fwdev->eui, binfo->eui64))
1566 if (fwdev == NULL) {
1568 fwdev = malloc(sizeof(struct fw_device), M_FW,
1570 if (fwdev == NULL) {
1575 fwdev->fc = fc;
1576 fwdev->eui = binfo->eui64;
1577 fwdev->dst = dfwdev->dst;
1578 fwdev->maxrec = dfwdev->maxrec;
1579 fwdev->status = dfwdev->status;
1592 fwdev->speed = fc->speed_map->speed[fc->nodeid][node];
1594 fwdev->speed = binfo->link_spd;
1599 while (fwdev->speed > FWSPD_S100 /* 0 */) {
1600 err = fw_explore_read_quads(fwdev, CSRROMOFF,
1604 "%s: fwdev->speed(%s) decremented due to negotiation\n",
1605 __func__, linkspeed[fwdev->speed]);
1606 fwdev->speed--;
1613 * If the fwdev is not found in the
1618 if (tfwdev->eui.hi > fwdev->eui.hi ||
1619 (tfwdev->eui.hi == fwdev->eui.hi &&
1620 tfwdev->eui.lo > fwdev->eui.lo))
1625 STAILQ_INSERT_HEAD(&fc->devices, fwdev, link);
1627 STAILQ_INSERT_AFTER(&fc->devices, pfwdev, fwdev, link);
1629 fwdev->dst = node;
1630 fwdev->status = FWDEVINIT;
1632 if (bcmp(&csr[0], &fwdev->csrrom[0], sizeof(uint32_t) * 5) == 0) {
1640 bzero(&fwdev->csrrom[0], CROMSIZE);
1643 bcopy(&csr[0], &fwdev->csrrom[0], sizeof(uint32_t) * 5);
1644 fwdev->rommax = CSRROMOFF + sizeof(uint32_t) * 4;
1646 err = fw_explore_csrblock(fwdev, 0x14, 1); /* root directory */
1652 fwdev->status = FWDEVINVAL;
1653 fwdev->csrrom[0] = 0;
1687 /* setup dummy fwdev */
1765 struct fw_device *fwdev, *next;
1771 for (fwdev = STAILQ_FIRST(&fc->devices); fwdev != NULL; fwdev = next) {
1772 next = STAILQ_NEXT(fwdev, link);
1773 if (fwdev->status == FWDEVINIT) {
1774 fwdev->status = FWDEVATTACHED;
1775 } else if (fwdev->status == FWDEVINVAL) {
1776 fwdev->rcnt++;
1779 "fwdev->rcnt(%d), hold_count(%d)\n",
1780 __func__, fwdev->rcnt, hold_count);
1781 if (fwdev->rcnt > hold_count) {
1786 STAILQ_REMOVE(&fc->devices, fwdev, fw_device,
1788 free(fwdev, M_FW);
2279 struct fw_device fwdev;
2314 /* Bus probe has not finished, make dummy fwdev for cmstr */
2315 bzero(&fwdev, sizeof(fwdev));
2316 fwdev.fc = fc;
2317 fwdev.dst = cmstr;
2318 fwdev.speed = 0;
2319 fwdev.maxrec = 8; /* 512 */
2320 fwdev.status = FWDEVINIT;
2323 fwmem_write_quad(&fwdev, NULL, 0/*spd*/,