インテルネットワークアダプターE810 - ドライバーのロードの問題「エラー-2が原因で直接ファームウェアのロード*失敗」

インテルネットワークアダプターE810 - ドライバーのロードの問題「エラー-2が原因で直接ファームウェアのロード*失敗」

インテルネットワークアダプタE810-CQDA1のロードに失敗しましたice.pkg。最初はパスが間違っていると疑ってice.pkg別に保管しておきましたが、ice.koあまり役に立たないようです。次のエラーが引き続き発生しますDirect firmware load for intel/ice/ddp/ice.pkg failed with error -2

私ができることは何もありませんでした。ドライバのロードの問題をデバッグする方法に関する提案はありますか?とても感謝しています。

システム情報と接続:

> uname -r
5.4.0-90-generic


> ethtool -i p1p1
driver: ice
version: 0.8.1-k
firmware-version: 2.30 0x80005d1e 0.0.0
expansion-rom-version: 
bus-info: 0000:10:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: yes

> lspci -vvv -s 0000:10:00.0
10:00.0 Ethernet controller: Intel Corporation Device 1592 (rev 02)
    Subsystem: Intel Corporation Device 0001
    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, Cache Line Size: 64 bytes
    Interrupt: pin A routed to IRQ 68
    Region 0: Memory at e2000000 (64-bit, prefetchable) [size=32M]
    Region 3: Memory at e1000000 (64-bit, prefetchable) [size=64K]
    Expansion ROM at fcf00000 [disabled] [size=1M]
    Capabilities: <access denied>
    Kernel driver in use: ice
    Kernel modules: ice

カーネルエラーログ:

> dmesg | grep "\<ice\>"
[    1.202918] ice: Intel(R) Ethernet Connection E800 Series Linux Driver - version 0.8.1-k
[    1.202919] ice: Copyright (c) 2018, Intel Corporation.
[    1.215600] ice 0000:10:00.0: The driver for the device detected a newer version of the NVM image than expected. Please install the most recent version of the network driver.
[    1.225732] ice 0000:10:00.0: firmware 5.3.7 api 1.7.4 nvm 2.30 0x80005d1e 0.0.0 build 0xa54f09ca
[    1.225770] ice 0000:10:00.0: Direct firmware load for intel/ice/ddp/ice.pkg failed with error -2
[    1.225771] ice 0000:10:00.0: The DDP package file was not found or could not be read. Entering Safe Mode
[    1.225773] ice 0000:10:00.0: Package download failed. Advanced features disabled - Device now in Safe Mode
[    1.252931] ice 0000:10:00.0 p1p1: renamed from eth0

ドライブパス:

tree /lib/modules/5.4.0-90-generic/kernel/drivers/net/ethernet/intel/ice/
/lib/modules/5.4.0-90-generic/kernel/drivers/net/ethernet/intel/ice/
├── ddp
│   ├── ice_comms-1.3.30.0.pkg
│   ├── ice_comms-1.3.30.0.zip
│   ├── ice.pkg -> ice_comms-1.3.30.0.pkg
│   ├── Intel_800_series_market_segment_DDP_license.txt
│   └── readme.txt
└── ice.ko

これが問題だと思う理由は、そのインターフェイスに入って来るパケットが見えないことですethtool p1p1

......
    Speed: Unknown!
    Duplex: Unknown! (255)
......

他の作業インスタンスに比べて速度と二重性が正しく見えず、そもそも運転者の行動が正しくないと考えることになります。もちろん、もう一つの理由は、dmesg上記のカーネルエラーログに表示されたエラーが原因です。

引用:

1私はDDPを得ました(ice.pkgここ、バージョンは1.3.30です。

2運転手を見つけました( ice.ko)ここ、モジュールをビルドしてロードします。 modinfo iceパスとバージョンを表示します。

サムdmesg追跡して印刷されたものを見ることができます。これワイヤー。私は次に何が起こったのかについてあまり知りません。

答え1

Readmeによると、最も簡単な方法は/lib/firmwareおよび/または/lib/firmware/updatesディレクトリにDDPへのシンボリックリンクを置くことです。

ln -s /lib/modules/5.4.0-90-generic/kernel/drivers/net/ethernet/intel/ice/ice_comms-1.3.30.0.pkg /lib/firmware/ice.pkg

DDPとドライバ自体に関する追加情報ファイルを見ました。一歩を逃したようです。いずれかの文書で必須とは見なされません。、もう一つは不明です。基本的な手順と同じです。

ice_comms-xxxpkg ファイルの名前を ice-xxxxxxxxxxxxxxx.pkg に変更します。ここで、「xxxxxxxxxxxxxxxx」は、パッケージをダウンロードするデバイスの一意の64ビットPCI Expressデバイスのシリアル番号(16進数)です。ファイル名には完全なシーケンス番号(先行ゼロを含む)を含める必要があり、すべて小文字でなければなりません。たとえば、64ビットのシリアル番号がb887a3ffffca0568の場合、ファイル名はice-b887a3ffffca0568.pkgになります。

PCIバスアドレスからシリアル番号を見つけるには、次のコマンドを使用できます。

# lspci -vv -s af:00.0 | grep -i Serial Capabilities: [150 v1] Device Serial Number b8-87-a3-ff-ff-ca-05-68

次のコマンドを使用して、ダッシュなしでシリアル番号の形式を指定できます。

lspci -vv -s af:00.0 | grep -i Serial | awk '{print $7}' | sed s/-//g b887a3ffffca0568

  1. 名前が変更されたDDPパッケージファイルを/lib/firmware/updates/intel/ice/ddp/にコピーします。ディレクトリがまだ存在しない場合は、ファイルをコピーする前にディレクトリを作成してください。

  2. デバイスからすべてのPFを削除します。

  3. 新しいパッケージにドライバを再ロードします。

メインドライバのReadmeはすでに明らかな内容を指摘しています。

ドライバがDDPパッケージをロードできない場合、デバイスはセーフモードになります。セーフモードは高度な機能とパフォーマンス機能を無効にし、基本トラフィックとNVMアップデート、新しいドライバ、DDPパッケージのダウンロードなど、最小限の機能のみをサポートします。

答え2

Alexが言ったように、ドライバがロードしたComms DDPパッケージが見つからないようです(これは通常ice.pkgの無効なファイル形式によるものです)。ただし、Alexのソリューションは、一意のNIC(シリアル番号ベース)にDDPパッケージをロードしたい場合にのみ機能します。次の例は、シリアル番号を取得せずにホスト上のすべてのNICのデフォルトインストールを実行する方法を示しています。 。

最新のComms DDPパッケージ(1.3.37.0)を例にしてみましょう。

  1. 以下から通信DDPパッケージをダウンロードしてください。ここLinuxホストへ
  2. Linux ホストでパッケージを解凍します。
    $ unzip 800\ Series\ DDP\ Comms\ Package\ 1.3.37.0.zip
    
  3. 入れ子になったパッケージファイルをice_commsディレクトリにさらに抽出します。
    $ unzip ice_comms-1.3.37.0.zip -d ice-comms/ 
    
  4. 解凍されたすべてのコンテンツを次の場所にコピーします/lib/firmware/updates/intel/ice/ddp/
    $ sudo cp ice-comms/* /lib/firmware/updates/intel/ice/ddp/
    
  5. 新しいパッケージを入手するには、iceドライバを再ロードしてください。
    $ sudo modprobe -r ice; sudo modprobe ice
    
  6. dmesgドライバが新しいDDPパッケージを挿入したことを確認してください。

関連情報