3 Replies Latest reply on Dec 2, 2015 1:25 PM by PVWB

    82599 EEPROM Checksum and driver problems

    PVWB Brown Belt

      Dear All,

       

      We are trying to bringup an 82599 device on our Intel based board.
      We are using the 82599_XAUI_NO_MNG_4.25/82599_XAUI_NO_MNG_4.25.bin
      file from the 82599_EEPROM.zip ZIP archive, programmed into a
      AT25256 and then connected to the 82599.  Is this the correct procedure

      for this?

       

      When we boot linux, the 82599 shows up in lspci as expected.
      However the driver shows the following errors:

       

      linux:~ # dmesg | grep ixgbe
      [    5.962844] ixgbe: Intel(R) 10 Gigabit PCI Express Network Driver - version 3.19.1-k
      [    5.962847] ixgbe: Copyright (c) 1999-2014 Intel Corporation.
      [    6.051039] ixgbe 0000:01:00.0: The EEPROM Checksum Is Not Valid
      [    6.051157] ixgbe: probe of 0000:01:00.0 failed with error -5
      [    6.140016] ixgbe 0000:01:00.1: The EEPROM Checksum Is Not Valid
      [    6.140111] ixgbe: probe of 0000:01:00.1 failed with error -5
      linux:~ #

       

      Is the checksum in 82599_XAUI_NO_MNG_4.25.bin really not correct?
      I tried using eeupdate under DOS to fix this, but eeupdate doesn't
      seem to work right either.  I tried the /CALCCHKSUM option first,
      then the /MAC_DUMP option, but both give the same error message.

       

      I read the EEPROM back afterwards.  Somehow 0x387, 0x388, 0x3A3 and
      0x384 got cleared, but these aren't the checksum bits.

       

      What does the eeupdate error message:
      Unable to initialize adapter 2 code c86a2002
      Adapter initialization failed
      actually mean?

       

      Any idea about how to continue with this?

       

      C:\>eeupdate /NIC=2 /CALCCHKSUM
                                                                                     
      Using: Intel (R) PRO Network Connections SDK v2.25.20
      EEUPDATE v5.25.20.03
      Copyright (C) 1995 - 2015 Intel Corporation
      Intel (R) Confidential and not for general distribution.
                                                                                     
                                                                                     
      NIC Bus Dev Fun Vendor-Device  Branding string
      === === === === ============= =================================================
        1   0  25  00   8086-153A    Intel(R) Ethernet Connection I217-LM
        2   1  00  00   8086-10FC    Intel(R) 82599 10 Gigabit Dual Port Network Conn
        3   1  00  01   8086-10FC    Intel(R) 82599 10 Gigabit Dual Port Network Conn
        4   9  00  00   8086-1538    Intel(R) I210 Gigabit Network Connection
                                                                                     
                                                                                     
      Unable to initialize adapter 2 code c86a2002
      Adapter initialization failed

       

      C:\>eeupdate /NIC=2 /MAC_DUMP

       

      Using: Intel (R) PRO Network Connections SDK v2.25.20
      EEUPDATE v5.25.20.03
      Copyright (C) 1995 - 2015 Intel Corporation
      Intel (R) Confidential and not for general distribution.

       


      NIC Bus Dev Fun Vendor-Device  Branding string
      === === === === ============= =================================================
        1   0  25  00   8086-153A    Intel(R) Ethernet Connection I217-LM
        2   1  00  00   8086-10FC    Intel(R) 82599 10 Gigabit Dual Port Network Conn
        3   1  00  01   8086-10FC    Intel(R) 82599 10 Gigabit Dual Port Network Conn
        4   9  00  00   8086-1538    Intel(R) I210 Gigabit Network Connection

       


      Unable to initialize adapter 2 code c86a2002
      Adapter initialization failed

       

      C:\>
      paul@adax:~/packetrunnerI/8259

        • Re: 82599 EEPROM Checksum and driver problems
          Carlos_A Brown Belt

          Hello PVWB,

           

          Thanks you for contacting the Intel Embedded Community.

           

          We suggest you confirm that you have followed the recommendation stated in sections 1.2.6, 3.4, 6, and 12.3; on pages 25, from 99 to 105, from 215 to 272, and 957 of the Intel(R) 82599 10 Gigabit Ethernet Controller: Datasheet. Also, you should verify that you have implemented the workarounds for the errata 2, 8, 13, 26, 33, 37, 39, 40, 42, 47, 49, 55, and 58; on pages 18, 19, 26, 31, 34, from 36 to 39, 41, 43, 45, 46, and 47 of the Intel(R) 82599 10 GbE Controller Specification Update.

           

          Please let us know if this information is useful to you.

           

          Best Regards,

          Carlos_A.

            • Re: 82599 EEPROM Checksum and driver problems
              PVWB Brown Belt

              Dear Carlos,

               

              Thank you for your reply.  We will look at the suggested paragraphs.

               

              We found that we had a pull-up and pull-down missing from our design.

              After installing these, the driver now reports a bad MAC address.  Though

              eeupdate still fails.  The driver code mentions getting a MAC address

              out of an RAR register.  The RAR0 register is mentioned once in the

              data sheet on page 586, but there is no address specified for it.

               

              We changed the MAC address in the PCIe General Config area and

              re-calculated the checksum.  But evidentally this is not the right MAC

              address, as we get the same "bad MAC address" error.  So where is

              the MAC address for the device located in the EEPROM?

               

              Thanks, Paul.

                • Re: 82599 EEPROM Checksum and driver problems
                  PVWB Brown Belt

                  Dear Carlos,

                   

                  By reading the driver source code, we found that the MAC addresses

                  that actually get used are read from RAL and RAH registers.

                  In our particular image, the MAC addresses that are loaded

                  into these registers are stored in the the EEPROM

                  starting at byte address 0x360 and 0x370.
                  The checksum is at byte address 0x7E and 0x7F.  Note that
                  Intel documents all use short addresses, so these must be
                  doubled to get the byte address.  To calculate the checksum,
                  change the MAC addresses, then compile and run the chk program

                  to get the checksum.  Byte swap it before writing the EEPROM.

                   

                  With these additions to the Intel binary, the driver loads correctly

                  and "ifconfig" shows the interfaces.  We can assign a IP

                  address to the interface. We will try data transfer next

                   

                  The eeupdate program still doesn't work.  Did it ever work for the

                  82599?  If so, why doesn't it work for us?

                   

                  Thanks, Paul.