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

Reply via email to