FreeBSD : Chelsio N320E 10G Ethernet
Bonjour à tous,
Aujourd'hui un petit article rapide sur l'utilisation d'une carte Chelsio CC2-N320E-SR soit une carte 10G Ethernet dual port. Leur avantage? le prix! Moins de 40€ par carte!
Si vous cherchez une carte qui fait uniquement du réseau et pas de connecteur iSCSI ou autres fonctions avancées, elles feront très bien l'affaire!
Pour pouvoir configurer et utiliser cette carte, il est nécessaire d'ajouter le chargement du driver au boot (ce dernier est intégré à FreeBSD).
Pour cela, il est nécessaire d'ajouter le driver if_cxgb dans /boot/loader.conf :
if_cxgb_load="YES"
Lors d'un reboot, dans le dmesg j'ai constaté un message me demandant de mettre à jour le firmware de la carte.
D'origine, il était en 5.0 et le dernier disponible en 7.11.
Pour réaliser cette upgrade rien de très compliqué : il faut en premier lieu récupérer le binaire du firmware sur le site de Chelsio :
https://service.chelsio.com/legacy.html
Les binaires sont disponible en fin de page.
Pour pouvoir ensuite appliquer cette mise à jour, il faut utiliser l'outil cxgbtool qui est disponible dans les sources du kernel FreeBSD.
Une fois les sources installées, il faut aller dans /usr/src/tools/tools/cxgbtool et compiler l'outil :
root@freebsd1:~ # make
root@freebsd1:~ # make install
Une fois la compilation terminée, nous avons bien l'outil disponible dans ce dossier :
root@freebsd1:/usr/src/tools/tools/cxgbtool # cxgbtool
Usage: cxgbtool <interface> [operation]
clearstats clear MAC statistics
context <type> <id> show an SGE context
desc <qset> <queue> <idx> [<cnt>] dump SGE descriptors
filter <idx> [<param> <val>] ... set a filter
filter <idx> delete|clear delete a filter
filter list list all filters
ioqs dump uP IOQs
la dump uP logic analyzer info
loadboot <boot image> download boot image
loadfw <FW image> download firmware
mdio <phy_addr> <mmd_addr>
<reg_addr> [<val>] read/write MDIO register
memdump cm|tx|rx <addr> <len> dump a mem range
meminfo show memory info
mtus [<mtu0>...<mtuN>] read/write MTU table
pktsched port <idx> <min> <max> set TX port scheduler params
pktsched tunnelq <idx> <max>
<binding> set TX tunnelq scheduler params
pktsched tx <idx>
[<param> <val>] ... set Tx HW scheduler
pm [<TX page spec> <RX page spec>] read/write PM config
proto read proto SRAM
qset read qset parameters
qsets read # of qsets
reg <address>[=<val>] read/write register
regdump [<module>] dump registers
tcamdump <address> <count> show TCAM contents
tcb <index> read TCB
trace tx|rx|all on|off [not]
[<param> <val>[:<mask>]] ... write trace parameters
Avec les drivers pour les Chelsio suivantes il existe le même type d'outil : cxgbetool mais qui ne supporte pas ces cartes.
Il est possible de charger le driver sans devoir redémarrer :
root@freebsd1:~ # kldload if_cxgb
Nous voyons bien le firmware de chargé :
root@freebsd1:~ # kldstat
Id Refs Address Size Name
1 15 0xffffffff80200000 1f6e480 kernel
2 1 0xffffffff82170000 48440 if_cxgb.ko
3 1 0xffffffff821b9000 33608 mthca.ko
4 2 0xffffffff821ed000 a1010 ibcore.ko
5 3 0xffffffff8228f000 1c960 linuxkpi.ko
6 1 0xffffffff82421000 2986 uhid.ko
Il est donc maintenant possible de passer à l'upgrade de firmware :
root@freebsd1:~ # gzip -d t3fw-7.11.0.bin.gz
root@freebsd1:~ # cxgbtool cxgb0 loadfw t3fw-7.11.0.bin
Une fois l'upgrade fait, il faut décharger et recharger le driver :
root@freebsd1:~ # kldunload if_cxgb
root@freebsd1:~ # kldload if_cxgb
Pour confirmer la mise à jour, il est possible d'utiliser dmesg :
cxgbc0: <Chelsio T320, 2 ports> mem 0xdf3fe000-0xdf3fefff,0xdf3ff000-0xdf3fffff irq 40 at device 0.0 on pci4
cxgbc0: PCIe x4 Link, expect reduced performance
cxgbc0: using MSI-X interrupts (9 vectors)
cxgbc0: Firmware Version 7.11.0
cxgb0: <Port 0 10GBASE-R> on cxgbc0
cxgb0: Using defaults for TSO: 65518/35/2048
cxgb0: Ethernet address: 00:07:43:0c:11:80
cxgb1: <Port 1 10GBASE-R> on cxgbc0
cxgb1: Using defaults for TSO: 65518/35/2048
cxgb1: Ethernet address: 00:07:43:0c:11:81
Le firmware est bien en version 7.11.
Avec ifconfig, nous voyons bien que les interfaces sont disponibles :
root@freebsd1:~ # ifconfig cxgb0
cxgb0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 9000
options=6c07bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,LRO,VLAN_HWTSO,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
ether 00:07:43:0c:11:80
hwaddr 00:07:43:0c:11:80
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
media: Ethernet 10Gbase-Twinax <full-duplex>
status: no carrier
De base, les Chelsio ne passent pas up si aucune adresse IP n'est configurée dessus.
Il ne vous reste qu'à faire la configuration que vous souhaitez et profiter de ces cartes à petit prix!
Have a nice day.