通訊協定
裝置
定義於 fuchsia.hardware.network/device.fidl
網路裝置。
複製
與這部裝置建立新連線。
- 向伺服器端要求
device新連線。
要求
| 名稱 | 類型 |
|---|---|
device |
server_end:Device
|
GetInfo
取得裝置相關資訊
- 回應
info裝置資訊。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
info |
DeviceInfo
|
GetPort
連線至指定 id 的通訊埠。
- 要求連線至
id通訊埠。 - 要求
port伺服器端通訊埠管道。
如果沒有 id 的通訊埠,port 會關閉並顯示 ZX_ERR_NOT_FOUND 墓誌銘。
要求
| 名稱 | 類型 |
|---|---|
id |
PortId
|
port |
server_end:Port
|
GetPortWatcher
將 PortWatcher 連線至這部裝置。
- 要求
watcher伺服器端監控管道。
要求
| 名稱 | 類型 |
|---|---|
watcher |
server_end:PortWatcher
|
OpenSession
開啟與網路裝置的新工作階段。
- 要求
session_name會做為附加至這個工作階段的偵錯標籤。 - 要求
session_info包含設定工作階段資料交換所需的資訊。
- 回應
session控制工作階段的控制代碼。 - 附加至工作階段的回應
fifos資料層 FIFO。
- 如果
session_info包含不支援的影格類型或描述元設定,則會發生錯誤ZX_ERR_NOT_SUPPORTED。 - 如果
session_info缺少欄位或含有無效資訊,則會傳回錯誤ZX_ERR_INVALID_ARGS。 - 如果基礎裝置拒絕資料 VMO,則會傳回錯誤
ZX_ERR_INTERNAL。
要求
| 名稱 | 類型 |
|---|---|
session_name |
string:64
|
session_info |
SessionInfo
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Device_OpenSession_Result
|
診斷
定義於 fuchsia.hardware.network/diagnostics.fidl
在裝置和上層之間提供雙向通訊,以交換裝置健康資訊。
LogDebugInfoToSyslog
要求裝置在系統記錄中產生偵錯資訊。
產生裝置偵錯資訊後,呼叫就會傳回。
要求
<EMPTY>
回應
<EMPTY>
MacAddressing
定義於 fuchsia.hardware.network/mac.fidl
AddMulticastAddress
將多點傳播位址新增至多點傳播群組清單。
呼叫 SetMode 時,系統不會更動保留的多點傳播位址清單。如果裝置的模式不是 MULTICAST_FILTER,系統會忽略多點傳播位址清單。
- 要求將
address多點傳播位址新增至清單。
- 如果
address不是多點傳播位址,則回應statusZX_ERR_INVALID_ARGS。 - 如果安裝的位址超過
MAX_MAC_FILTER個,則會傳回statusZX_ERR_NO_RESOURCES。
要求
| 名稱 | 類型 |
|---|---|
address |
fuchsia.net/MacAddress
|
回應
| 名稱 | 類型 |
|---|---|
status |
zx/Result
|
GetUnicastAddress
取得裝置目前的單點傳播 MAC 位址。
這個 API 的實作者不需要傳回可明確識別身分的 MAC;傳回的單點傳播位址是「目前」用於篩選單點傳播框架的位址,或用於識別裝置「目前」所在連結的位址。這個 API 的使用者不得依賴傳回值的穩定性或唯一性,來識別或區分裝置執行個體。
- 回應
address裝置的單點傳播 MAC 位址。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
address |
fuchsia.net/MacAddress
|
RemoveMulticastAddress
從多點傳播群組清單中移除多點傳播位址。
- 要求從清單中移除
address多點傳播位址。
- 如果
address不是多點傳播位址,則回應statusZX_ERR_INVALID_ARGS。
要求
| 名稱 | 類型 |
|---|---|
address |
fuchsia.net/MacAddress
|
回應
| 名稱 | 類型 |
|---|---|
status |
zx/Result
|
SetMode
將這部裝置要求的運作模式設為 mode。
要求的模式會附加至目前與裝置的用戶端連線。由於多個用戶端可以同時附加至同一部裝置,因此限制最少的模式會主動在基礎裝置實作中生效。
如果裝置不支援要求的模式,但支援比要求模式更開放的模式,則 SetMode 仍會成功。否則,如果裝置僅支援比要求模式更嚴格的模式,SetMode 會傳回 ZX_ERR_NOT_SUPPORTED。
用戶端必須知道正在存取的資源是共用的,且裝置可能在比要求更開放的層級上有效運作 (但絕不會在更嚴格的層級上運作)。
mode請求模式。
- 回應
statusZX_ERR_NOT_SUPPORTED:裝置僅支援比要求更嚴格的模式。
要求
| 名稱 | 類型 |
|---|---|
mode |
MacFilterMode
|
回應
| 名稱 | 類型 |
|---|---|
status |
zx/Result
|
連接埠
定義於 fuchsia.hardware.network/port.fidl
屬於裝置的邏輯通訊埠。
複製
建立與這個通訊埠的新連線。
- 向伺服器端要求
port新連線。
要求
| 名稱 | 類型 |
|---|---|
port |
server_end:Port
|
GetCounters
擷取這個通訊埠的流量計數器快照。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
PortGetCountersResponse
|
GetDevice
連線至這個通訊埠所屬的裝置。
- 要求
device授予家長裝置存取權。
要求
| 名稱 | 類型 |
|---|---|
device |
server_end:Device
|
GetDiagnostics
授予這個通訊埠的診斷存取權。
- 要求
diagnostics授予診斷資訊存取權。
要求
| 名稱 | 類型 |
|---|---|
diagnostics |
server_end:Diagnostics
|
GetIdentity
擷取一律只與這個通訊埠相關聯的不重複事件控制代碼。
這個事件可用於在系統的不同 API 中,不重複識別特定通訊埠例項。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
event |
handle<event>
|
GetInfo
取得通訊埠相關資訊。
- 回應
info連接埠資訊。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
info |
PortInfo
|
GetMac
連線至與通訊埠相關聯的 MacAddressing。
- 要求
macMAC 控制代碼。如果這個通訊埠不支援 MAC 位址,則關閉並顯示ZX_ERR_NOT_SUPPORTED。
要求
| 名稱 | 類型 |
|---|---|
mac |
server_end:MacAddressing
|
GetPowerDependencyToken
取得這個通訊埠電源元素的 Power Broker 依附元件權杖。
權杖會顯示兩個層級:0 (關閉) 和 1 (開啟)。只要需要通訊埠的資料路徑,用戶端就會租用 1 級,並在需要時保留租約。只要上層看不到,驅動程式就能在內部管理已租用但閒置的通訊埠。
在通訊埠的生命週期內,權杖會固定不變。
- 如果這個通訊埠未參與電源管理,則不會傳回
token回應。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
token |
fuchsia.power.broker/DependencyToken
|
GetStatus
取得作業通訊埠狀態。
- 回應
status充電座目前狀態的快照。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
status |
PortStatus
|
GetStatusWatcher
連線至 StatusWatcher,觀察通訊埠狀態變更。
- 要求將
watcher控制代碼傳送至狀態監控器。 - 要求
buffer用戶端要求StatusWatcher儲存的狀態變更次數。值上限為 MAX_STATUS_BUFFER。如果值為 0 或 1,StatusWatcher就不會在狀態變更時保留任何緩衝區。如果用戶端需要觀察狀態的所有變更 (而非僅觀察目前狀態),建議將緩衝區值設為大於 1,以便觀察所有邊緣。如果StatusWatcher的內部佇列已滿,且有新的狀態變更,系統會捨棄最舊的樣本,為新樣本騰出空間。
要求
| 名稱 | 類型 |
|---|---|
watcher |
server_end:StatusWatcher
|
buffer |
uint32
|
PortWatcher
定義於 fuchsia.hardware.network/device.fidl
提供疊代和更新功能,適用於連接至裝置的通訊埠。
智慧手錶
取得下一個通訊埠事件。
前 N 次呼叫會傳回 DevicePortEvent.existing,其中 N 是建立監控程式時裝置上的通訊埠數量。下次呼叫會傳回 DevicePortEvent.idle,表示現有通訊埠已結束。後續呼叫會遭到封鎖,直到新增 (DevicePortEvent.added) 或移除 (DevicePortEvent.removed) 連接埠為止。
如果未讀取事件數量達到伺服器選取的限制 (至少為 MAX_PORTS 的兩倍),伺服器會關閉 PortWatcher 管道並顯示 ZX_ERR_CANCELED。建議用戶端隨時與 Watch 保持連線,避免觸發這項條件。
- 回應
event下一個通訊埠事件。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
event |
DevicePortEvent
|
工作階段
定義於 fuchsia.hardware.network/session.fidl
代表與網路裝置的工作階段。
工作階段包含資料層和控制層。Session 通訊協定代表工作階段的控制層,而在 Device.OpenSession 呼叫期間交換的 FIFO 和 VMO 則是資料層。工作階段的生命週期由 Session 通訊協定控制代碼控制。
工作階段必須連結至相關通訊埠,才能開始接收及傳送資料。建立工作階段時,一律不會附加任何通訊埠。
如果基礎裝置刪除通訊埠,系統會自動將通訊埠從工作階段中卸載。
傳入流量會分派至所有開啟的工作階段。裝置通常會以單一主要工作階段運作,請參閱 SessionFlags.PRIMARY。每對同一裝置開啟一個額外工作階段,就會在裝置的資料路徑上產生資料複製負擔。
如果透過 tx 或 rx FIFO 傳送無效的緩衝區描述元,工作階段會關閉,並顯示錯誤墓誌銘。無效的描述元包括: - 描述元索引大於 SessionInfo.descriptor_count。- 描述元鏈大於 MAX_DESCRIPTOR_CHAIN。- rx 緩衝區小於 Info.min_rx_buffer_length。- tx 緩衝區小於 Info.min_tx_buffer_length。- tx 緩衝區不遵循 Info.min_tx_buffer_head 或 Info.min_tx_buffer_tail。
附加
將工作階段附加至 port。
附加後,工作階段會開始透過資料 FIFO 接收訂閱的影格,並可能傳送目的地為指定 port 的影格。
- 要求訂閱
port通訊埠。 - 要求通訊埠上感興趣的
rx_frames框架類型。
- 如果
port無效,則會傳回錯誤ZX_ERR_NOT_FOUND。 - 如果
rx_frames不是通訊埠支援影格的子集,則會發生錯誤ZX_ERR_INVALID_ARGS。 - 如果已附加
port,則會發生錯誤ZX_ERR_ALREADY_BOUND。
要求
| 名稱 | 類型 |
|---|---|
port |
PortId
|
rx_frames |
vector<FrameType>:4
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Session_Attach_Result
|
關閉
完全關閉工作階段。
這會導致工作階段傳送 ZX_ERR_CANCELLED epitaph,並繼續關閉工作階段管道。用戶端只有在收到墓誌銘後,才能假設自己擁有工作階段目前擁有的所有緩衝區 (透過 rx 或 tx FIFO 傳送)。關閉 rx 或 tx FIFO 相當於呼叫 Close。
要求
<EMPTY>
卸離
從 port 卸載工作階段。
中斷連結後,工作階段就會停止接收 port 的影格。傳送至已卸離通訊埠的影格可能會傳回錯誤。您不必在從裝置中移除的通訊埠上呼叫 Detach,否則會導致系統傳回 ZX_ERR_NOT_FOUND。
- 要求訂閱
port通訊埠。
- 如果工作階段目前未附加至通訊埠,則會傳回錯誤
ZX_ERR_NOT_FOUND。
要求
| 名稱 | 類型 |
|---|---|
port |
PortId
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Session_Detach_Result
|
RegisterForTx
要求網路裝置註冊 VMO 以進行 Tx。
網路裝置會依序準備 VMO,並在發生第一個錯誤時停止。這個函式會傳回已準備好的 VMO 數量,以及遇到的第一個錯誤。請注意,網路裝置本身不會嘗試釋出先前的 VMO,以因應後續錯誤。用戶端可自行決定如何從錯誤中復原。
- 如果 VmoId 不明,則會傳回錯誤
ZX_ERR_NOT_FOUND。 - error:驅動程式庫可能回報的其他 zx 狀態。
要求
| 名稱 | 類型 |
|---|---|
vmos |
vector<VmoId>:32
|
回應
| 名稱 | 類型 |
|---|---|
successful |
uint8
|
status |
zx/Result
|
UnregisterForTx
告知裝置用戶端不會再將 VMO 用於 Tx。如果 VMO 也未用於 Rx,裝置可以釋出 VMO,交由實作驅動程式庫使用。
網路裝置會依序處理 VMO,並在發生第一個錯誤時停止。系統會傳回標示為未用於 Tx 的 VMO 數量,以及遇到的第一個錯誤。請注意,network-device 本身不會嘗試重新註冊先前的 VMO,以因應後續錯誤。用戶端可自行決定如何從錯誤中復原。
- 如果 VmoId 不明,則會傳回錯誤
ZX_ERR_NOT_FOUND。 - error:驅動程式庫可能回報的其他 zx 狀態。
要求
| 名稱 | 類型 |
|---|---|
vmos |
vector<VmoId>:32
|
回應
| 名稱 | 類型 |
|---|---|
successful |
uint8
|
status |
zx/Result
|
WatchDelegatedRxLease
委派的監控程式會收到喚醒租約。
呼叫會遭到封鎖,直到裝置委派租約為止。如果在先前的呼叫遭到封鎖時呼叫 WatchDelegatedRxLease,系統會關閉工作階段並傳回 ZX_ERR_BAD_STATE。如果建立工作階段時未使用 SessionFlags.RECEIVE_RX_POWER_LEASES,則不會產生任何值。
假設單一租約足以讓系統保持喚醒狀態,伺服器只會在緩衝區中保留單一租約。如果有新的委派租約可用,且用戶端尚未透過呼叫 WatchDelegatedRxLease 彈出先前的租約,伺服器會捨棄先前待處理的租約。
如要瞭解如何處理委派租約,請參閱 DelegatedRxLease。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
lease |
DelegatedRxLease
|
StatusWatcher
定義於 fuchsia.hardware.network/port.fidl
提供接收通訊埠狀態變更更新的方式。
WatchStatus
WatchStatus 會封鎖,直到通訊埠狀態變更為止。
第一次呼叫 WatchStatus 時,系統會立即傳回目前的通訊埠狀態,後續呼叫則會在通訊埠狀態與上次透過這個 StatusWatcher 傳回的狀態不同時完成。
如果 StatusWatcher 是以大於 1 的緩衝區值建立,WatchStatus 可能會傳回佇列狀態變更,具體取決於自上次呼叫 WatchStatus 以來發生的狀態變更次數。
- 回應
device_status最新充電座狀態。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
port_status |
PortStatus
|
STRUCTS
Device_OpenSession_Response 資源
定義於 fuchsia.hardware.network/device.fidl
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
session |
client_end:Session
|
無預設值 | |
fifos |
Fifos
|
無預設值 |
空白
定義於 fuchsia.hardware.network/device.fidl
<EMPTY>
Fifos 資源
定義於 fuchsia.hardware.network/session.fidl
資料層 FIFO。
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
rx |
handle<fifo>
|
rx FIFO 的控點。 用戶端必須將 16 位元描述元索引寫入這個 FIFO,才能接收影格。 |
無預設值 |
tx |
handle<fifo>
|
tx FIFO 的控制代碼。 用戶端會將 16 位元描述元索引寫入這個 FIFO,將傳出影格排入佇列。 |
無預設值 |
FrameTypeSupport
定義於 fuchsia.hardware.network/frames.fidl
指定影格類型、功能,以及與該類型相關聯的支援旗標。
用戶端會使用這個方法,讀取特定網路裝置在 tx 路徑上支援的影格。
部分網路裝置可能會剖析傳出影格,以執行影格轉換或特定硬體支援。每種影格類型都有相關聯的 FrameTypeSupport.features 位元列舉,列出可能支援或不支援的 FrameType 專屬功能。如果裝置不執行剖析,建議在 features 中使用 FRAME_FEATURES_RAW 位元,告知用戶端允許所有影格功能。
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
type |
FrameType
|
這個支援項目參照的影格類型。 |
無預設值 |
features |
uint32
|
支援的特定框架類型功能。 |
無預設值 |
supported_flags |
TxFlags
|
指定影格類型支援的標記。 |
無預設值 |
PortId
定義於 fuchsia.hardware.network/port.fidl
裝置通訊埠 ID。
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
base |
BasePortId
|
充電座的基本 ID。 通常用於識別硬體中的通訊埠執行個體。 |
無預設值 |
salt |
uint8
|
由實作定義的 ID,保證在每次例項化所識別的通訊埠時都會變更。 |
無預設值 |
Session_Attach_Response
定義於 fuchsia.hardware.network/session.fidl
<EMPTY>
Session_Detach_Response
定義於 fuchsia.hardware.network/session.fidl
<EMPTY>
列舉
FrameType flexible
類型:uint8
定義於 fuchsia.hardware.network/frames.fidl
影格類型。
| 名稱 | 值 | 說明 |
|---|---|---|
ETHERNET |
1 |
|
IPv4 |
2 |
|
IPv6 |
3 |
MacFilterMode 彈性
類型:uint32
定義於 fuchsia.hardware.network/mac.fidl
MAC 裝置支援的位址篩選模式。
| 名稱 | 值 | 說明 |
|---|---|---|
MULTICAST_FILTER |
0 |
裝置只會接受傳送至其單點傳播位址的單點傳播封包,或多點傳播位址篩選清單中的多點傳播封包。 |
MULTICAST_PROMISCUOUS |
1 |
裝置接受傳送至其單點傳播位址的單點傳播封包,或任何多點傳播封包。 |
PROMISCUOUS |
2 |
裝置接受所有影格。 |
彈性 PortClass
類型:uint16
定義於 fuchsia.hardware.network/port.fidl
網路通訊埠類別。
注意:如果沒有合適的變體,建議裝置實作者提議新增這個列舉,避免使用不合適的變體。
| 名稱 | 值 | 說明 |
|---|---|---|
ETHERNET |
1 |
|
WLAN_CLIENT |
2 |
|
PPP |
3 |
|
BRIDGE |
4 |
|
WLAN_AP |
5 |
|
VIRTUAL |
6 |
|
LOWPAN |
7 |
TABLES
DataVmo 資源
定義於 fuchsia.hardware.network/session.fidl
可用於資料層作業的 VMO。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
id |
VmoId
|
|
2 |
vmo |
handle<vmo>
|
|
3 |
num_rx_buffers |
uint16
|
Netdevice 需要這項資訊,才能決定何時可以安全地取消註冊及取消提交。 |
DelegatedRxLease 資源
定義於 fuchsia.hardware.network/session.fidl
已取得並傳播至應用程式的租約。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
hold_until_frame |
uint64
|
觀察租約的代理程式必須使用遞增計數器追蹤收到的影格,以便在影格 這個值可解讀為特定影格的 1 索引,或目前為止交換的影格總數,兩者在數學上等效。 這項機制可讓系統從接收到的影格中傳遞喚醒租約控制代碼,並防止系統在影格完全處理完畢前暫停。 必填。 |
2 |
handle |
DelegatedRxLeaseHandle
|
代表保留租約的控制代碼。 必填。 |
DeviceBaseInfo
定義於 fuchsia.hardware.network/device.fidl
網路裝置基本資訊。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
rx_depth |
uint16
|
rx FIFO 中的項目數量上限 (每個工作階段)。必填。
|
2 |
tx_depth |
uint16
|
tx FIFO 中的項目數量上限 (每個工作階段)。必填。
|
3 |
buffer_alignment |
uint32
|
資料 VMO 中緩衝區的對齊需求。 資料 VMO 中的所有緩衝區都必須與 VMO 開頭對齊 |
4 |
max_buffer_length |
uint32
|
資料 VMO 中緩衝區支援的最大長度 (以位元組為單位)。 如果未定義緩衝區長度上限,則不會顯示。不得為零。 |
5 |
min_rx_buffer_length |
uint32
|
裝置所需的 rx 緩衝區長度下限。必填。 |
6 |
min_tx_buffer_length |
uint32
|
裝置所需的 tx 緩衝區長度下限。必填。 這個值只會計入 tx 酬載長度, 用戶端必須在傳出框架中填補零,以符合規定的最小長度。 |
7 |
min_tx_buffer_head |
uint16
|
裝置要求在 tx 緩衝區中釋出做為 |
8 |
min_tx_buffer_tail |
uint16
|
裝置要求在 tx 緩衝區中釋出做為 |
9 |
max_buffer_parts |
uint8
|
裝置接受的描述元鏈長度上限。必填。 |
12 |
min_rx_buffers |
uint16
|
用戶端需要為網路裝置準備的 Rx 緩衝區數量下限。如果使用多 VMO 支援,用戶端應根據這項資訊選取 VMO 大小。 |
DeviceInfo
定義於 fuchsia.hardware.network/device.fidl
網路裝置資訊。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
min_descriptor_length |
uint8
|
描述元長度下限 (以 64 位元字組為單位)。必填。 每個緩衝區描述元必須具備的最小長度,才能與此裝置正確運作。支援額外影格中繼資料的裝置會通知較大的描述元長度下限,反映儲存影格中繼資料所需的最小空間。 |
2 |
descriptor_version |
uint8
|
接受的描述元版本。必填。 |
3 |
base_info |
DeviceBaseInfo
|
裝置基本資訊。必填。 |
PortBaseInfo
定義於 fuchsia.hardware.network/port.fidl
通訊埠基本資訊。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
port_class |
PortClass
|
Port 類別。必填。 |
2 |
rx_types |
vector<FrameType>:4
|
這個通訊埠支援的 rx 影格類型。必填。 用戶端可以開啟工作階段,訂閱這個通訊埠上的 |
3 |
tx_types |
vector<FrameTypeSupport>:4
|
這個通訊埠支援的 tx 影格類型。必填。 如果傳送至這個通訊埠的框架類型不在 部分網路裝置可能需要執行部分影格剖析和序列化,因此 |
PortGetCountersResponse
定義於 fuchsia.hardware.network/port.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
rx_frames |
uint64
|
這個通訊埠的傳入影格總數。 |
2 |
rx_bytes |
uint64
|
這個通訊埠的傳入位元組總數。 |
3 |
tx_frames |
uint64
|
這個通訊埠的輸出框架總數。 |
4 |
tx_bytes |
uint64
|
這個通訊埠的輸出位元組總數。 |
PortInfo
定義於 fuchsia.hardware.network/port.fidl
邏輯通訊埠資訊。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
id |
PortId
|
通訊埠 ID。必填。 |
2 |
base_info |
PortBaseInfo
|
PortStatus
定義於 fuchsia.hardware.network/port.fidl
動態通訊埠資訊。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
flags |
StatusFlags
|
通訊埠狀態標記。 |
2 |
mtu |
uint32
|
這個通訊埠的最大傳輸單位,以位元組為單位。 回報的 MTU 是整個框架的大小,包括這個通訊埠支援的任何通訊協定的標頭和結尾位元組。 |
SessionInfo 資源
定義於 fuchsia.hardware.network/session.fidl
工作階段設定。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
descriptors |
handle<vmo>
|
包含描述元的 VMO。必填。 透過 FIFO 傳輸的 16 位元索引會為這個 VMO 中的描述元建立索引 (位元組偏移量 = descriptor_length * 8 * index)。 |
2 |
data |
vector<DataVmo>:32
|
含有影格資料的 VMO。必填。 描述元包含位元組偏移和 VMO ID,用於為資料 VMO 中的區域建立索引。 對於由裝置介面管理的 Rx VMO,VMO 會依 ID 順序提交。 |
3 |
descriptor_version |
uint8
|
要求的描述元版本。必填。 如果網路裝置不支援要求的描述元版本,Device.OpenSession 會失敗,並顯示 |
4 |
descriptor_length |
uint8
|
描述元長度 (以 64 位元字組為單位)。必填。
|
5 |
descriptor_count |
uint16
|
這個工作階段可使用的描述元總數。必填。 透過 rx 或 tx FIFO 傳輸的描述元索引必須介於 [0, |
6 |
options |
SessionFlags
|
Extra options。如未提供,則會解讀為空白位元遮罩。 |
UNIONS
DelegatedRxLeaseHandle 彈性 資源
定義於 fuchsia.hardware.network/session.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
channel |
handle<channel>
|
代表租約的無類型管道。 關閉管道即可釋出租約。 |
2 |
eventpair |
handle<eventpair>
|
代表租約的事件組合。 關閉 eventpair 即可釋出租約。 |
DevicePortEvent strict
定義於 fuchsia.hardware.network/device.fidl
通訊埠建立和刪除事件。
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
existing |
PortId
|
建立監控程式時,通訊埠已存在。 |
2 |
added |
PortId
|
已將新通訊埠新增至裝置。 |
3 |
removed |
PortId
|
通訊埠已從裝置中移除。 |
4 |
idle |
Empty
|
現有通訊埠的完整清單。 |
Device_OpenSession_Result strict resource
定義於 fuchsia.hardware.network/device.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Device_OpenSession_Response
|
|
2 |
err |
zx/Status
|
Session_Attach_Result strict
定義於 fuchsia.hardware.network/session.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Session_Attach_Response
|
|
2 |
err |
zx/Status
|
Session_Detach_Result strict
定義於 fuchsia.hardware.network/session.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Session_Detach_Response
|
|
2 |
err |
zx/Status
|
BITS
EthernetFeatures strict
類型:uint32
定義於 fuchsia.hardware.network/frames.fidl
乙太網路封包子類型和功能。
| 名稱 | 值 | 說明 |
|---|---|---|
RAW |
1 | 裝置支援任何類型的乙太網路封包。 與指定所有其他旗標相同。適用於不檢查或剖析傳出流量的裝置。 |
ETHERNET_II |
2 | 裝置支援 EthernetII 框架。 |
E_802_1_Q |
4 | 裝置支援新增 802.1q VLAN。 |
E_802_1_Q_IN_Q |
8 | 裝置支援 802.1 q-in-q 多重 VLAN 標記。 只有在 |
E_802_3_LLC_SNAP |
16 | 裝置支援 802.3 LLC + SNAP 乙太網路封包格式。 |
RxFlags strict
類型:uint32
定義於 fuchsia.hardware.network/frames.fidl
裝置在 rx 路徑上將緩衝區交給用戶端時設定的旗標。
由裝置在 rx 描述元的 inbound_flags 欄位設定。
| 名稱 | 值 | 說明 |
|---|---|---|
FULL_CHECKSUMS_VERIFIED |
1 | 裝置已驗證一或多個「完整」核對和 (即 UDP 或 TCP 封包等完整內容的網際網路核對和)。 已驗證的核對和數量減一,會顯示在 rx 描述元的
|
RX_OVERRUN |
536870912 | 裝置發生硬體 rx 超限。 Rx 超限通常是由硬體控制器設定,當偵測到影格事件但無法擷取影格資料時,就會發生這種情況。裝置在傳入影格上設定此旗標後,應清除控制器旗標,以便偵測及回報日後的溢位。 |
RX_VALIDATION_ERROR |
1073741824 | 如果執行影格驗證 (例如透過硬體加速功能) 且失敗,就會設定這個位元。 請注意,部分裝置可能會直接捨棄驗證失敗的影格,且不會通知用戶端。只有在建立工作階段時選取 |
SessionFlags strict
類型:uint16
定義於 fuchsia.hardware.network/session.fidl
其他工作階段選項。
| 名稱 | 值 | 說明 |
|---|---|---|
REPORT_INVALID_RX |
1 | 接收無效的 rx 影格。 標示為 |
RECEIVE_RX_POWER_LEASES |
2 | 接收 rx 功率租約。 標示為 |
StatusFlags strict
類型:uint32
定義於 fuchsia.hardware.network/port.fidl
通訊埠狀態位元,在 PortStatus.flags 中回報。
| 名稱 | 值 | 說明 |
|---|---|---|
線上 |
1 | 通訊埠已上線,也就是資料路徑已開啟,任何進行中的工作階段都可以傳送及接收框架。 |
TxFlags 彈性
類型:uint32
定義於 fuchsia.hardware.network/frames.fidl
用戶端在 tx 路徑上將緩衝區交給裝置時設定的旗標。
由用戶端在 tx 描述元的 inbound_flags 欄位設定。
| 名稱 | 值 | 說明 |
|---|---|---|
COMPUTE_GENERIC_CHECKSUM |
1 | 要求裝置根據相對於框架開頭的起始位元組索引,以及表示從起始索引到必須放置結果的核對和欄位偏移量的位元組偏移量,計算一般網際網路核對和。 起始偏移量和核對和欄位的偏移量,是由 tx 描述元的 |
TxReturnFlags 彈性
類型:uint32
定義於 fuchsia.hardware.network/frames.fidl
裝置將 tx 緩衝區傳回用戶端時設定的旗標。
由裝置在 tx 描述元的 return_flags 欄位設定。
| 名稱 | 值 | 說明 |
|---|---|---|
TX_RET_NOT_SUPPORTED |
1 | 不支援 一律與 |
TX_RET_OUT_OF_RESOURCES |
2 | 無法分配資源來傳送影格。 一律與 |
TX_RET_NOT_AVAILABLE |
4 | 裝置無法使用 (離線或中斷連線);未傳送影格。 一律與 |
TX_RET_ERROR |
2147483648 | 傳送這個影格時發生錯誤。 |
常數
| 名稱 | 值 | 類型 | 說明 |
|---|---|---|---|
| FRAME_FEATURES_RAW |
1
|
uint32 |
原始影格的統一定義。 如果裝置不會對傳出流量進行任何剖析,則應在 FrameTypeSupport 項目中定義 新增:HEAD
|
| MAX_DATA_VMOS |
32
|
uint8 |
可能存在的資料 VMO 數量上限。 新增:HEAD
|
| MAX_DESCRIPTOR_CHAIN |
4
|
uint8 |
描述單一影格的鏈結描述元數量上限。 新增:HEAD
|
| MAX_FRAME_TYPES |
4
|
uint32 |
rx 或 tx 支援的畫面類型數量上限。 新增:HEAD
|
| MAX_PORTS |
32
|
uint8 |
裝置在特定時間可連接的通訊埠數量上限。 新增:HEAD
|
| MAX_SESSION_NAME |
64
|
uint32 |
工作階段標籤長度上限。 新增:HEAD
|
| MAX_STATUS_BUFFER |
50
|
uint32 |
StatusWatcher 可緩衝的狀態樣本數量上限。 新增:HEAD
|
別名
| 名稱 | 值 | 說明 |
|---|---|---|
| BasePortId |
uint8 |
裝置內通訊埠的基本 ID。一律小於 MAX_PORTS。 新增:HEAD
|
| VmoId |
uint8 |
VMO ID。 VMO ID 一律介於 [0, MAX_DATA_VMOS) 範圍內。 VMO ID 會回報給裝置實作,並用於找出緩衝區。 新增:HEAD
|
服務
服務
定義於 fuchsia.hardware.network/device.fidl
| 名稱 | 類型 | 傳輸 |
|---|---|---|
| device |
fuchsia.hardware.network/Device
|
版本 |
| device_topology |
fuchsia.device.fs/TopologicalPath
|
版本 |