mirror of
https://github.com/opnsense/src.git
synced 2026-04-24 23:57:30 -04:00
Within the code path of autonegotiation for gigabit SFP modules was a bug, causing a report of LINK_ERR for cases where an external SFP PHY was present. Fixing this issue did not resolve to a link however, as it turned out that while autonegotiation interrupts were happening, it's resulting status cannot be correctly determined in all cases. In these specific cases we have no other option than to assume a module has negotiated to 1Gbit/s. PHY-specific configuration has been delegated to the miibus driver, if an external PHY is present. It's possible that the i2c bus does not recognize a PHY on the first pass, so in all cases we retry up to a maximum of 5 times during each link poll pass to ensure we didn't miss the presence of an external PHY. This commit also addresses link issues on both 100 mbit and 1Gb fiber modules. Not all of these modules have the correct data set according to SFF-8472, as such we first check for gigabit compliance and the associated baudrate, otherwise we resort back to determining what type of fiber module is plugged in by checking the baudrate, cable length and wavelength and setting the MAC speed accordingly. |
||
|---|---|---|
| .. | ||
| if_axgbe.c | ||
| if_axgbe_pci.c | ||
| xgbe-common.h | ||
| xgbe-dcb.c | ||
| xgbe-desc.c | ||
| xgbe-dev.c | ||
| xgbe-drv.c | ||
| xgbe-i2c.c | ||
| xgbe-mdio.c | ||
| xgbe-phy-v1.c | ||
| xgbe-phy-v2.c | ||
| xgbe-ptp.c | ||
| xgbe-sysctl.c | ||
| xgbe-txrx.c | ||
| xgbe.h | ||
| xgbe_osdep.c | ||
| xgbe_osdep.h | ||