目录

简介

先决条件

要求

使用的组件

背景信息

适用硬件

排除Nexus SmartNIC硬件安装故障

步骤1.检验硬件安装是否正确。

步骤2.检验PCI Express插槽兼容性。

步骤3.验证在活动PCI Express插槽中的安装。

步骤4.检验Nexus SmartNIC是否通电。

步骤5.检验固件完整性。

步骤6.检验主机操作系统PCI Express检测。

排除Nexus SmartNIC软件驱动程序安装故障

步骤1.检验驱动程序的使用情况。

步骤2.检验驱动程序安装。

从RPM（apt、yum等）验证驱动程序安装

从源验证驱动程序安装

步骤3.尝试加载软件驱动程序。

“modprobe:致命：“Module exanic not found（找不到模块exanic）”错误消息

“modprobe:所需密钥不可用”错误消息

步骤4.确认Nexus SmartNIC实用程序功能。

相关信息

简介

本文档介绍用于排除Nexus SmartNIC（以前称为Exablaze ExaNIC）低延迟网络接口卡硬件和软件驱动程序安装故障的步骤。

先决条件

要求

思科建议您了解Nexus SmartNIC系列低延迟网络接口卡的硬件安装过程。思科还建议您基本了解Linux命令行界面。

使用的组件

本文档中的信息在特定实验室环境设备上创建。本文档中使用的所有设备最初均采用原始（默认）配置。如果您使用的是真实网络，请确保您已经了解所有命令的潜在影响。

背景信息

适用硬件

本文档中介绍的程序适用于此硬件：

- Nexus SmartNIC X10

- Nexus SmartNIC X10-HPT

- Nexus SmartNIC X10-GM

- Nexus SmartNIC X25

- Nexus SmartNIC X40

- Nexus SmartNIC X100

- Nexus SmartNIC V5P

- Nexus SmartNIC V9P

排除Nexus SmartNIC硬件安装故障

本文档的此部分介绍用于排除Nexus SmartNIC低延迟网络接口卡硬件安装问题的步骤。当主机操作系统（通常为Linux发行版或Windows服务器）不将Nexus SmartNIC识别为有效的PCI Express外围设备时，请遵循本文档的此部分。

步骤1.检验硬件安装是否正确。

Nexus SmartNIC网络接口卡必须正确安装在主板或提升板/子卡的PCI Express(PCIe)插槽中。有关如何安装PCIe卡的其他信息，请参阅制造商提供的主机手册。

有关Cisco UCS服务器上PCIe卡安装的更多信息，请参阅以下支持文档：

- Cisco UCS C220 M5服务器安装和服务指南

- Cisco UCS C240 M5服务器安装和服务指南

步骤2.检验PCI Express插槽兼容性。

所有Nexus SmartNIC网络接口卡必须安装在兼容PCIe 3.0的插槽中。此外，必须至少使用带49针的PCIe x8插槽来连接所有Nexus SmartNIC网络接口卡。有关PCIe插槽是否符合这些规格的其他信息，请参阅制造商提供的主机手册。

有关Cisco UCS服务器上PCIe插槽规格的其他信息，请参阅下表和支持文档：

Cisco UCS服务器型号

PCIe插槽兼容性

支持文档

思科UCS C220 M5

所有PCIe插槽均兼容

Cisco UCS C220 M5服务器安装和服务指南

思科UCS C240 M5

所有PCIe插槽均兼容

Cisco UCS C240 M5服务器安装和服务指南

步骤3.验证在活动PCI Express插槽中的安装。

必须将Nexus SmartNIC正确插入连接到主用安装CPU（中央处理单元）的PCI Express插槽中。 如果主机配备了多个CPU插槽，其中只有一个插槽安装了CPU（也称为“单CPU配置”），则并非所有PCIe插槽都可能处于活动状态且工作正常。有关在单CPU配置中激活哪些PCIe插槽的其他信息，请参阅制造商提供的主机手册。

有关单CPU配置中Cisco UCS服务器上活动PCIe插槽的其他信息，请参阅下表和支持文档：

Cisco UCS服务器型号

活动PCIe插槽

支持文档

思科UCS C220 M5

PCIe提升板1，插槽1

Cisco UCS C220 M5服务器安装和服务指南

思科UCS C240 M5

PCIe提升板1，插槽1

PCIe提升板1，插槽2

PCIe提升板1B，插槽1

PCIe提升板1B，插槽2

PCIe提升板1B，插槽3

Cisco UCS C240 M5服务器安装和服务指南

步骤4.检验Nexus SmartNIC是否通电。

每个Nexus SmartNIC网络接口卡在PCIe支架上都有许多LED（发光二极管）。这些LED通常从主机外部可见。网络接口卡上的每个SFP+和QSFP端口都有一个与其关联的较大LED。这些LED统称为端口LED。

在仅带SFP+端口的网络接口卡上，存在与PPS连接器关联的额外较小的红色LED（Nexus SmartNIC X10-GM除外，其中小的红色LED与大主时钟状态关联）。 此LED称为PPS LED。

注意：配备QSFP端口的Nexus SmartNIC网络接口卡没有PPS LED。

总之，请参阅下表：

Nexus SmartNIC型号

端口发光二极管

PPS LED

X10

Yes

Yes

X10-HPT

Yes

Yes

X10-GM

Yes

是(GPS)

X25

Yes

Yes

X40

Yes

无

X100

Yes

无

V5P

Yes

无

V9P

Yes

无

当Nexus SmartNIC网络接口卡与主机一起首次通电时，网络接口卡上的所有LED应会短暂闪烁。如果主机通电后，LED不会随时发光，这表示Nexus SmartNIC网络接口卡未正确从PCIe总线接收电源。通过以下步骤进一步排除此问题：

1. 验证正在使用的PCIe插槽是否与已知工作正常的其他外围设备配合使用。理想情况下，使用另一个网络接口卡进行测试。

2. 验证Nexus SmartNIC网络接口卡是否在另一个已知工作正常的PCIe插槽中运行而无问题。

3. 验证Nexus SmartNIC网络接口卡在已知在已知正常工作的另一台主机上正常工作的PCIe插槽中是否运行正常。

如果Nexus SmartNIC网络接口卡无法接通电源，而不管使用的PCIe插槽和主机如何，请联系Cisco TAC以获得其他故障排除。

步骤5.检验固件完整性。

如第4步中所述，每个Nexus SmartNIC网络接口卡可能有两种LED:

- 端口发光二极管

- PPS LED

当网络接口卡的端口中未插入SFP+/QSFP模块时，当网络接口卡初始通电时，这些LED应在步骤4中描述的瞬时闪存后保持熄灭状态。

有三种常见情形，其中并非由于固件损坏或丢失而导致的情况：

- 如果端口和PPS LED在未插入SFP+/QSFP模块时在短暂闪存后仍亮起，并且主机操作系统不将网络接口卡识别为有效的PCIe外围设备(如通过lspci命令)，则可能需要恢复Nexus SmartNIC网络接口卡的固件。按照Nexus SmartNIC固件恢复流程，将新版本的固件加载到Nexus SmartNIC上。如果这无法解决问题，请联系Cisco TAC以获取其他故障排除。

- 如果Nexus SmartNIC网络接口卡配备了PPS LED且PPS LED持续亮起，则卡上加载的现有固件已损坏，并且卡已进入固件恢复模式。您必须按照Nexus SmartNIC固件更新过程正常使用网络接口卡。如果这无法解决问题，请联系Cisco TAC以获取其他故障排除。

- 如果Nexus SmartNIC网络接口卡未配备PPS LED且端口LED在熄灭和琥珀色之间连续交替，则卡上加载的现有固件已损坏，并且卡已进入固件恢复模式。您必须按照Nexus SmartNIC固件更新过程正常使用网络接口卡。如果这无法解决问题，请联系Cisco TAC以获取其他故障排除。

步骤6.检验主机操作系统PCI Express检测。

您可以确认主机操作系统可以通过PCIe总线使用lspci命令成功检测Nexus SmartNIC网络接口卡。Exablaze的16位PCI供应商ID(VID)为0x1ce4，可用于探测Nexus SmartNIC PCIe设备以获取信息。以下示例演示了这一点：

[root@host ~]# lspci -d 1ce4:

01:00.0 Ethernet controller: Exablaze ExaNIC X10

通过将 — v verbose标志添加到lspci命令，可以查看有关PCIe卡的更多详细信息。以下示例演示了这一点：

[root@host ~]# lspci -d 1ce4: -v

01:00.0 Ethernet controller: Exablaze ExaNIC X10

Subsystem: Exablaze ExaNIC X10

Flags: bus master, fast devsel, latency 0, IRQ 30

Memory at 92000000 (32-bit, non-prefetchable) [size=8M]

Memory at 92800000 (64-bit, non-prefetchable) [size=4M]

Capabilities: [80] Power Management version 3

Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit+

Capabilities: [c0] Express Endpoint, MSI 00

Capabilities: [100] Advanced Error Reporting

Capabilities: [1b8] Latency Tolerance Reporting

Capabilities: [300] #19

Capabilities: [340] Vendor Specific Information: ID=0001 Rev=0 Len=02c <?>

Kernel modules: exanic

通过向lspci命令添加 — vv详细标志，可以查看更详细的信息。以下示例演示了这一点：

[root@host ~]# lspci -d 1ce4: -vv

01:00.0 Ethernet controller: Exablaze ExaNIC X10

Subsystem: Exablaze ExaNIC X10

Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+

Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-

Latency: 0

Interrupt: pin A routed to IRQ 30

Region 0: Memory at 92000000 (32-bit, non-prefetchable) [size=8M]

Region 2: Memory at 92800000 (64-bit, non-prefetchable) [size=4M]

Capabilities: [80] Power Management version 3

Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)

Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-

Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit+

Address: 00000000fee003b8  Data: 0000

Capabilities: [c0] Express (v2) Endpoint, MSI 00

DevCap:    MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us

ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset- SlotPowerLimit 75.000W

DevCtl:    Report errors: Correctable- Non-Fatal- Fatal- Unsupported-

RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+

MaxPayload 128 bytes, MaxReadReq 512 bytes

DevSta:    CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-

LnkCap:    Port #0, Speed 8GT/s, Width x8, ASPM not supported, Exit Latency L0s unlimited, L1 unlimited

ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+

LnkCtl:    ASPM Disabled; RCB 64 bytes Disabled- CommClk+

ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-

LnkSta:    Speed 8GT/s, Width x8, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-

DevCap2: Completion Timeout: Range B, TimeoutDis+, LTR+, OBFF Not Supported

DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled

LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-

Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-

Compliance De-emphasis: -6dB

LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete+, EqualizationPhase1+

EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-

Capabilities: [100 v2] Advanced Error Reporting

UESta:    DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-

UEMsk:    DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-

UESvrt:    DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-

CESta:    RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-

CEMsk:    RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+

AERCap:    First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-

Capabilities: [1b8 v1] Latency Tolerance Reporting

Max snoop latency: 0ns

Max no snoop latency: 0ns

Capabilities: [300 v1] #19

Capabilities: [340 v1] Vendor Specific Information: ID=0001 Rev=0 Len=02c <?>

Kernel modules: exanic

如果lspci 命令显示有关Nexus SmartNIC网络接口卡的信息，则表明主机操作系统已通过PCIe总线成功检测到Nexus SmartNIC网络接口卡。今后，您可以安装Nexus SmartNIC软件驱动程序并开始使用卡。

排除Nexus SmartNIC软件驱动程序安装故障

本文档的本节介绍用于排除Nexus SmartNIC低延迟网络接口卡软件驱动程序安装问题的步骤。当主机操作系统（通常为Linux发行版或Windows服务器）将Nexus SmartNIC识别为有效的PCI Express外围设备，但主机操作系统不将Nexus SmartNIC的端口识别为有效的网络接口时，请遵循本文档的本节。以下输出中显示了此示例：

[root@host ~]# ls /dev/exanic*

ls: cannot access /dev/exanic*: No such file or directory

本文档的此部分假定您在尝试安装Nexus SmartNIC软件驱动程序时遇到错误，如Nexus SmartNIC软件安装指南所述。

此过程中的所有命令都从根Linux帐户执行。如果您没有使用根Linux帐户执行此过程，则可能需要使用sudo命令将帐户的安全权限提升为超级用户的安全权限。

步骤1.检验驱动程序的使用情况。

如果主机操作系统的内核已为Nexus SmartNIC网络接口卡加载软件驱动程序，则带有-v verbose标志的lspci命令将显示使用中的驱动程序。您可以查询使用Exablaze的PCI供应商ID(0x1ce4)的设备，以显示特定于Nexus SmartNIC PCIe设备的信息。以下输出中显示了此示例：

[root@host ~]# lspci -d 1ce4: -v | egrep Kernel.driver

Kernel driver in use: exanic

如果主机操作系统的内核未加载软件驱动程序，则lspci -d 1ce4的输出将省略此“正在使用的内核驱动程序”行：-v命令。

步骤2.检验驱动程序安装。

从RPM（apt、yum等）验证驱动程序安装

如《Nexus SmartNIC软件安装指南》中所述，Nexus SmartNIC软件驱动程序可通过软件包管理器（如apt、yum或直接通过rpm）进行安装。 如果已使用此方法安装ExaNIC软件驱动程序，您可以验证是否已正确安装所有文件，如下所示。

根据主机的CPU体系结构，libexanic.a库文件可以在/usr/lib/或在/usr/lib64/中。以下是来自x86（32位）CPU架构的示例：

[root@host ~]# ls /usr/lib/ | grep exanic

libexanic.a

以下是来自x86_64（64位）CPU架构的示例：

[root@host ~]# ls /usr/lib64/ | grep exanic

libexanic.a

确保Nexus SmartNIC库头文件存在于/usr/include/exanic/目录中。以下示例所示：

[root@host ~]# ls /usr/include/exanic/ -1

config.h

const.h

exanic.h

fifo_if.h

fifo_rx.h

fifo_tx.h

filter.h

firewall.h

hw_info.h

ioctl.h

pcie_if.h

port.h

register.h

time.h

util.h

确保Nexus SmartNIC二进制实用程序位于/usr/bin/目录中。以下示例所示：

[root@host ~]# ls /usr/bin/ -1 | grep exanic-

exanic-capture

exanic-clock-check

exanic-clock-sync

exanic-config

exanic-fwupdate

最后，确保exanic.ko.xz模块文件存在于/lib/modules/'uname -r'/extra/目录中。请注意，inline'uname -r'命令会自动将当前内核版本插入目录。此命令被重音符号(')包围，而不是单引号。此处的示例中显示：

[root@host ~]# ls /lib/modules/\`uname -r\`/extra/ | grep exanic

exanic.ko.xz

从源验证驱动程序安装

如Nexus SmartNIC软件安装指南中所述，可以从源代码构建和安装Nexus SmartNIC软件驱动程序。如果已使用此方法安装了Nexus SmartNIC软件驱动程序，您可以验证所有文件是否已正确安装，如此处的示例所示。

确保libexanic.a库文件在/usr/local/lib/目录中存在。此示例如下所示：

[root@host ~]# ls /usr/local/lib/ | grep exanic

libexanic.a

确保Nexus SmartNIC库头文件存在于/usr/local/include/exanic/目录中。此示例如下所示：

[root@host ~]# ls /usr/local/include/exanic/ -1

config.h

const.h

exanic.h

fifo_if.h

fifo_rx.h

fifo_tx.h

filter.h

firewall.h

hw_info.h

ioctl.h

pcie_if.h

port.h

register.h

time.h

util.h

确保Nexus SmartNIC二进制实用程序位于/usr/local/bin/目录中。此示例如下所示：

[root@host ~]# ls /usr/local/bin -1 | grep exanic-

exanic-capture

exanic-clock-check

exanic-clock-sync

exanic-config

exanic-fwupdate

最后，确保exanic.ko模块文件存在于/lib/modules/'uname -r'/extra/目录。请注意，inline'uname -r'命令会自动将当前内核版本插入目录。此命令被重音符号(')包围，而不是单引号。此处的示例中显示：

[root@host ~]# ls /lib/modules/`uname -r`/extra | grep exanic

exanic.ko

步骤3.尝试加载软件驱动程序。

Nexus SmartNIC软件驱动程序可以手动加载modprobe exanic命令。

如果加载了Nexus SmartNIC驱动程序，则Linux内核将将其识别为设备。您可以使用ls /dev/exanic*命令验证这一点，该命令将显示所有已识别的Nexus SmartNIC设备。此示例如下所示：

[root@host ~]# ls /dev/exanic*

/dev/exanic0

如果Nexus SmartNIC驱动程序未成功加载，则modprobe exanic命令可能返回错误，也可能不返回错误。以下子部分介绍如何排除此命令返回的错误。

“modprobe:致命：“Module exanic not found（找不到模块exanic）”错误消息

此错误消息可能是由以下子部分中描述的两个不同问题引起的。

内核模块依赖项映射不正确

主机操作系统无法找到为当前运行内核构建的模块。因此，主机操作系统无法使用modprobe exanic命令将模块加载到系统中。这可以通过depmod -a命令来解决，该命令将创建内核模块依赖项的映射。然后，内核模块可以使用modprobe exanic命令加载。

DKMS未构建内核模块

DKMS（动态内核模块支持）允许在安装新操作系统内核时自动重建内核模块。如果DKMS尚未构建Nexus SmartNIC内核模块，则Nexus SmartNIC内核模块可能是之前针对不同的操作系统内核版本编译的。

为了使DKMS能按预期工作，需要使用主机操作系统的软件包管理器安装内核级别和内核报头软件包。如下输出所示，有关如何确认是否使用yum list命令安装此包的示例：

[root@host ~]$ yum list kernel-devel

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

* base: mirror.internode.on.net

* epel: ucmirror.canterbury.ac.nz

* extras: mirror.internode.on.net

* updates: centos.mirror.serversaustralia.com.au

Installed Packages

kernel-devel.x86_64                                      3.10.0-1062.el7                                            @base

kernel-devel.x86_64                                      3.10.0-1062.12.1.el7                                       @updates

[root@host ~]$ yum list kernel-headers

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

* base: mirror.internode.on.net

* epel: ucmirror.canterbury.ac.nz

* extras: mirror.internode.on.net

* updates: centos.mirror.serversaustralia.com.au

Installed Packages

kernel-headers.x86_64                                     3.10.0-1062.12.1.el7                                      @updates

请参阅主机操作系统软件包管理器的手册，验证如何确定是否安装了特定软件包。

您可以使用dkms status命令确认DKMS是否成功添加、构建和安装了Nexus SmartNIC内核模块。此命令在工作、预期状态下的输出示例如下所示：

[root@host ~]# dkms status

exanic, 2.4.1-1.el8, 3.10.0-957.27.2.el7.x86_64, x86_64: installed

如果此输出显示Nexus SmartNIC内核模块处于“已安装”以外的状态，则需要使用DKMS构建或安装Nexus SmartNIC内核模块。

如果已添加但未构建Nexus SmartNIC内核模块，请使用dkms build -m exanic -v {version}命令来构建Nexus SmartNIC内核模块。此处显示了此命令的示例，其软件版本为2.4.1-1.el7:

[root@host ~]$ dkms build -m exanic -v 2.4.1-1.el7

Kernel preparation unnecessary for this kernel.  Skipping...

Building module:

cleaning build area...

make -j16 KERNELRELEASE=3.10.0-1062.el7.x86_64 -C modules KDIR=/lib/modules/3.10.0-1062.el7.x86_64/build...

cleaning build area...

DKMS: build completed.

如果Nexus SmartNIC内核模块已构建但未安装，请使用dkms install -m exanic -v {version}命令安装Nexus SmartNIC内核模块。此处显示了此命令的示例，其软件版本为2.4.1-1.el7:

[root@host ~]$ dkms install -m exanic -v 2.4.1-1.el7

exanic.ko.xz:

Running module version sanity check.

- Original module

- No original module exists within this kernel

- Installation

- Installing to /lib/modules/3.10.0-1062.el7.x86_64/extra/

exasock.ko.xz:

Running module version sanity check.

- Original module

- No original module exists within this kernel

- Installation

- Installing to /lib/modules/3.10.0-1062.el7.x86_64/extra/

Adding any weak-modules

depmod...

DKMS: install completed.

在使用DKMS构建和安装Nexus SmartNIC内核模块后，Nexus SmartNIC内核模块可以使用modprobe exanic命令加载。

“modprobe:所需密钥不可用”错误消息

在配备UEFI（统一可扩展固件接口）固件且启用了安全引导协议的主机上，可以观察到此错误消息。安全引导可防止加载未使用可接受数字签名签名的内核驱动程序。因此，当尝试使用modprobe exanic命令加载Nexus SmartNIC内核驱动程序时，安全引导协议会阻止加载内核驱动程序。

要解决此问题，需要在主机的UEFI中禁用安全引导协议。有关如何在主机的UEFI中禁用安全引导协议的其他信息，请参阅制造商提供的主机手册。

步骤4.确认Nexus SmartNIC实用程序功能。

不带参数的exanic-config 命令可用于在将Nexus SmartNIC内核驱动程序加载到操作系统后显示有关安装在主机上的Nexus SmartNIC网络接口卡的基本信息。以下是此输出的示例：

[root@host ~]$ exanic-config

Device exanic1:

Hardware type: ExaNIC X10

Temperature: 38.8 C VCCint: 0.95 V VCCaux: 1.83 V

Function: network interface

Firmware date: 20180409 (Mon Apr 9 23:27:40 2018)

PPS port: input, termination disabled

Port 0:

Interface: enp175s0

Port speed: 10000 Mbps

Port status: enabled, SFP present, signal detected, link active

MAC address: 64:3f:5f:xx:xx:xx

RX packets: 11778 ignored: 0 error: 0 dropped: 0

TX packets: 11836

Port 1:

Interface: enp175s0d1

Port speed: 10000 Mbps

Port status: enabled, SFP present, signal detected, link active

MAC address: 64:3f:5f:xx:xx:xx

RX packets: 11836 ignored: 0 error: 0 dropped: 0

TX packets: 11778

如果exanic-config命令/实用程序返回有关已安装的Nexus SmartNIC网络接口卡的相关信息，则Nexus SmartNIC硬件和软件驱动程序安装成功。

相关信息

- Nexus SmartNIC设备安装

- Cisco UCS C240 M5服务器安装和服务指南

- Cisco UCS C220 M5服务器安装和服务指南

- Nexus SmartNIC基准指南