Hi all,
I'm trying to figure out what's taking igc/I255 so long to establish link. I
enabled debug logs hoping I'd find something meaningful. Here they are (output
of "dmesg | grep igc"):
[ 0.628173] calling igc_init_module+0x0/0x3b @ 1
[ 0.628234] igc 0000:01:00.0: PCIe PTM not supported by PCIe bus/controller
[ 0.654818] igc 0000:01:00.0 (unnamed net_device) (uninitialized): Timeout is
expired after a phy reset
[ 0.655717] igc 0000:01:00.0 (unnamed net_device) (uninitialized): Masking
off all interrupts
[ 0.675821] igc 0000:01:00.0 (unnamed net_device) (uninitialized): Issuing a
global reset to MAC
[ 0.676061] igc 0000:01:00.0 (unnamed net_device) (uninitialized): PHC added
[ 0.676067] igc 0000:01:00.0 (unnamed net_device) (uninitialized): Masking
off all interrupts
[ 0.696170] igc 0000:01:00.0 (unnamed net_device) (uninitialized): Issuing a
global reset to MAC
[ 0.696175] igc 0000:01:00.0 (unnamed net_device) (uninitialized):
Programming MAC Address into RAR[0]
[ 0.696179] igc 0000:01:00.0 (unnamed net_device) (uninitialized): Clearing
RAR[1-15]
[ 0.696227] igc 0000:01:00.0 (unnamed net_device) (uninitialized): Zeroing
the MTA
[ 0.696252] igc 0000:01:00.0 (unnamed net_device) (uninitialized): Zeroing
the UTA
[ 0.696270] igc 0000:01:00.0 (unnamed net_device) (uninitialized): After
fix-ups FlowControl is now = 3
[ 0.696272] igc 0000:01:00.0 (unnamed net_device) (uninitialized):
Reconfiguring auto-neg advertisement params
[ 0.696808] igc 0000:01:00.0 (unnamed net_device) (uninitialized):
autoneg_advertised af
[ 0.696809] igc 0000:01:00.0 (unnamed net_device) (uninitialized): Advertise
10mb Half duplex
[ 0.696809] igc 0000:01:00.0 (unnamed net_device) (uninitialized): Advertise
10mb Full duplex
[ 0.696810] igc 0000:01:00.0 (unnamed net_device) (uninitialized): Advertise
100mb Half duplex
[ 0.696810] igc 0000:01:00.0 (unnamed net_device) (uninitialized): Advertise
100mb Full duplex
[ 0.696811] igc 0000:01:00.0 (unnamed net_device) (uninitialized): Advertise
1000mb Full duplex
[ 0.696811] igc 0000:01:00.0 (unnamed net_device) (uninitialized): Advertise
2500mb Full duplex
[ 0.696888] igc 0000:01:00.0 (unnamed net_device) (uninitialized): Auto-Neg
Advertising de1
[ 0.697348] igc 0000:01:00.0 (unnamed net_device) (uninitialized): Restarting
Auto-Neg
[ 0.699152] igc 0000:01:00.0 (unnamed net_device) (uninitialized): Unable to
establish link!!!
[ 0.699153] igc 0000:01:00.0 (unnamed net_device) (uninitialized):
Initializing the Flow Control address, type and timer regs
[ 0.701455] igc 0000:01:00.0: 4.000 Gb/s available PCIe bandwidth (5.0 GT/s
PCIe x1 link)
[ 0.701457] igc 0000:01:00.0 eth0: MAC: <REDACTED>
[ 0.701469] initcall igc_init_module+0x0/0x3b returned 0 after 71577 usecs
[ 1.094704] igc 0000:01:00.0 eth0: changing MTU from 1500 to 9000
[ 1.094720] igc 0000:01:00.0 eth0: Masking off all interrupts
[ 1.114868] igc 0000:01:00.0 eth0: Issuing a global reset to MAC
[ 1.114871] igc 0000:01:00.0 eth0: Programming MAC Address into RAR[0]
[ 1.114875] igc 0000:01:00.0 eth0: Clearing RAR[1-15]
[ 1.114923] igc 0000:01:00.0 eth0: Zeroing the MTA
[ 1.114948] igc 0000:01:00.0 eth0: Zeroing the UTA
[ 1.114967] igc 0000:01:00.0 eth0: After fix-ups FlowControl is now = 3
[ 1.114969] igc 0000:01:00.0 eth0: Reconfiguring auto-neg advertisement
params
[ 1.115505] igc 0000:01:00.0 eth0: autoneg_advertised af
[ 1.115505] igc 0000:01:00.0 eth0: Advertise 10mb Half duplex
[ 1.115506] igc 0000:01:00.0 eth0: Advertise 10mb Full duplex
[ 1.115506] igc 0000:01:00.0 eth0: Advertise 100mb Half duplex
[ 1.115506] igc 0000:01:00.0 eth0: Advertise 100mb Full duplex
[ 1.115507] igc 0000:01:00.0 eth0: Advertise 1000mb Full duplex
[ 1.115508] igc 0000:01:00.0 eth0: Advertise 2500mb Full duplex
[ 1.115585] igc 0000:01:00.0 eth0: Auto-Neg Advertising de1
[ 1.116044] igc 0000:01:00.0 eth0: Restarting Auto-Neg
[ 1.117847] igc 0000:01:00.0 eth0: Unable to establish link!!!
[ 1.117847] igc 0000:01:00.0 eth0: Initializing the Flow Control address,
type and timer regs
[ 1.162956] igc 0000:01:00.0 eth0: Timeout is expired after a phy reset
[ 1.172645] igc 0000:01:00.0 eth0: After fix-ups FlowControl is now = 3
[ 1.172647] igc 0000:01:00.0 eth0: Reconfiguring auto-neg advertisement
params
[ 1.173183] igc 0000:01:00.0 eth0: autoneg_advertised af
[ 1.173183] igc 0000:01:00.0 eth0: Advertise 10mb Half duplex
[ 1.173184] igc 0000:01:00.0 eth0: Advertise 10mb Full duplex
[ 1.173184] igc 0000:01:00.0 eth0: Advertise 100mb Half duplex
[ 1.173185] igc 0000:01:00.0 eth0: Advertise 100mb Full duplex
[ 1.173185] igc 0000:01:00.0 eth0: Advertise 1000mb Full duplex
[ 1.173185] igc 0000:01:00.0 eth0: Advertise 2500mb Full duplex
[ 1.173262] igc 0000:01:00.0 eth0: Auto-Neg Advertising de1
[ 1.173721] igc 0000:01:00.0 eth0: Restarting Auto-Neg
[ 1.175529] igc 0000:01:00.0 eth0: Unable to establish link!!!
[ 1.175529] igc 0000:01:00.0 eth0: Initializing the Flow Control address,
type and timer regs
[ 1.175616] igc 0000:01:00.0 eth0: Set default MAC address filter: address
<REDACTED>
[ 1.175685] igc 0000:01:00.0 eth0: MAC address filter set in HW: index 0
[ 3.747284] igc 0000:01:00.0 eth0: Flow Control = FULL.
[ 3.747287] igc 0000:01:00.0 eth0: 1000 Mbs,
[ 3.747288] igc 0000:01:00.0 eth0: Full Duplex
[ 3.747290] igc 0000:01:00.0 eth0: hw->fc.current_mode = 3
[ 3.747293] igc 0000:01:00.0 eth0: 1000 Mbs,
[ 3.747293] igc 0000:01:00.0 eth0: Full Duplex
[ 3.747301] igc 0000:01:00.0 eth0: 1000 Mbs,
[ 3.747301] igc 0000:01:00.0 eth0: Full Duplex
[ 3.747303] igc 0000:01:00.0 eth0: NIC Link is Up 1000 Mbps Full Duplex, Flow
Control: RX/TX
Is it normal for auto-negotiation to fail multiple times at the beginning? Is it
some kind of setup procedure or is it out of the ordinary?
Total time for initialization + link up is about ~3.2 seconds, I wonder if this
is normal and if it can be further reduced? I'm aiming for init to link up speed
only, interface speed does not matter to me.
Thanks,
Mateusz
--
Mateusz Kusiak
Junior Embedded Systems Developer
https://3mdeb.com | @3mdeb_com