Auteur Sujet: Openwrt 22.03.xx - module bnx2x pour le support du 2Gbps  (Lu 1428 fois)

0 Membres et 1 Invité sur ce sujet

Fuli10

  • Abonné Free fibre
  • *
  • Messages: 1 004
  • Conflans Sainte Honorine (78)
Openwrt 22.03.xx - module bnx2x pour le support du 2Gbps
« le: 20 octobre 2022 à 23:00:38 »
Bonjour

Je reprend dans un sujet à part juste la petite partie décrite ici. Il s'agit de builder le driver du BCM57810S supportant la vitesse 2.5Gbps retourné par le module (après avoir modifié la configuration du port).

Je le mets également à jours avec les packages pour les différentes version d'openwrt.

Voilà comment builder le driver bnx2x en incluant le supporte du 2.5Gbps pour les modules FS.com .


git clone https://git.openwrt.org/openwrt/openwrt.git
cd openwrt

git checkout v22.03.2 -b v22.03.2

wget https://downloads.openwrt.org/releases/22.03.2/targets/x86/64/feeds.buildinfo -O feeds.conf.default
./scripts/feeds update -a
./scripts/feeds install -a

wget https://downloads.openwrt.org/releases/22.03.2/targets/x86/64/config.buildinfo -O .config
make menuconfig

Puis je compile tout une première fois:
make -j $(($(nproc)+1)) download world

Après, j'applique le patch. Je n'ai pas chercher à savoir sur quel version du code j'applique le patch: je l'applique partout:
find -name "bnx2x_link.c"
./build_dir/toolchain-x86_64_gcc-11.2.0_musl/linux-5.10.146/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c
./build_dir/target-x86_64_musl/linux-x86_64/linux-5.10.146/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c

cd ./build_dir/toolchain-x86_64_gcc-11.2.0_musl/linux-5.10.146/
patch -p0 < ~/patch/bnx2x_warpcore+8727_2_5g_sgmii.patch

cd ./build_dir/target-x86_64_musl/linux-x86_64/linux-5.10.146/
patch -p0 < ~/patch/bnx2x_warpcore+8727_2_5g_sgmii.patch
Cela a appliqué le patch, puis je rebuild de nouveau avec un simple make world. Et HOP, un package bnx2x qui tiens les 2Gbits.
Pour le patch, il ne me reste plus que ça (je n'ai pas refais la comparaison avec 22.03.2, je laisse ce que j'avais comme diff sur 22.03.0):
diff bnx2x_link.c bnx2x_link2.c
153a154
> #define SFP_EEPROM_CON_TYPE_VAL_SC 0x1
4212a4214,4223
> /* Note that 2.5G works only when used with 1G advertisment */
> if (fiber_mode && (phy->req_line_speed == SPEED_2500) &&
> (phy->speed_cap_mask &
> (PORT_HW_CFG_SPEED_CAPABILITY_D0_1G |
>   PORT_HW_CFG_SPEED_CAPABILITY_D0_2_5G))) {
> bnx2x_cl45_write(bp, phy, MDIO_WC_DEVAD,
> MDIO_WC_REG_SERDESDIGITAL_MISC1,
> 0x6010);
> }
>
4222a4234
> case SPEED_2500:
8174a8187
> case SFP_EEPROM_CON_TYPE_VAL_SC:
8185c8198,8199
< if (phy->req_line_speed != SPEED_1000) {
---
> if ((phy->req_line_speed != SPEED_1000) &&
> (phy->req_line_speed != SPEED_2500)) {
9238a9253
> (phy->req_line_speed == SPEED_2500) ||
9247a9263,9278
> if ((phy->req_line_speed == SPEED_2500) &&
> (phy->speed_cap_mask &
> (PORT_HW_CFG_SPEED_CAPABILITY_D0_1G |
> PORT_HW_CFG_SPEED_CAPABILITY_D0_2_5G))) {
> bnx2x_cl45_read_and_write(bp, phy,
> MDIO_AN_DEVAD,
> MDIO_AN_REG_8727_MISC_CTRL2,
> ~(1<<5));
> bnx2x_cl45_write(bp, phy,
> MDIO_AN_DEVAD,
> MDIO_AN_REG_8727_MISC_CTRL1, 0x0010);
> } else {
> bnx2x_cl45_write(bp, phy,
> MDIO_AN_DEVAD,
> MDIO_AN_REG_8727_MISC_CTRL1, 0x001C);
> }
9269c9300
< MDIO_AN_DEVAD, MDIO_AN_REG_8727_MISC_CTRL, 0);
---
> MDIO_AN_DEVAD, MDIO_AN_REG_8727_MISC_CTRL2, 0);
9277c9308
< MDIO_AN_DEVAD, MDIO_AN_REG_8727_MISC_CTRL,
---
> MDIO_AN_DEVAD, MDIO_AN_REG_8727_MISC_CTRL2,
9279a9311,9313
> MDIO_AN_DEVAD, MDIO_AN_REG_8727_MISC_CTRL1,
> 0x001C);
> bnx2x_cl45_write(bp, phy,
9567a9602,9606
> } else if ((link_status & (1<<1)) && (!(link_status & (1<<14)))) {
> link_up = 1;
> vars->line_speed = SPEED_2500;
> DP(NETIF_MSG_LINK, "port %x: External link up in 2.5G\n",
>    params->port);
9599c9638,9639
<     (phy->req_line_speed == SPEED_1000)) {
---
>     ((phy->req_line_speed == SPEED_1000) ||
>      (phy->req_line_speed == SPEED_2500))) {
11722a11763
>    SUPPORTED_2500baseX_Full |
11908a11950
>    SUPPORTED_2500baseX_Full |
12255a12298
>    SUPPORTED_2500baseX_Full |

Et voilà le résultat:
$ iperf3 -R -4  -c bouygues.testdebit.info -p 9219 -C bbr
Connecting to host bouygues.testdebit.info, port 9219
Reverse mode, remote host bouygues.testdebit.info is sending
[  5] local AAAA port 58218 connected to 89.84.1.186 port 9219
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   245 MBytes  2.06 Gbits/sec                 
[  5]   1.00-2.00   sec   253 MBytes  2.13 Gbits/sec                 
[  5]   2.00-3.00   sec   254 MBytes  2.13 Gbits/sec                 
[  5]   3.00-4.00   sec   256 MBytes  2.15 Gbits/sec                 
[  5]   4.00-5.00   sec   259 MBytes  2.17 Gbits/sec                 
[  5]   5.00-6.00   sec   257 MBytes  2.16 Gbits/sec                 
[  5]   6.00-7.00   sec   260 MBytes  2.18 Gbits/sec                 
[  5]   7.00-8.00   sec   260 MBytes  2.18 Gbits/sec                 
[  5]   8.00-9.00   sec   258 MBytes  2.16 Gbits/sec                 
[  5]   9.00-10.00  sec   259 MBytes  2.17 Gbits/sec                 
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  2.51 GBytes  2.16 Gbits/sec    0             sender
[  5]   0.00-10.00  sec  2.50 GBytes  2.15 Gbits/sec                  receiver

iperf Done.
Du coup je joins les fichier résultat.


Fuli10

  • Abonné Free fibre
  • *
  • Messages: 1 004
  • Conflans Sainte Honorine (78)
Openwrt 22.03.xx - module bnx2x pour le support du 2Gbps
« Réponse #1 le: 20 octobre 2022 à 23:01:29 »
Module compilé pour openwrt 22.03.0

Fuli10

  • Abonné Free fibre
  • *
  • Messages: 1 004
  • Conflans Sainte Honorine (78)
Openwrt 22.03.xx - module bnx2x pour le support du 2Gbps
« Réponse #2 le: 20 octobre 2022 à 23:03:00 »
Module compilé pour openwrt 22.03.2 (la version .1 est à peine restée quelques jours).

ochbob

  • Abonné Orange Fibre
  • *
  • Messages: 231
  • Beauzelle (31)
Openwrt 22.03.xx - module bnx2x pour le support du 2Gbps
« Réponse #3 le: 19 décembre 2022 à 16:17:29 »
Merci pour la synthèse ;)

ochbob

  • Abonné Orange Fibre
  • *
  • Messages: 231
  • Beauzelle (31)
Openwrt 22.03.xx - module bnx2x pour le support du 2Gbps
« Réponse #4 le: 28 décembre 2022 à 09:49:07 »
ipk compilé avec le patch 'txfault' (le dernier en date, les autres sont dépréciés)

https://github.com/JAMESMTL/snippets/tree/master/bnx2x/patches

Installé sur mon routeur en 22.03.2, RAS, je le mets là pour ceux qui veulent.




Fuli10

  • Abonné Free fibre
  • *
  • Messages: 1 004
  • Conflans Sainte Honorine (78)
Openwrt 22.03.xx - module bnx2x pour le support du 2Gbps
« Réponse #5 le: 19 janvier 2023 à 22:35:56 »
Module compilé pour openwrt 22.03.3
J'ai utilisé le patch posté par @ochbob (très peu de différences avec ce que j'avais mais sûrement un bug "connu" de corrigé en plus).

gaiusbaltar

  • Abonné Orange Fibre
  • *
  • Messages: 25
Openwrt 22.03.xx - module bnx2x pour le support du 2Gbps
« Réponse #6 le: 22 avril 2023 à 21:55:13 »
Si jamais vous êtes sur la version plus ancienne 21.02.1 avec le kernel 5.4.154 voici le module compilé et testé fonctionnel à 2.5g sur BMC57810 avec GPON FS .