e1000e ethernet nem működik

Sziasztok. Van egy lenovo t460p laptopom, benne egy 00.1F.6 Intel I219-LM hálókártya, ami az e1000e kernel modult kéri. Egyáltalkán nem működik. Arch linux fut (6.1.2-zen1-1-zen), de más live distrokkal is próbáltam régi és új kernelekkel, és ugyanaz a jelenség. 

[root@t460p ~]# dmesg |grep e1000e
[   17.764435] e1000e: Intel(R) PRO/1000 Network Driver
[   17.764437] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[   17.764626] e1000e 0000:00:1f.6: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode
[   18.319061] e1000e: probe of 0000:00:1f.6 failed with error -2

Próbáltam telepíteni az AUR-ból az e1000e-dkms csomagot, de az elszáll telepítéskor.

Sikerült valakinek ugyanezt életre keltenie linux alatt?

Köszönöm. 

Hozzászólások

Szia!

Az a baj, hogy a e1000_probe driver függvény sok hibakódot láthat. Ki kéne deríteni, mikor -2. Anélkül, hogy újra kéne fordítani a kernelt és printk-zni, bpftrace-el lehetne próbálgatni különböző offsetekre (e1000_probe+0x20, +0x40 stb. akár bináris kereséssel a függvény eleje és vége között) valami debug print üzenetet berakni. Ha megvan az offset, hol tér vissza a -2-vel, akkor meg egy addr2line-al (linux-source vagy hasonló package-el gondolom le tudod szedni a jelenlegi kerneled source-át) meg kéne nézni az melyik sornak felel meg. Lehet már a PCIe probe után rögtön elhasal, fene tudja.

Amit eddig találtam:
drivers/net/ethernet/intel/e1000e/defines.h: #define E1000_ERR_PHY      2

és "return -E1000_ERR_PHY" 22 helyen történik...

Szerkesztve: 2023. 01. 04., sze – 13:14

Találtam egy hibajegyet ami hasonlít a te problémádra, a rossz hír hogy nincs lezárva.

A jegy szerint 4.19-es kernellel még megy.

Nekem 5.15.80 alatt sem fordul már. Ha jól látom más struktúrát feltételez mint ami a kernelben van.

make[1]: Entering directory '/usr/src/linux-5.15.80-gentoo'
  CC [M]  /tmp/e1000e-3.8.4/src/netdev.o
In file included from /tmp/e1000e-3.8.4/src/e1000.h:14,
                 from /tmp/e1000e-3.8.4/src/netdev.c:30:
/tmp/e1000e-3.8.4/src/kcompat.h: In function ‘__kc_xdp_umem_get_data’:
/tmp/e1000e-3.8.4/src/kcompat.h:6696:22: error: ‘struct xdp_umem’ has no member named ‘pages’; did you mean ‘pgs’?
 6696 |         return umem->pages[addr >> PAGE_SHIFT].addr + (addr & (PAGE_SIZE - 1));
      |                      ^~~~~
      |                      pgs
/tmp/e1000e-3.8.4/src/kcompat.h: In function ‘__kc_xdp_umem_get_dma’:
/tmp/e1000e-3.8.4/src/kcompat.h:6704:22: error: ‘struct xdp_umem’ has no member named ‘pages’; did you mean ‘pgs’?
 6704 |         return umem->pages[addr >> PAGE_SHIFT].dma + (addr & (PAGE_SIZE - 1));
      |                      ^~~~~
      |                      pgs
/tmp/e1000e-3.8.4/src/netdev.c: In function ‘e1000_configure_rx’:
/tmp/e1000e-3.8.4/src/netdev.c:3714:17: error: implicit declaration of function ‘pm_qos_update_request’; did you mean ‘freq_qos_update_request’? [-Werror=implicit-function-declaration]
 3714 |                 pm_qos_update_request(&adapter->pm_qos_req, lat);
      |                 ^~~~~~~~~~~~~~~~~~~~~
      |                 freq_qos_update_request
/tmp/e1000e-3.8.4/src/netdev.c: In function ‘e1000e_open’:
/tmp/e1000e-3.8.4/src/netdev.c:5189:9: error: implicit declaration of function ‘pm_qos_add_request’; did you mean ‘freq_qos_add_request’? [-Werror=implicit-function-declaration]
 5189 |         pm_qos_add_request(&adapter->pm_qos_req, PM_QOS_CPU_DMA_LATENCY,
      |         ^~~~~~~~~~~~~~~~~~
      |         freq_qos_add_request
/tmp/e1000e-3.8.4/src/netdev.c:5189:50: error: ‘PM_QOS_CPU_DMA_LATENCY’ undeclared (first use in this function)
 5189 |         pm_qos_add_request(&adapter->pm_qos_req, PM_QOS_CPU_DMA_LATENCY,
      |                                                  ^~~~~~~~~~~~~~~~~~~~~~
/tmp/e1000e-3.8.4/src/netdev.c:5189:50: note: each undeclared identifier is reported only once for each function it appears in
/tmp/e1000e-3.8.4/src/netdev.c:5243:9: error: implicit declaration of function ‘pm_qos_remove_request’; did you mean ‘freq_qos_remove_request’? [-Werror=implicit-function-declaration]
 5243 |         pm_qos_remove_request(&adapter->pm_qos_req);
      |         ^~~~~~~~~~~~~~~~~~~~~
      |         freq_qos_remove_request
/tmp/e1000e-3.8.4/src/netdev.c: In function ‘e1000_io_slot_reset’:
/tmp/e1000e-3.8.4/src/netdev.c:8100:9: error: implicit declaration of function ‘pci_cleanup_aer_uncorrect_error_status’ [-Werror=implicit-function-declaration]
 8100 |         pci_cleanup_aer_uncorrect_error_status(pdev);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/e1000e-3.8.4/src/netdev.c: In function ‘e1000e_set_interrupt_capability’:
/tmp/e1000e-3.8.4/src/netdev.c:2315:35: warning: this statement may fall through [-Wimplicit-fallthrough=]
 2315 |                 adapter->int_mode = E1000E_INT_MODE_MSI;
/tmp/e1000e-3.8.4/src/netdev.c:2317:9: note: here
 2317 |         case E1000E_INT_MODE_MSI:
      |         ^~~~
/tmp/e1000e-3.8.4/src/netdev.c: In function ‘e1000e_reset’:
/tmp/e1000e-3.8.4/src/netdev.c:4543:20: warning: this statement may fall through [-Wimplicit-fallthrough=]
 4543 |                 if (adapter->netdev->mtu > ETH_DATA_LEN) {
      |                    ^
/tmp/e1000e-3.8.4/src/netdev.c:4551:9: note: here
 4551 |         default:
      |         ^~~~~~~
/tmp/e1000e-3.8.4/src/netdev.c: In function ‘e1000_setup_rctl’:
/tmp/e1000e-3.8.4/src/netdev.c:3566:32: warning: this statement may fall through [-Wimplicit-fallthrough=]
 3566 |                         psrctl |= PAGE_SIZE << E1000_PSRCTL_BSIZE3_SHIFT;
/tmp/e1000e-3.8.4/src/netdev.c:3568:17: note: here
 3568 |                 case 2:
      |                 ^~~~
/tmp/e1000e-3.8.4/src/netdev.c:3569:32: warning: this statement may fall through [-Wimplicit-fallthrough=]
 3569 |                         psrctl |= PAGE_SIZE << E1000_PSRCTL_BSIZE2_SHIFT;
/tmp/e1000e-3.8.4/src/netdev.c:3571:17: note: here
 3571 |                 case 1:
      |                 ^~~~
/tmp/e1000e-3.8.4/src/netdev.c: In function ‘__e1000e_disable_aspm’:
/tmp/e1000e-3.8.4/src/netdev.c:7554:31: warning: this statement may fall through [-Wimplicit-fallthrough=]
 7554 |                 aspm_dis_mask |= PCI_EXP_LNKCTL_ASPM_L0S;
/tmp/e1000e-3.8.4/src/netdev.c:7556:9: note: here
 7556 |         case PCIE_LINK_STATE_L1:
      |         ^~~~
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:289: /tmp/e1000e-3.8.4/src/netdev.o] Error 1
make[1]: *** [Makefile:1900: /tmp/e1000e-3.8.4/src] Error 2
make[1]: Leaving directory '/usr/src/linux-5.15.80-gentoo'
make: *** [Makefile:73: default] Error 2

Ha nem tévedek akkor ezt próbálná használni de ebben már nincs pages, csak pgs field/member/hogyhívják ezt C-ben.

struct xdp_umem {
        void *addrs;
        u64 size;
        u32 headroom;
        u32 chunk_size;
        u32 chunks;
        u32 npgs;
        struct user_struct *user;
        refcount_t users;
        u8 flags;
        bool zc;
        struct page **pgs;
        int id;
        struct list_head xsk_dma_list;
        struct work_struct work;
};

Szóval szerintem, ja, régebbi kernelhez készült eredetileg és azóta senki rá sem nézett/frissítette.

Régebbi kernellel, például Debian Stretch -féle 4.9-es kernellel sem megy? Egyszer ugyanis én is jártam így i219-es ethernet kontrollerrel. A 4.9 volt esetemben az utolsó kernelverzió, amelyik jól kezelte az i219-et. A következő Debian verzióban levő 4.19-es kernellel már hibásan működött.
Érdekesség: azóta kezembe kerül másik i219 és ott semmi hiba. Ezek szerint az i219-en belül is lehetnek verziók vagy nem tudom az okát.

en a 3ware RAID vezerlovel jartam igy, hogy ujabb kernellel nem mukodott, nekem ez segitett:

https://bugzilla.kernel.org/show_bug.cgi?id=202425

drivers/pci/quirks.c

DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_3WARE, 0x1004, quirk_no_ext_tags);
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_3WARE, 0x1005, quirk_no_ext_tags);

neked aztan fura humorod van...

igen ezt próbáltam, egy debian live iso-val. 4.19.0.20. Ugyanaz a -2 hibakód.

Egyébként USB-s vackokat szerintem ha teheted kerüld (Wifi az ízlés kérdése) abban az esetben ha végül hálókártyát kellene venni. Használt PCIe kártyák között néznék szét, vagy egy olcsó új kártyát akár (TP-Link TG-3468, benne realtek chip, mainline linux driver támogatással)

Használt PCIe kártyák

Az ugye megvan, hogy a mini PCI express kártyafoglalatban ott van a PCIe busz és jelen van az USB is. A mini PCI express kártyás hálózati eszközök jelentős része az USB vonalat használja ezeken a kártyákon.
36. és 38. érintkező: https://i.stack.imgur.com/oQxmT.png

Bocsi write only komment volt, le sem esett, hogy nem asztali PC-ről hanem laptopról szól a thread.

Egyébként Intel i225-ös (igaz igc driver, nem e1000e) kártyával kapcsolatos driver buggal kapcsolatban nagyon segítőkészek voltak a netdev levlistán, kaptam patch-et is az egyik fejlesztőjétől. Szerintem megpróbálhatsz írni oda, vagy direktbe Tony Nguyennek, ahogy látom ő maintaineli ezeket.

windoz alatt mukodik? nem lehet siman hw hiba?

ez annyira alap HW, hogy tuti nem kernel module gond, hanem HW.

pl itt T470-ben ugyanez van, meg sok másban is. minden kernellel problémamentes.

Szerkesztve: 2023. 01. 04., sze – 19:36

Szia!

BIOS-ba be van kapcsolva minden ami hálókártyával kapcsolatos funkció?
( Lehet le van tiltva valami, ami miatt nem megy a driver )
 

Régen volt olyan bug, amivel taccsra lehetett tenni e1000e hálókártyát, de úgy látom ez a gép újabb annál, hogy ilyen régi kernelt futtassanak rajta...

https://www.computerworld.com/article/2480678/when-linux-goes-bad--the-…

"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."

Szerkesztve: 2023. 01. 05., cs – 14:09

Bekapcsoltam a laptopom: T460s - Fedora 37 - kernel 6.0.9 - nálam megy

[    2.573467] e1000e: Intel(R) PRO/1000 Network Driver
[    2.573470] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[    2.575013] e1000e 0000:00:1f.6: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode
[    2.752279] e1000e 0000:00:1f.6 0000:00:1f.6 (uninitialized): registered PHC clock
[    2.813567] e1000e 0000:00:1f.6 eth0: (PCI Express:2.5GT/s:Width x1) c8:5b:76:36:b7:d4
[    2.813572] e1000e 0000:00:1f.6 eth0: Intel(R) PRO/1000 Network Connection
[    2.813642] e1000e 0000:00:1f.6 eth0: MAC: 12, PHY: 12, PBA No: 1000FF-0FF
[    3.023658] e1000e 0000:00:1f.6 enp0s31f6: renamed from eth0
 

00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection I219-LM (rev 21)
    Subsystem: Lenovo Device 2233
    Flags: bus master, fast devsel, latency 0, IRQ 127
    Memory at f1200000 (32-bit, non-prefetchable) [size=128K]
    Capabilities: [c8] Power Management version 3
    Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+
    Capabilities: [e0] PCI Advanced Features
    Kernel driver in use: e1000e
    Kernel modules: e1000e
 

Lehet hogy ezen már túl vagy és akkor bocsánat a zajért...

Firmware nem kell ennek a kártyának? Ha kell akkor az fenn van?

dmesg | grep -i firmware

Mit mond? Akinél megy az is meg tudná nézni esetleg?

Valóban ez lenne a lényeg, az linux-firmware csomag fent legyen. Jó lenne, ha tudnánk azt is, hogy az e1000-dkms fordítása konkrétan milyen hibaüzenettel áll le.

Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”