STMicro ethernet driver note 2

Misc

  • stmmac_main.c

    • net_device_ops.ndo_open() => stmmac_open()

    • => alloc_dma_desc_resources()

    • => stmmac_hw_setup()

      • init_dma_desc_rings(struct net_device *dev):

        • set priv->dma_buf_sz by priv->hw->mode->set_16kib_bfsize(dev->mtu)

        • foreach priv->dma_rx: stmmac_init_rx_buffers() => __netdev_alloc_skb() + dma_map_single()

        • foreach priv->dma_tx: zeroing(init) priv->tx_skbuff_dma[i]?? lazy allocation??

        • stmmac_clear_descriptors(): priv->hw->desc->init_rx_desc()

      • stmmac_init_dma_engine(struct stmmac_priv *priv) => priv->hw->dma->init()

      • [mac] priv->hw->mac->set_umac_addr(priv->ioaddr, dev->dev_addr, 0);

      • [bus] priv->plat->bus_setup(priv->ioaddr);

      • priv->hw->mac->core_init(priv->ioaddr, dev->mtu);

      • stmmac_set_mac(priv->ioaddr, true): Enable the MAC Rx/Tx

      • stmmac_dma_operation_mode(priv);

      • stmmac_mmc_setup(priv);

      • stmmac_eee_init(struct stmmac_priv *priv)

        • phy_init_eee(), priv->hw->mac->set_eee_timer()

        • init_timer(), add_timer(), priv->hw->mac->set_eee_timer()

        • priv->hw->mac->set_eee_pls()