Pas de réseau filaire avec Linux 5.5

Page principale

Répondre à ce message
Auteur: Edgar Bonet
Date:  
À: guilde
Sujet: Pas de réseau filaire avec Linux 5.5
Bonjour la Guilde !

J'ai un problème avec un Linux embarqué, et je ne sais pas par quel côté
l'aborder. S'il y a ici quelqu'un qui aurait une idée, je suis preneur.

Pour un projet au boulot, j'ai une carte de type « System on Module »
qui porte le joli nom de Acqua[1], et qui est basée sur un SoC SAMA5D31
(Cortex-A5 @ 536 MHz, 32 bits, armhf). Je voudrais l'utiliser avec la
distribution embarquée Buildroot[2]. Je lui ai concocté un fichier
defconfig (configuration de Buildroot), basé sur un noyau 5.4.107, qui
marche à la perfection. Ce fichier de configuration a été accepté par
les mainteneurs de Buildroot[3]. Il fait appel à un device tree fourni
sous licence GPLv2 par le fabriquant de la carte[4].

Maintenant, j'aimerais passer à la dernière LTS du noyau (5.10), mais
quand j'essaye ça, je perds le réseau filaire. J'ai alors essayé des
versions intermédiaires du noyau, pour savoir à partir de quelle version
le problème se manifeste, et j'ai vu que je perds le réseau dès la
version 5.5.

### Mes tests

Pour le noyau 5.4.107 (celui qui marche bien) :

    git clone git://git.buildroot.net/buildroot
    cd buildroot
    make acmesystems_acqua_a5_512mb_defconfig
    make


Je grave ensuite l'image dans une carte microSD, je mets cette carte
dans l'Acqua, je relie celle-ci à mon PC (Ubuntu 20.04) par un câble
réseau, et je boote. J'ai aussi un câble type FTDI connecté à la console
série.

Pour le noyau 5.5 :

    vim configs/acmesystems_acqua_a5_512mb_defconfig
    make clean
    make acmesystems_acqua_a5_512mb_defconfig
    make


et je teste pareil. Les seules modifications apportées au fichier
defconfig sont :

    -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_4=y
    +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_5=y
    -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.4.107"
    +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.5"


### Les symptômes

Le Linux embarqué voit l'interface réseau, mais ne semble pas voir le
câble. La commande

    ip link show eth0


affiche l'état <NO-CARRIER,BROADCAST,MULTICAST,UP>, alors qu'avec le
noyau 5.4 j'avais <BROADCAST,MULTICAST,UP,LOWER_UP>. Dans les deux cas,
sur mon PC, l'interface correspondante est dans l'état
<BROADCAST,MULTICAST,UP,LOWER_UP>. Évidemment, avec NO-CARRIER, udhcpc
n'arrive pas à récupérer une adresse IP.

J'ai capturé les messages affichés sur la console lors du boot, et fait
un « diff -U 999 » entre les versions aux noyaux 5.4 et 5.5. Je n'ai
rien vu de louche. Les seules lignes qui semblent relatives à
l'interface réseau sont celles-ci :

--- boot-5.4-messages    2021-08-10 13:58:46.529968904 +0200
+++ boot-5.5-messages    2021-08-10 13:59:06.494063986 +0200
 ...
-Generic PHY f802c000.ethernet-ffffffff:01: attached PHY driver [Generic PHY] (mii_bus:phy_addr=f802c000.ethernet-ffffffff:01, irq=POLL)
 macb f802c000.ethernet eth0: Cadence MACB rev 0x0001010c at 0xf802c000 irq 35 (fc:c2:3d:0a:32:48)
 ...
-Starting network: udhcpc: started, v1.33.1
+Starting network: macb f802c000.ethernet eth0: PHY [f802c000.ethernet-ffffffff:01] driver [Generic PHY]
+macb f802c000.ethernet eth0: configuring for phy/rmii link mode
+udhcpc: started, v1.33.1
 ...
-macb f802c000.ethernet eth0: link up (100/Full)
-IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready


J'ai uploadé ce diff[5], si quelqu'un veut jeter un coup d'œil.

Merci à ceux qui ont eu la patience de me lire ! Si vous avez des
idées...

À+,

Edgar.

[1] https://www.acmesystems.it/acqua
[2] https://buildroot.org/
[3] https://git.busybox.net/buildroot/tree/configs/acmesystems_acqua_a5_512mb_defconfig
[4] https://git.busybox.net/buildroot/tree/board/acmesystems/acqua-a5/at91-sama5d3_acqua.dts
[5] https://paste.ack.tf/16e28c