2016年9月25日 星期日

AM335x Ethernet

AM335x 內建有 3 埠 Ethernet Switch,連接兩個 GMII 埠及 SoC Host,驅動程式使用 cpsw (CONFIG_CPSW,device tree 是 ti,cpsw)。

網路界面可使用單一 eth0,或者 eth0 加上 eth1。後者是 dual_emac 模式,可透過 device tree 設定。dual_emac 會有兩份 net_device 及 priv,有各自的 MAC address,但有許多東西是相同或共用的。

接收封包 (使用 NAPI)
  • 原本就有 sk_buff,open 時就準備好給驅動程式 DMA 使用。
  • 如果是 dual_emac 模式,會去看來自哪個 GMII port,取得精確的 net_device 及 priv
  • 取新 sk_buff 給之後封包 DMA 用。如果取不到,拋棄此封包,原本的 sk_buff 給之後封包 DMA 用。
  • 設 time stamp、protocol,netif_receive_skb() 及統計
註:
  • AM335x 不是 ARCH_DAVINCI,但用 DaVinci 的 MDIO 及 CPDMA。ti 有下列網路界面
    • CPSW (ARCH_DAVINCI or SOC_AM33XX): +DaVinci MDIO +DaVinci CPDMA +CPSW Phy sel
      • CPTS (CPSW): +PTP_1588_CLOCK
    • DaVinci EMAC (ARCH_DAVINCI or ARCH_OMAP3): +DaVinci MDIO +DaVinci CPDMA
    • TLAN (PCI or EISA)
    • CPMAC (AR7)
  • kernel source code 在 git://git.ti.com/ti-linux-kernel/ti-linux-kernel.git
參考來源
  1. http://processors.wiki.ti.com/index.php/Linux_Core_CPSW_User%27s_Guide

沒有留言:

張貼留言

SIP header Via

所有 SIP 訊息 都要有 Via,縮寫 v。一開始的 UAC 和後續途經的每個 proxy 都會疊加一個 Via 放傳送的位址,依序作為回應的路徑。 格式 sent-protocol sent-by [ ;branch= branch ][ ; 參數 ...] s...