82574 GbE網卡的硬件時間戳功能須要初始化,Tx與Rx部分略有不一樣,大體流程以下,只要把寄存器置好,就能夠拿回想要的時間戳啦:ide
- The EXTCMD:TS bit is enable according to datasheet 7.2.10.1 & 7.2.10.1.5.
- Enable TX timestamp TSYNCTXCTL.
- Set RXCFGL to 0x0800(IPV4) or 0x88F7 (ieee1588 ethertype), V2 messageID set to 0x0(SYNC packet)
- Set RXUDP to 0x013F (port 319)
- Config TIMINCA
- Config SYSTIMH & SYSTIML
- Enable TSYNCRXCTL and select mode
- Send SYNC packet from ieee1588 devices
- Watchdog query TSYNCRXCTL bit 0, if bit became 1b, then queries RXSTMPH/RXSTMPL/RXSATRL/RXSATRH.
注:RX中第三、4步很關鍵,能夠放在網卡probe函數裏作,2.6.31內核igb驅動(8257五、82576)的代碼其實已經寫的很清楚了,這些步驟是對代碼的一個總結而已,e1000e(82574)的驅動能夠徹底參照igb驅動的代碼寫,部分寄存器地址不一致調整一下就能夠了函數