fuchsia.hardware.network

已新增:7

專家

裝置

定義於 fuchsia.hardware.network/device.fidl

網路裝置。

已新增:HEAD

副本

為這部裝置建立新連線。

  • 要求 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。
  • 錯誤 ZX_ERR_NOT_SUPPORTEDsession_info
  • 如果 session_info 缺少欄位或含有無效資訊,就會顯示 ZX_ERR_INVALID_ARGS 錯誤。
  • 錯誤 ZX_ERR_INTERNAL

要求

名稱類型
session_name string[64]
session_info SessionInfo

回應

名稱類型
payload Device_OpenSession_Result

DeviceInstance

定義於 fuchsia.hardware.network/instance.fidl

公開網路裝置的執行個體。

已新增:HEAD

GetDevice

連結到裝置實作。

  • 要求 device 個裝置帳號代碼。

要求

名稱類型
device server_end<Device>

診斷

定義於 fuchsia.hardware.network/diagnostics.fidl

提供裝置與上層通訊方式,以便交換裝置健康狀態資訊。

已新增:HEAD

LogDebugInfoToSyslog

裝置在系統記錄中產生偵錯資訊的要求。

產生裝置偵錯資訊後,呼叫會傳回這個呼叫。

要求

<EMPTY>

回應

<EMPTY>

MacAddressing

定義於 fuchsia.hardware.network/mac.fidl

已新增:HEAD

AddMulticastAddress

將多點傳播位址新增至多點傳播群組清單。

呼叫 SetMode 時,保留的多點傳播位址清單不會受到影響。如果裝置模式不是 MULTICAST_FILTER,系統會忽略多點傳播位址清單。

  • 要求 address 多點傳播位址以加入清單。
  • 如果 address 不是多點傳播位址,則回應 status ZX_ERR_INVALID_ARGS

要求

名稱類型
address fuchsia.net/MacAddress

回應

名稱類型
status zx/Status

GetUnicastAddress

取得裝置目前的單點傳播 MAC 位址。

這個 API 的實作者不必傳回可明確識別的 MAC;傳回的單點傳播位址就是「目前」用於篩選單點傳播框架,或可透過該連結「目前」連結的裝置來識別裝置。這個 API 的使用者不得依賴傳回值的穩定性或唯一性來識別或釐清裝置執行個體。

  • 回應 address 裝置的單點傳播 MAC 位址。

要求

<EMPTY>

回應

名稱類型
address fuchsia.net/MacAddress

RemoveMulticastAddress

從多點傳播群組清單中移除多點傳播位址。

  • 要求 address 多點傳播位址,從清單中移除。
  • 如果 address 不是多點傳播位址,則回應 status ZX_ERR_INVALID_ARGS

要求

名稱類型
address fuchsia.net/MacAddress

回應

名稱類型
status zx/Status

SetMode

將這部裝置要求的運作模式設為「mode」。

要求的模式會附加至裝置目前的用戶端連線。由於同一部裝置可以一次連接多個用戶端,因此設有最低限制的模式會主動在基礎裝置實作中生效。

如果裝置不支援要求的模式,但支援的模式開啟的時間大於要求模式,則 SetMode 也會執行成功。否則,如果裝置僅支援比要求更多限制的模式,SetMode 會傳回 ZX_ERR_NOT_SUPPORTED

用戶端必須注意,正在存取的資源是共用的,且裝置可能會在比要求的開放層級有效運作 (但絕對不會限制在更嚴格的層級)。

  • 要求 mode 要求模式。
  • 回應 status ZX_ERR_NOT_SUPPORTED,則裝置支援的模式限制比要求的限制更多。

要求

名稱類型
mode MacFilterMode

回應

名稱類型
status zx/Status

連接埠

定義於 fuchsia.hardware.network/port.fidl

屬於「裝置」的邏輯通訊埠。

已新增:HEAD

副本

建立與這個通訊埠的新連線。

  • 要求 port,伺服器結束用於新連線。

要求

名稱類型
port server_end<Port>

GetCounters

擷取這個通訊埠的流量計數器快照。

要求

<EMPTY>

回應

名稱類型
payload PortGetCountersResponse

GetDevice

連線至這個通訊埠所屬的裝置

  • 要求 device 將存取權授予家長裝置。

要求

名稱類型
device server_end<Device>

GetDiagnostics

可授予這個通訊埠的診斷權限。

  • 若要求 diagnostics,則會授予診斷資訊存取權。

要求

名稱類型
diagnostics server_end<Diagnostics>

GetInfo

取得通訊埠相關資訊。

  • 回應 info 通訊埠資訊。

要求

<EMPTY>

回應

名稱類型
info PortInfo

GetMac

連線至與通訊埠相關聯的 MacAddressing

  • 要求 mac mac 控制代碼。如果這個通訊埠不支援 Mac 位址,請使用 ZX_ERR_NOT_SUPPORTED 關閉。

要求

名稱類型
mac server_end<MacAddressing>

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

針對連接至裝置的通訊埠進行疊代和更新。

已新增:HEAD

觀看

取得下一個通訊埠事件。

第一個 N 呼叫會傳回 DevicePortEvent.existing,其中 N 是觀察器建立時裝置上顯示的通訊埠數量。下一個呼叫會傳回 DevicePortEvent.idle,表示現有通訊埠的結尾。後續呼叫會封鎖,直到新增通訊埠 (DevicePortEvent.added) 或移除 (DevicePortEvent.removed) 為止。

如果未讀取事件的數量達到伺服器所選的上限 (至少兩次為 MAX_PORTS),伺服器就會關閉包含 ZX_ERR_CANCELEDPortWatcher 管道。我們建議用戶端一律維持對 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。 - 小於 Info.min_rx_buffer_length 的 rx 緩衝區。- 小於 Info.min_tx_buffer_length 的 tx 緩衝區。- 未遵循 Info.min_tx_buffer_headInfo.min_tx_buffer_tail 的 tx 緩衝區。

已新增:HEAD

附加至訊息

將工作階段附加至 port

連接後,工作階段會開始透過資料 FIFO 接收已訂閱的影格,並可能會傳送目的地為指定 port 的影格。

  • 要求訂閱 port 通訊埠。
  • 要求 rx_frames 通訊埠所需的影格類型。
  • 如果 port 無效,則傳回 ZX_ERR_NOT_FOUND 錯誤。
  • 如果 rx_frames 不是通訊埠支援的影格子集,系統會顯示 ZX_ERR_INVALID_ARGS 錯誤。
  • 錯誤 ZX_ERR_ALREADY_BOUND (如果已附加 port)。

要求

名稱類型
port PortId
rx_frames vector<FrameType>[4]

回應

名稱類型
payload Session_Attach_Result

關閉

完全關閉工作階段。

這會導致工作階段傳送 ZX_ERR_CANCELLED 個參數,並繼續關閉工作階段管道。用戶端在收到傳記後,只能假設自己擁有工作階段目前擁有的所有緩衝區 (透過 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

StatusWatcher

定義於 fuchsia.hardware.network/port.fidl

提供接收通訊埠狀態變更的最新資訊。

已新增:HEAD

WatchStatus

WatchStatus 會封鎖,直到通訊埠的狀態變更為止。

WatchStatus 發出的第一個呼叫會立即傳回目前的通訊埠狀態,如果通訊埠狀態與透過此 StatusWatcher 傳回的最後一個呼叫不同,後續呼叫就會完成。

如果建立 StatusWatcher 時使用大於 1 的緩衝區值,WatchStatus 可能會傳回佇列狀態變更,具體取決於上次呼叫 WatchStatus 後發生的狀態變更數量。

  • 回應 device_status 最新的通訊埠狀態。

要求

<EMPTY>

回應

名稱類型
port_status PortStatus

結構

Device_OpenSession_Response 資源

定義於 fuchsia.hardware.network/device.fidl

欄位類型說明預設
session Session 無預設
fifos Fifos 無預設

空白

定義於 fuchsia.hardware.network/device.fidl

已新增:HEAD

<EMPTY>

Fifos 資源

定義於 fuchsia.hardware.network/session.fidl

資料層 FIFO。

已新增:HEAD

欄位類型說明預設
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 位元,告知用戶端可以存取所有影格功能。

已新增:HEAD

欄位類型說明預設
type FrameType

這個支援項目參照的影格類型。

無預設
features uint32

支援的影格類型特定功能。

無預設
supported_flags TxFlags

指定影格類型支援的旗標。

無預設

PortId

定義於 fuchsia.hardware.network/port.fidl

裝置通訊埠 ID。

已新增:HEAD

欄位類型說明預設
base BasePortId

通訊埠的基礎 ID,

一般用來識別硬體中的通訊埠執行個體。

無預設
salt uint8

實作定義的 ID,保證會在每個已識別的通訊埠執行個體化時變更。

無預設

Session_Attach_Response

定義於 fuchsia.hardware.network/session.fidl

<EMPTY>

Session_Detach_Response

定義於 fuchsia.hardware.network/session.fidl

<EMPTY>

表情符號

DeviceClass 嚴格

類型:uint16

定義於 fuchsia.hardware.network/port.fidl

網路裝置類別。

注意:我們建議裝置實作器在這個列舉中新增內容,以免在沒有合適比對結果時,使用效果不佳的變化版本。

名稱說明
0
1
2
3
4
5

FrameType strict

類型:uint8

定義於 fuchsia.hardware.network/frames.fidl

影格的類型。

已新增:HEAD

名稱說明
1
2
3

InfoType 嚴格

類型:uint32

定義於 fuchsia.hardware.network/frames.fidl

影格附加的中繼資料資訊類型。

已新增:HEAD

名稱說明
0

沒有額外資訊。

MacFilterMode 嚴格

類型:uint32

定義於 fuchsia.hardware.network/mac.fidl

MAC 裝置支援的位址篩選模式。

已新增:HEAD

名稱說明
0

裝置僅接受定至其單點傳播位址的單點傳播框架,或多點傳播位址篩選器清單中的多點傳播影格。

1

裝置接受指向專屬單點傳播位址的單點傳播影格,或任何多點傳播影格。

2

裝置接受所有畫面。

RxAcceleration 嚴格

類型:uint8

定義於 fuchsia.hardware.network/frames.fidl

可用的 rx 加速功能。

功能會依據 Info.rx_accel 中回報的可用值,對應至描述元中的 RXACCEL* 位元。

已新增:HEAD

名稱說明
0

傳入 Rx 影格已驗證乙太網路影格檢查序列。

1

內送 Rx 影格已驗證 IPv4 檢查碼。

2

傳入的 rx 框架會驗證 TCP 檢查碼。

3

傳入 Rx 影格已驗證 UDP 檢查碼。

TxAcceleration 嚴格

類型:uint8

定義於 fuchsia.hardware.network/frames.fidl

可用的 tx 加速功能。

功能會依據 Info.tx_accel 中回報的可用值,對應至描述元中的 TXACCEL* 位元。

已新增:HEAD

名稱說明
0

要求裝置計算乙太網路影格檢查序列,並在原地寫入。

1

要求裝置計算並寫入 IPv4 檢查碼。

2

要求裝置計算並寫入 TCP 檢查碼。

3

要求裝置計算並寫入 UDP 檢查碼。

資料表

DeviceBaseInfo

定義於 fuchsia.hardware.network/device.fidl

網路裝置基本資訊。

已新增:HEAD

序數欄位類型說明
rx_depth uint16

rx FIFO (每個工作階段) 中的項目數量上限。必填。

rx_depth 是根據實際支援硬體 Rx 佇列的大小計算。

tx_depth uint16

tx FIFO (每個工作階段) 中的項目數量上限。必填。

tx_depth 是根據實際支援硬體 tx 佇列的大小計算。

buffer_alignment uint32

資料 VMO 中緩衝區的對齊需求。

資料 VMO 中的所有緩衝區都必須與 VMO 開頭的 buffer_alignment 對齊。系統一律不會回報 buffer_alignment == 0。必填。

max_buffer_length uint32

資料 VMO 中支援的緩衝區長度上限 (以位元組為單位)。

如果沒有定義緩衝區長度上限,則不會顯示。不得為零。

min_rx_buffer_length uint32

裝置所需的 Rx 緩衝區長度下限。必填。

min_tx_buffer_length uint32

裝置所需的最小 Tx 緩衝區長度。必填。

這個值只會處理 tx 酬載長度,min_tx_buffer_headmin_tx_buffer_tail 不包含在這個值中。

用戶端必須為沒有填充影格的影格才能達到規定的長度下限。

min_tx_buffer_head uint16

裝置要求在 Tx 緩衝區中能夠釋出的位元組數,做為 head 空間。必填。

min_tx_buffer_tail uint16

裝置要求在 Tx 緩衝區中能夠釋出的位元組數為 tail 空間。必填。

max_buffer_parts uint8

裝置接受的描述元鏈結長度上限。必填。

rx_accel vector<RxAcceleration>[16]

這部裝置可用的 rx 加速旗標。

rx_accel 將影格描述元中的 RX_ACCEL_* 旗標與 RxAcceleration 描述的語意加速功能對應。rx_acceln 位置傳達 RX_ACCEL_n 標記的意義。

如未提供,則會解讀為空白。

tx_accel vector<TxAcceleration>[16]

這部裝置可用的 Tx 加速旗標。

tx_accel 將影格描述元中的 TX_ACCEL_* 旗標與 TxAcceleration 描述的語意加速功能對應。tx_acceln 位置傳達 TX_ACCEL_n 標記的意義。

如未提供,則會解讀為空白。

DeviceInfo

定義於 fuchsia.hardware.network/device.fidl

網路裝置資訊。

已新增:HEAD

序數欄位類型說明
min_descriptor_length uint8

描述元長度下限 (64 位元字詞)。必填。

每個緩衝區描述元為了與裝置正確作業而必須達到的最短長度。支援額外影格中繼資料的裝置可讓描述元的最短長度增加,反映要儲存影格中繼資料所需的最小空間。

descriptor_version uint8

接受的描述元版本。必填。

base_info DeviceBaseInfo

裝置基礎資訊。必填。

PortBaseInfo

定義於 fuchsia.hardware.network/port.fidl

通訊埠基本資訊。

已新增:HEAD

序數欄位類型說明
port_class PortClass

通訊埠的類別。必填。

rx_types vector<FrameType>[4]

這個通訊埠支援的 rx 影格類型。必填。

用戶端可以在這個通訊埠上開啟訂閱 rx_types 影格類型的工作階段。

tx_types vector<FrameTypeSupport>[4]

這個通訊埠支援的 tx 影格類型。必填。

目的地為這個通訊埠的影格類型不在 tx_types 中時,會傳回錯誤。

部分網路裝置可能需要執行部分影格剖析和序列化作業,因此 tx_typesFrameTypeSupport 的向量,其中包含每種頁框類型的特定功能。舉例來說,如果裝置支援乙太網路框架,但需要轉換乙太網路標頭,則可能僅支援標準乙太網路 II 影格,而不支援任何「原始」乙太網路影格。

PortGetCountersResponse

定義於 fuchsia.hardware.network/port.fidl

序數欄位類型說明
rx_frames uint64

這個通訊埠的輸入影格總數。

rx_bytes uint64

這個通訊埠的輸入位元組數總數。

tx_frames uint64

這個通訊埠的輸出影格總數。

tx_bytes uint64

這個通訊埠的輸出位元組總數。

PortInfo

定義於 fuchsia.hardware.network/port.fidl

邏輯通訊埠資訊。

已新增:HEAD

序數欄位類型說明
id PortId

通訊埠 ID。必填。

base_info PortBaseInfo

PortStatus

定義於 fuchsia.hardware.network/port.fidl

動態通訊埠資訊。

已新增:HEAD

序數欄位類型說明
flags StatusFlags

通訊埠狀態旗標。

mtu uint32

這個通訊埠的傳輸單位上限,以位元組為單位。

回報的 MTU 是整個影格的大小,包括這個通訊埠支援的任何通訊協定的任何標頭和預告位元組。

SessionInfo 資源

定義於 fuchsia.hardware.network/session.fidl

工作階段設定。

已新增:HEAD

序數欄位類型說明
descriptors handle<vmo>

包含描述元的 VMO。必填。

透過 FIFO 傳送的 16 位元索引,在這個 VMO 中為描述元建立索引 (位元組偏移 = 描述元_length * 8 * 索引)。

data handle<vmo>

含有影格資料的 VMO。必填。

描述元包含位元組偏移,用於為 data 中的任意區域建立索引。

descriptor_version uint8

要求的描述元版本。必填。

如果網路裝置不支援要求的描述元版本,Device.OpenSession 就會失敗,並顯示 ZX_ERR_NOT_SUPPORTED

descriptor_length uint8

描述元長度 (64 位元)。必填。

descriptors VMO 中每個描述元的長度。此值可做為調節係數,在指定透過 rx 或 tx FIFO 傳遞的描述元索引指定 descriptors 中尋找位元組偏移值。

descriptor_count uint16

這個工作階段可用的描述元總數。必填。

透過 rx 或 tx FIFO 傳輸的描述元索引必須位於 [0、descriptor_count] 範圍內。

options SessionFlags

其他選項。如果沒有,則會解讀為空白位元遮罩。

聯合國

DevicePortEvent 嚴格

定義於 fuchsia.hardware.network/device.fidl

建立和刪除通訊埠事件。

已新增:HEAD
序數Variant類型說明
existing PortId

這個通訊埠在建立監看工具時存在。

added PortId

已在裝置中新增通訊埠。

removed PortId

連接埠已從裝置中移除。

idle Empty

現有通訊埠清單已用盡。

Device_OpenSession_Result 嚴格的 資源

定義於 fuchsia.hardware.network/device.fidl

序數Variant類型說明
response Device_OpenSession_Response
err zx/Status

Session_Attach_Result strict

定義於 fuchsia.hardware.network/session.fidl

序數Variant類型說明
response Session_Attach_Response
err zx/Status

Session_Detach_Result strict

定義於 fuchsia.hardware.network/session.fidl

序數Variant類型說明
response Session_Detach_Response
err zx/Status

節拍

EthernetFeature 嚴格

類型:uint32

定義於 fuchsia.hardware.network/frames.fidl

乙太網路影格子類型和功能。

已新增:HEAD

名稱說明
1

裝置支援任何類型的乙太網路封包。

與指定所有其他標記相同。不會檢查或剖析傳出流量的裝置使用這個值。

2

裝置支援 EthernetII 錶框。

4

裝置支援 802.1q VLAN 新增項目。

8

裝置支援 802.1 q-in-q 多個 VLAN 標記新增項目。

只有在 E_802_1_Q 也存在時才有意義。

16

裝置支援 802.3 LLC + SNAP 乙太網路影格格式。

RxFlags 嚴格

類型:uint32

定義於 fuchsia.hardware.network/frames.fidl

裝置在 rx 路徑將緩衝區交給用戶端時設定的旗標。

由 rx 描述元的 inbound_flags 欄位中的裝置設定。

已新增:HEAD

名稱說明
1

加速標記 0。

加速標記會對應到裝置Info.rx_accel 中回報的加速功能。rx_accel 中的第 n 個功能會對應至 RX_ACCEL_n RxFlag

2
4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384
32768
536870912

裝置發生硬體 RX 超載的情況。

Rx 超額通常會在偵測到影格事件時由硬體控制器設定,但無法擷取影格資料。這項設定在傳入頁框上設定後,裝置應清除控制器標記,以便系統偵測並回報日後的過渡情形。

1073741824

如果執行影格驗證 (例如透過硬體加速功能) 失敗,則會設定這個位元。

請注意,部分裝置可能會直接捨棄驗證失敗的影格,並且絕不會通知用戶端。驗證失敗的 Rx 影格只會在建立工作階段時選取 SessionFlags::REPORT_INVALID_RX 選項,才會傳送至用戶端。

2147483648

這是回應 tx 影格,由 tx 要求建立。

只能在具有 LISTEN_TX 旗標的工作階段中設定。

工作階段旗標嚴格

類型:uint16

定義於 fuchsia.hardware.network/session.fidl

其他工作階段選項。

已新增:HEAD

名稱說明
1

附加為主要工作階段。

標有 PRIMARY 位元的工作階段會採用下列不同處理方式:

  • 如果沒有連接主要工作階段,裝置「不會」為非主要工作階段提供 rx 影格。
  • 如果只有一個主要工作階段啟用,則若基礎實作支援,它可能會從備用硬體收到零複製資料路徑。
2

監聽影格傳出。

LISTEN_TX 工作階段會在其 rx 路徑上接收來自所有工作階段的任何傳出影格。可用於窺探流量。標有 LISTEN_TX 的工作階段可能也會傳送影格,但請注意,這些工作階段「一律」會在 RX 路徑上接收這些影格 (未執行來源工作階段篩選)。

4

接收無效的 RX 影格。

標有 REPORT_INVALID_RX 的工作階段願意接收因為硬體執行內部裝置檢查或酬載驗證而拒絕的影格。由於某些硬體平台的性質,如果硬體實作只會捨棄影格且未向軟體堆疊公開,標有 REPORT_INVALID_RX 的工作階段可能仍會收到驗證失敗的影格。相較之下,未標示 REPORT_INVALID_RX 的工作階段就一律不會收到已設定 RX_VALIDATION_ERROR 旗標的 rx 影格。

狀態旗標嚴格

類型:uint32

定義於 fuchsia.hardware.network/port.fidl

通訊埠狀態位元,使用 PortStatus.flags 回報。

已新增:HEAD

名稱說明
1

通訊埠已連上網路,亦即資料路徑為開啟狀態,且任何進行中的工作階段都可以傳送及接收影格。

TxFlags 嚴格

類型:uint32

定義於 fuchsia.hardware.network/frames.fidl

用戶端在 tx 路徑將緩衝區交給用戶端時設定的旗標。

由用戶端在 tx 描述元的 inbound_flags 欄位中設定。

已新增:HEAD

名稱說明
1

加速標記 0。

加速標記會對應到裝置Info.tx_accel 中回報的加速功能。tx_accel 中的第 n 個功能會對應至 TX_ACCEL_n TxFlag

2
4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384
32768

TxReturnFlags 嚴格

類型:uint32

定義於 fuchsia.hardware.network/frames.fidl

將 tx 緩衝區傳回用戶端時,裝置設定的旗標。

由 tx 描述元的 return_flags 欄位中的裝置設定。

已新增:HEAD

名稱說明
1

不支援在 inbound_flags 中要求的作業;未傳送影格。

一律與 TX_RET_ERROR 設定。

2

無法分配資源以傳送影格。

一律與 TX_RET_ERROR 設定。

4

裝置無法使用 (離線或連線中斷);影格尚未傳送。

一律與 TX_RET_ERROR 設定。

2147483648

場景

名稱類型說明
FRAME_FEATURES_RAW 1 uint32

原始影格的大量定義。

如果裝置不會執行任何傳出流量剖析作業,則應在 FrameTypeSupport 項目中定義 FRAME_FEATURES_RAW

已新增:HEAD
MAX_ACCEL_FLAGS 16 uint32

加速旗標的數量上限。

每個描述元都有 16 位元的加速標記空間 (RxFlagsTxFlags),因此回報的加速數量上限為 16 位元。每個描述元都會報告所套用的加速 (RxFlags),或者將支援加速 (Info.rx_accel) 和 (Info.tx_accel) 的索引對應至個別加速標記位元欄位中的位元,藉此回報所套用的加速 (RxFlags)。TxFlags

已新增: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
PortClass fuchsia.hardware.network/DeviceClass

網路通訊埠類別。

已新增:HEAD