Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: src/sys/dev/pci/ixgbe



Module Name:    src
Committed By:   msaitoh
Date:           Wed Nov  8 08:41:13 UTC 2017

Modified Files:
        src/sys/dev/pci/ixgbe: ixgbe_x550.c

Log Message:
 Fix a bug that Denverton which uses firmware don't linkup if the media is
forced to 100baseTX-FDX or 10baseT-FDX. As I wrote in ixgbe_phy.c rev. 1.13,
popular switches and OSes don't use auto-negotiation if the media is forced to
100BASE-TX or 10BASE-T. Do the same thing. But, if we don't set
FW_PHY_ACT_SETUP_LINK_AN in ixgbe_setup_fw_link(), the firmware wrongly set
BMCR register. Two problems are observed:

        a) FDX may not be set.
        b) BMCR_SPEED1 (bit 6) is always cleard.

        + -------+------+-----------+-----+
        |request | BMCR | BMCR spd | BMCR |
        |        | (HEX)| (in bits)|  FDX |
        +--------+------+----------+------+
        |   10M  | 0000 |  10M(00) |    0 |
        |   10M  | 2100 | 100M(01) |    1 |
        |  100M  | 0000 |  10M(00) |    0 |
        |  100M  | 0100 |  10M(00) |    1 |
        +--------------------------+------+

 To avoid this problem, after sending request to firmware, check BMCR register
and fix the setting if it's required.

 Before this change:

        +------------------+---------------------------------------------+
        |                  |                    denverton                |
        |                  +---------+--------+---------+----------------+
        |                  |   auto  | 1G FDX | 100 FDX |         10 FDX |
        +---------+--------+---------+--------+---------+----------------+
        |         |   auto |  1G FDX | 1G FDX | 100 FDX | 10FDX/down(NG) |
        |         +--------+---------+--------+---------+----------------+
        |         | 1G FDX |  1G FDX | 1G FDX |    down |           down |
        | link    +--------+---------+--------+---------+----------------+
        | partner |100 FDX | down(*1)|   down | down(NG)|           down |
        |         +--------+---------+--------+---------+----------------+
        |         | 10 FDX | down(*1)|   down |    down |       down(NG) |
        +---------+--------+---------+--------+---------+----------------+
        (Observed on: NVM Image Version 0.05 ID 0x8, NVM Map version 1.16,
        OEM NVM Image version 0.06, ETrackID 8000087c)

 After this change:

        +------------------+---------------------------------------------+
        |                  |                    denverton                |
        |                  +---------+--------+---------+----------------+
        |                  |   auto  | 1G FDX | 100 FDX |         10 FDX |
        +---------+--------+---------+--------+---------+----------------+
        |         |   auto |  1G FDX | 1G FDX | 100 FDX |         10 FDX |
        |         +--------+---------+--------+---------+----------------+
        |         | 1G FDX |  1G FDX | 1G FDX |    down |           down |
        | link    +--------+---------+--------+---------+----------------+
        | partner |100 FDX | down(*1)|   down | 100 FDX |           down |
        |         +--------+---------+--------+---------+----------------+
        |         | 10 FDX | down(*1)|   down |    down |         10 FDX |
        +---------+--------+---------+--------+---------+----------------+
        *1): may be correct because ixg doesn't support half duplex.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/dev/pci/ixgbe/ixgbe_x550.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.




Home | Main Index | Thread Index | Old Index