查詢和更改 NVGRE 任務卸載狀態
本節說明如何查詢或變更具 NVGRE 功能的迷你埠驅動程式的 任務卸載狀態,以使用通用路由封裝(NVGRE)改變目前 網路虛擬化。 NVGRE 工作卸除預設可以啟用,但預設不得處於工作狀態。 在 NDIS 通訊協定或篩選驅動程式明確啟用此功能之前,NIC 不應開始在封裝封包上執行任務卸載。
查詢 NVGRE 任務卸載狀態
若要查詢迷你埠驅動程式目前的 NVGRE 工作卸載狀態,NDIS 通訊協定或篩選驅動程式會使用 OID_TCP_OFFLOAD_CURRENT_CONFIG OID 要求。 這會傳回一個 NDIS_OFFLOAD 結構,其 EncapsulatedPacketTaskOffloadGre 成員是 NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD 結構。這個結構包含 NDIS_OFFLOAD_SUPPORTED,當目前針對 GRE 封裝的封包啟用這些卸除時;否則,則包含 NDIS_OFFLOAD_NOT_SUPPORTED。 NDIS 會處理此 OID,且不會將其傳遞至迷你埠。
注意 若要判斷迷你埠驅動程式是否支援 NVGRE 工作卸除,請使用 OID_TCP_OFFLOAD_HARDWARE_CAPABILITIES OID 要求,如 判斷網路適配器的 NVGRE 工作卸除功能中所述。
變更 NVGRE 工作卸除狀態
NDIS 通訊協定或篩選驅動程式可以發出 OID_TCP_OFFLOAD_PARAMETERS OID 要求來啟用或停用 NVGRE 工作卸載。 此 OID 使用 NDIS_OFFLOAD_PARAMETERS 結構。 在此結構中,EncapsulatedPacketTaskOffload 成員可以具有下列值:
術語 | 描述 |
---|---|
NDIS_OFFLOAD_SET_NO_CHANGE |
NVGRE 任務卸載狀態不變。 |
NDIS_OFFLOAD_SET_ON |
指定此旗標以啟用 NVGRE 任務卸載。 |
NDIS_OFFLOAD_SET_OFF |
指定此旗標以停用 NVGRE 任務卸載。 |
在迷你埠驅動程序處理 OID_TCP_OFFLOAD_PARAMETERS OID 請求之後,它必須發出 NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG 狀態指示,並指示更新過的卸載狀態。
當迷你埠驅動程式收到 OID_TCP_OFFLOAD_PARAMETERS OID 要求,並且該要求指定了 NDIS_OFFLOAD_SET_OFF 標誌時,應在完成該 OID 要求之前,將任何現有封裝並已開始任務卸載處理的封包向上層指出。
一般封包的基礎任務卸載是由現有的 OID 所啟用,例如 OID_OFFLOAD_ENCAPSULATION 和 OID_RECEIVE_FILTER_ALLOCATE_QUEUE。 EncapsulatedPacketTaskOffload 成員設定會補充這些 OIDs,並指示 NIC 也將針對封裝的封包執行這些卸載。