Linux Devlink 文件¶
devlink 是一個 API,用於公開與任何裝置類不直接相關的裝置資訊和資源,例如晶片範圍/交換機 ASIC 範圍的配置。
鎖¶
面向驅動程式的 API 當前正在轉換,以允許更顯式的鎖。 驅動程式可以使用現有的 devlink_* API 集合,或以 devl_* 為字首的新 API。 較舊的 API 處理 devlink 核心中的所有鎖定,但是一旦主 devlink 物件本身已註冊,就不允許註冊大多數子物件。 較新的 devl_* API 假定 devlink 例項鎖已被持有。 驅動程式可以透過呼叫 devl_lock() 來獲取例項鎖。 它也持有 devlink netlink 命令的所有回撥。
鼓勵驅動程式將 devlink 例項鎖用於自己的需求。
驅動程式在同時獲取 devlink 例項鎖和 RTNL 鎖時需要小心。 需要先獲取 Devlink 例項鎖,只有在此之後才能獲取 RTNL 鎖。
巢狀例項¶
某些物件,例如線卡或埠功能,可以在下面建立另一個 devlink 例項。 在這種情況下,驅動程式應確保遵守以下規則
應保持鎖順序。 如果驅動程式需要同時獲取巢狀例項和父例項的例項鎖,則應首先獲取父例項的 devlink 例項鎖,然後才能獲取巢狀例項的例項鎖。
驅動程式應使用特定於物件的輔助程式來設定巢狀關係
devl_nested_devlink_set()- 用於設定 devlink -> 巢狀 devlink 關係(可以用於多個巢狀例項。
devl_port_fn_devlink_set()- 用於設定埠功能 -> 巢狀 devlink 關係。
devlink_linecard_nested_dl_set()- 用於設定線卡 -> 巢狀 devlink 關係。
巢狀的 devlink 資訊透過 devlink netlink 的特定於物件的屬性公開給使用者空間。
介面文件¶
以下頁面描述了通常可以透過 devlink 獲得的各種介面。
特定於驅動程式的文件¶
期望實現 devlink 的每個驅動程式都記錄其支援的引數、資訊版本和其他功能。
- bnxt devlink 支援
- etas_es58x devlink 支援
- hns3 devlink 支援
- i40e devlink 支援
- ionic devlink 支援
- ice devlink 支援
- ixgbe devlink 支援
- mlx4 devlink 支援
- mlx5 devlink 支援
- mlxsw devlink 支援
- mv88e6xxx devlink 支援
- netdevsim devlink 支援
- nfp devlink 支援
- qed devlink 支援
- ti-cpsw-switch devlink 支援
- am65-cpsw-nuss devlink 支援
- prestera devlink 支援
- iosm devlink 支援
- octeontx2 devlink 支援
- sfc devlink 支援