2 Replies Latest reply on Aug 15, 2010 10:41 PM by lion3875

    IEEE1588 HW timestamp on 82574 GbE controller

    Green Belt

      Does anyone had been tried to enable the HW timestamp on Linux? I try to fix the driver 1.1.19v on Ubuntu 10.4 according to datasheet but no luck. Below is my senerio:

       

      • HW TX

       

       

      1. The EXTCMD:TS bit is enable according to datasheet 7.2.10.1 & 7.2.10.1.5.
      2. Enable TX timestamp TSYNCTXCTL.
      • HW RX
      1. Set RXCFGL to 0x0800(IPV4) or 0x88F7 (ieee1588 ethertype), V2 messageID set to 0x0(SYNC packet)
      2. Set RXUDP to 0x013F (port 319)
      3. Config TIMINCA
      4. Config SYSTIMH & SYSTIML
      5. Enable TSYNCRXCTL and select mode
      6. Send SYNC packet from ieee1588 devices
      7. Watchdog query TSYNCRXCTL bit 0, if bit became 1b, then queries RXSTMPH/RXSTMPL/RXSATRL/RXSATRH.

       

      TEST CASE & QUESTION:

      1. I use wireshark to sniff the packet, and double check the messageId/versionPTP. The incoming packets seem to be corrected. TSYNCRXCTL bit still remain 0 except no-locking mode 100b. In no-locking mode, RXSTMPH/RXSTMPL/RXSATRL/RXSATRH value change everytime SYNC packet receive.
      2. The main differentiation between mode 100b and other mode is locking, could be somewhere has lock the register (I make a assumption that mode 100b work)?
      3. I try to read the RXSTMPL/RXSTMPH in watchdog timer but still no luck at all. According to datasheet 7.7.3.2, time stamp values will be unlocked after software access, that mean by read the RXSTMPL/RXSTMPH will unlock the timer ?
      4. Do i need to set filter around other registers?

      Anyone, please hint me if you have answer :), i would like to share for opensource community as soon as i merge it with ptpv2d.

       
        • Re: IEEE1588 HW timestamp on 82574 GbE controller
          Community Member
          Hello, I've fiddled with hw time stamping on Kawela and Barton Hills cards, and I'm intererested in your ptpv2 daemon implementation. My project was an untergraduate laboratory with ptpd. Initially I tried to refit the v2 version with hw timestamping, but when i started the original code was far from perfect so I decided to finish the v1 daemon instead. I will post the new code till the end of summer (on sf.net). Later I want to benchmark the different versions under various conditions. Any reply would be appreciated :)
          • Re: IEEE1588 HW timestamp on 82574 GbE controller
            Community Member

            HI guy:

             

                i could enable hw timestamp function on my 82574 GbE NIC, just do the folloing step that u have known:

             

            • Set RXCFGL to 0x0800(IPV4) or 0x88F7 (ieee1588 ethertype), V2 messageID set to 0x0(SYNC packet)   ----------------> not really needed, hw has reset value
            • Set RXUDP to 0x013F (port 319) ----------> not really needed, hw has reset value
            • Set RXCTL to 0x14 ----------> enable hwtstamp function, and select '010' mode(V2 event message)
            • Config TIMINCA
            • Config SYSTIMH & SYSTIML
            • Enable TSYNCRXCTL and select mode
            • Send SYNC packet from ieee1588 devices

             

                when u complish the initialization work, u colud read bit 0 in RXCTL register, it indicate a hw timestamp has been taken, then u could read RXSTMPL & RXSTMPH registers, good luck.

             

             my email: lion3875@gmail.com