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