MCPcopy Create free account
hub / github.com/F-Stack/f-stack / arge_init_locked

Function arge_init_locked

freebsd/mips/atheros/if_arge.c:1448–1509  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1446}
1447
1448static void
1449arge_init_locked(struct arge_softc *sc)
1450{
1451 struct ifnet *ifp = sc->arge_ifp;
1452 struct mii_data *mii;
1453
1454 ARGE_LOCK_ASSERT(sc);
1455
1456 ARGEDEBUG(sc, ARGE_DBG_RESET, "%s: called\n", __func__);
1457
1458 if ((ifp->if_flags & IFF_UP) && (ifp->if_drv_flags & IFF_DRV_RUNNING))
1459 return;
1460
1461 ARGEDEBUG(sc, ARGE_DBG_RESET, "%s: init'ing\n", __func__);
1462
1463 /* Init circular RX list. */
1464 if (arge_rx_ring_init(sc) != 0) {
1465 device_printf(sc->arge_dev,
1466 "initialization failed: no memory for rx buffers\n");
1467 arge_stop(sc);
1468 return;
1469 }
1470
1471 /* Init tx descriptors. */
1472 arge_tx_ring_init(sc);
1473
1474 /* Restart DMA */
1475 arge_reset_dma(sc);
1476
1477 if (sc->arge_miibus) {
1478 mii = device_get_softc(sc->arge_miibus);
1479 mii_mediachg(mii);
1480 }
1481 else {
1482 /*
1483 * Sun always shines over multiPHY interface
1484 */
1485 sc->arge_link_status = 1;
1486 }
1487
1488 ifp->if_drv_flags |= IFF_DRV_RUNNING;
1489 ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
1490
1491 if (sc->arge_miibus) {
1492 callout_reset(&sc->arge_stat_callout, hz, arge_tick, sc);
1493 arge_update_link_locked(sc);
1494 }
1495
1496 ARGEDEBUG(sc, ARGE_DBG_RESET, "%s: desc ring; TX=0x%x, RX=0x%x\n",
1497 __func__,
1498 ARGE_TX_RING_ADDR(sc, 0),
1499 ARGE_RX_RING_ADDR(sc, 0));
1500
1501 ARGE_WRITE(sc, AR71XX_DMA_TX_DESC, ARGE_TX_RING_ADDR(sc, 0));
1502 ARGE_WRITE(sc, AR71XX_DMA_RX_DESC, ARGE_RX_RING_ADDR(sc, 0));
1503
1504 /* Start listening */
1505 ARGE_WRITE(sc, AR71XX_DMA_RX_CONTROL, DMA_RX_CONTROL_EN);

Callers 2

arge_initFunction · 0.85
arge_ioctlFunction · 0.85

Calls 7

arge_rx_ring_initFunction · 0.85
device_printfFunction · 0.85
arge_stopFunction · 0.85
arge_tx_ring_initFunction · 0.85
arge_reset_dmaFunction · 0.85
device_get_softcFunction · 0.85
arge_update_link_lockedFunction · 0.85

Tested by

no test coverage detected