/be2net

Rebuild be2net NIC driver from kernel source

Primary LanguageC

## Môi trường build

- Kernel 3.10.0-957.48.1.el7.x86_64
- Cài đặt thêm gói kernel-devel-3.10.0-957.48.1.el7.x86_64.rpm
- Download gói của kernel-3.10.0-957.48.1.el7.x86_64.src.rpm từ redhat repo

## Build driver

- Extract source từ kernel-3.10.0-957.48.1.el7.x86_64.src.rpm
- Copy file ".config" và "Module.symvers" từ /usr/src/kernels/3.10.0-957.48.1.el7.x86_64/ vào kernel-3.10.0-957.48.1.el7.src/linux-3.10.0-957.48.1.el7/
- Cd linux-3.10.0-957.48.1.el7
- Build module be2net
```
make prepare
make prepare_modules
make SUBDIRS=scripts/mod
make SUBDIRS=drivers/net/ethernet/emulex/benet modules
```
- Driver build thành công: drivers/net/ethernet/emulex/benet/be2net.ko
- Check thông tin driver sau khi build
```
[root@root ~]# modinfo /home/admin/build/linux-3.10.0-957.48.1.el7/drivers/net/ethernet/emulex/benet/be2net.ko
filename:       /home/admin/build/linux-3.10.0-957.48.1.el7/drivers/net/ethernet/emulex/benet/be2net.ko
license:        GPL
author:         Emulex Corporation
description:    Emulex OneConnect NIC Driver 11.4.0.0r
version:        11.4.0.0r
retpoline:      Y
rhelversion:    7.6
srcversion:     5B00384ACE40E8B1CFD6623
alias:          pci:v000010DFd00000728sv*sd*bc*sc*i*
alias:          pci:v000010DFd00000720sv*sd*bc*sc*i*
alias:          pci:v000010DFd0000E228sv*sd*bc*sc*i*
alias:          pci:v000010DFd0000E220sv*sd*bc*sc*i*
alias:          pci:v000019A2d00000710sv*sd*bc*sc*i*
alias:          pci:v000019A2d00000700sv*sd*bc*sc*i*
alias:          pci:v000019A2d00000221sv*sd*bc*sc*i*
alias:          pci:v000019A2d00000211sv*sd*bc*sc*i*
depends:        
vermagic:       3.10.0 SMP mod_unload modversions 
parm:           num_vfs:Number of PCI VFs to initialize (uint)
parm:           rx_frag_size:Size of a fragment that holds rcvd data. (ushort)
```

## Install driver

- Nén file driver thành be2net.ko.xz và copy vào đường dẫn mặc định theo driver hiện tại `/lib/modules/3.10.0-957.5.1.el7.x86_64/kernel/drivers/net/ethernet/emulex/benet/be2net.ko.xz`
```
[root@root ~]# modinfo be2net
filename:       /lib/modules/3.10.0-957.5.1.el7.x86_64/kernel/drivers/net/ethernet/emulex/benet/be2net.ko.xz
license:        GPL
author:         Emulex Corporation
description:    Emulex OneConnect NIC Driver 11.4.0.0r
version:        11.4.0.0r
retpoline:      Y
rhelversion:    7.6
srcversion:     1AB9590A30E3B56B3377227
alias:          pci:v000010DFd00000728sv*sd*bc*sc*i*
alias:          pci:v000010DFd00000720sv*sd*bc*sc*i*
alias:          pci:v000010DFd0000E228sv*sd*bc*sc*i*
alias:          pci:v000010DFd0000E220sv*sd*bc*sc*i*
alias:          pci:v000019A2d00000710sv*sd*bc*sc*i*
alias:          pci:v000019A2d00000700sv*sd*bc*sc*i*
alias:          pci:v000019A2d00000221sv*sd*bc*sc*i*
alias:          pci:v000019A2d00000211sv*sd*bc*sc*i*
depends:        
intree:         Y
vermagic:       3.10.0-957.5.1.el7.x86_64 SMP mod_unload modversions 
signer:         CentOS Linux kernel signing key
sig_key:        9D:B7:8A:D7:C3:E3:33:8C:DB:7A:0D:8A:8D:08:F8:80:B4:14:8D:5C
sig_hashalgo:   sha256
parm:           num_vfs:Number of PCI VFs to initialize (uint)
parm:           rx_frag_size:Size of a fragment that holds rcvd data. (ushort)
```
- Check lại driver
```
[root@root ~]# modinfo be2net
filename:       /lib/modules/3.10.0-957.48.1.el7.x86_64/kernel/drivers/net/ethernet/emulex/benet/be2net.ko.xz
license:        GPL
author:         Emulex Corporation
description:    Emulex OneConnect NIC Driver 11.4.0.0r
version:        11.4.0.0r
retpoline:      Y
rhelversion:    7.6
srcversion:     5B00384ACE40E8B1CFD6623
alias:          pci:v000010DFd00000728sv*sd*bc*sc*i*
alias:          pci:v000010DFd00000720sv*sd*bc*sc*i*
alias:          pci:v000010DFd0000E228sv*sd*bc*sc*i*
alias:          pci:v000010DFd0000E220sv*sd*bc*sc*i*
alias:          pci:v000019A2d00000710sv*sd*bc*sc*i*
alias:          pci:v000019A2d00000700sv*sd*bc*sc*i*
alias:          pci:v000019A2d00000221sv*sd*bc*sc*i*
alias:          pci:v000019A2d00000211sv*sd*bc*sc*i*
depends:        
vermagic:       3.10.0 SMP mod_unload modversions 
parm:           num_vfs:Number of PCI VFs to initialize (uint)
parm:           rx_frag_size:Size of a fragment that holds rcvd data. (ushort)
```
- Thay thế driver
```
rmmod ocrdma
rmmod be2net
modprobe be2net
```
- Check lại thông tin driver apply trên NIC:
```
[root@ linux-3.10.0-957.48.1.el7]# ethtool -i enp3s0f0
driver: be2net
version: 11.4.0.0r-patch-DATLE
firmware-version: 10.2.630.0
expansion-rom-version: 
bus-info: 0000:03:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: yes
```