Bug 172895

Summary: [ixgb] [ixgbe] do not properly determine link-state
Product: Base System Reporter: Enji Cooper <ngie>
Component: kernAssignee: freebsd-net (Nobody) <net>
Status: Closed Overcome By Events    
Severity: Affects Only Me CC: asomers, erj, jch, kbowling, sbruno
Priority: Normal Keywords: IntelNetworking
Version: 9.1-PRERELEASE   
Hardware: Any   
OS: Any   

Description Enji Cooper freebsd_committer freebsd_triage 2012-10-20 05:30:01 UTC
When kldload'ing the kernel modules for if_ixgb or ixgbe, I noticed that
it doesn't properly change the interface state from inactive to active
state (and in fact it seems to think the link is down as opposed to up).
If I manually ifconfig up the interface, then it starts passing traffic.

From dmesg...

ix0: <Intel(R) PRO/10GbE PCI-Express Network Driver, Version - 2.4.8> port 0xef8
0-0xef9f mem 0xfae00000-0xfaefffff,0xfadfc000-0xfadfffff irq 26 at device 0.0 on
 pci7
ix0: Using MSIX interrupts with 9 vectors
ix0: RX Descriptors exceed system mbuf max, using default instead!
ix0: Ethernet address: 00:1b:21:88:51:c4
ix0: PCI Express Bus: Speed 5.0Gb/s Width x8
ix1: <Intel(R) PRO/10GbE PCI-Express Network Driver, Version - 2.4.8> port 0xef4
0-0xef5f mem 0xfac00000-0xfacfffff,0xfabfc000-0xfabfffff irq 25 at device 0.1 on
 pci7
ix1: Using MSIX interrupts with 9 vectors
ix1: RX Descriptors exceed system mbuf max, using default instead!
ix1: Ethernet address: 00:1b:21:88:51:c5
ix1: PCI Express Bus: Speed 5.0Gb/s Width x8

From pciconf -lv...

ix0@pci0:7:0:0: class=0x020000 card=0x000c8086 chip=0x10fb8086 rev=0x01 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = '82599EB 10-Gigabit SFI/SFP+ Network Connection'
    class      = network
    subclass   = ethernet
ix1@pci0:7:0:1: class=0x020000 card=0x000c8086 chip=0x10fb8086 rev=0x01 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = '82599EB 10-Gigabit SFI/SFP+ Network Connection'
    class      = network
    subclass   = ethernet

How-To-Repeat: 1. Boot the 9.1-RC2 livecd.
2. Boot into Live CD mode.
3. kldload if_ixgb.
4. ifconfig will show that the interfaces are not active.
Comment 1 Mark Linimon freebsd_committer freebsd_triage 2012-10-22 02:24:47 UTC
Responsible Changed
From-To: freebsd-bugs->freebsd-net

reclassify.
Comment 2 Sean Bruno freebsd_committer freebsd_triage 2015-08-03 17:36:23 UTC
Garret:

I can't reproduce this issue, I suspect it has been fixed for a while.  Reopen it if there is still a problem here.
Comment 3 Enji Cooper freebsd_committer freebsd_triage 2015-08-03 18:16:52 UTC
(In reply to Sean Bruno from comment #2)

Sorry for not commenting on this sooner.

Bottom line, Jack said it was by design in a post I made to freebsd-net some time
ago (I can't find the link). It had something to do with Intel choosing "power saving support" as the default vs not choosing "power saving support".

How did you try and repro the issue? What driver version/ISO did you try to repro the issue with? Etc.

In particular, the problem is easy to repro (in my case) (if and only if) you choose to not enable DHCP by default (which ifconfig up's the interface), and it was particularly easy when dealing with the klds instead of having it statically compiled into the kernel.

SFP modules might also be a factor.
Comment 4 Sean Bruno freebsd_committer freebsd_triage 2015-08-03 18:28:20 UTC
(In reply to Garrett Cooper,425-314-3911 from comment #3)
Ah, every single adapter we have in production has a static IP address.

Maybe erj@ has a difference view on this?
Comment 5 Alan Somers freebsd_committer freebsd_triage 2015-09-17 16:57:51 UTC
I can also reproduce this issue.  Anytime that the interface is down or up but without an IP address, the link state is "no carrier".  Is there any way to disable "power saving support"?
Comment 6 Sean Bruno freebsd_committer freebsd_triage 2015-09-17 17:05:56 UTC
(In reply to Alan Somers from comment #5)
Yeah, I *just* ran into this today.  Very confusing.
Comment 7 Alan Somers freebsd_committer freebsd_triage 2015-09-25 22:39:44 UTC
(In reply to Alan Somers from comment #5)

Actually, that's not 100% true.  It turns out that my interface _will_ report carrier status when up but with no IP.  It just takes a few seconds.
Comment 8 Kevin Bowling freebsd_committer freebsd_triage 2021-09-28 18:22:42 UTC
The admin task in FreeBSD 12+ takes care of link status changes for this card, it can be delayed by a few cycles as asomers points out.  Closing as OBE since supported FreeBSD versions should be working as expected.