Lines Matching refs:pd
372 struct phy_desc *pd = NULL;
375 TAILQ_FOREACH(pd, &sc->phy_desc_head, phy_desc_list) {
376 if (pd->lmacid == lmacid)
380 return (pd);
388 struct phy_desc *pd;
393 pd = get_phy_desc(sc, lmacid);
394 if (pd == NULL) {
401 mii_sc = device_get_softc(pd->miibus);
448 struct phy_desc *pd;
454 pd = get_phy_desc(sc, lmacid);
456 if (pd == NULL) {
457 pd = malloc(sizeof(*pd), M_THUNDER_MDIO, (M_NOWAIT | M_ZERO));
458 if (pd == NULL)
460 pd->ifp = if_alloc(IFT_ETHER);
461 if (pd->ifp == NULL) {
462 free(pd, M_THUNDER_MDIO);
465 pd->lmacid = lmacid;
468 err = mii_attach(dev, &pd->miibus, pd->ifp,
474 if_free(pd->ifp);
475 free(pd, M_THUNDER_MDIO);
480 TAILQ_INSERT_TAIL(&sc->phy_desc_head, pd, phy_desc_list);
490 struct phy_desc *pd;
495 pd = get_phy_desc(sc, lmacid);
496 if (pd == NULL) {
502 TAILQ_REMOVE(&sc->phy_desc_head, pd, phy_desc_list);
506 device_delete_child(dev, pd->miibus);
508 if_free(pd->ifp);
510 free(pd, M_THUNDER_MDIO);