структура NDIS_UDP_SEGMENTATION_OFFLOAD (ntddndis.h)

Структура NDIS_UDP_SEGMENTATION_OFFLOAD предоставляет сведения о разгрузке сегментации UDP (USO) в структуре NDIS_OFFLOAD .

Синтаксис

typedef struct _NDIS_UDP_SEGMENTATION_OFFLOAD {
  struct {
    ULONG Encapsulation;
    ULONG MaxOffLoadSize;
    ULONG MinSegmentCount : 6;
    ULONG SubMssFinalSegmentSupported : 1;
#if ...
    ULONG Reserved : 25;
#else
    ULONG Reserved : 26;
#endif
  } IPv4;
  struct {
    ULONG Encapsulation;
    ULONG MaxOffLoadSize;
    ULONG MinSegmentCount : 6;
    ULONG SubMssFinalSegmentSupported : 1;
#if ...
    ULONG Reserved1 : 25;
#else
    ULONG Reserved1 : 26;
#endif
    ULONG IpExtensionHeadersSupported : 2;
    ULONG Reserved2 : 30;
  } IPv6;
} NDIS_UDP_SEGMENTATION_OFFLOAD, *PNDIS_UDP_SEGMENTATION_OFFLOAD;

Члены

IPv4

Структура в NDIS_UDP_SEGMENTATION_OFFLOAD , указывающая сведения IPv4, содержащая следующие элементы:

IPv4.Encapsulation

Параметры инкапсуляции для IPv4. Дополнительные сведения об этом члене см. в следующем разделе Примечаний.

IPv4.MaxOffLoadSize

Максимальное количество байтов пользовательских данных, которые транспорт может передать драйверу мини-порта в одном пакете. Транспорт не передает пакет драйверу мини-порта, который содержит больше байтов пользовательских данных, чем указано в MaxOffLoadSize . Если такой пакет должен быть передан, транспорт сам сегментирует пакет на пакеты меньшего размера.

IPv4.MinSegmentCount

Минимальное количество сегментов, на которое должен быть разделен большой UDP-пакет, прежде чем транспорт сможет выгрузить его на оборудование для сегментации. Транспорт не будет разгружать большой пакет в драйвер мини-порта для сегментации, если драйвер мини-порта не может создать по крайней мере столько сегментов, сколько MinSegmentCount указывает из пакета. Если большой UDP-пакет не соответствует требованию к минимальному сегменту, транспорт TCP/IP разделяет пакет на пакеты меньшего размера.

IPv4.SubMssFinalSegmentSupported

Значение ULONG, указывающее, должны ли все сегменты, производные драйвера мини-порта от большого пакета UDP, иметь одинаковый максимальный размер сегмента (MSS). Если драйвер мини-порта не задает возможность SubMssFinalSegmentSupported , то каждый большой UDP-пакет, отгруженный транспортом, должен иметь длину % MSS == 0. То есть большой пакет делится на N пакетов, каждый сегмент пакета содержит ровно байты пользователя MSS . Если драйвер мини-порта задает возможность SubMssFinalSegmentSupported , это условие делимости длины пакетов к транспорту не применяется. Другими словами, конечный сегмент может быть меньше MSS.

Драйвер должен задать для subMssFinalSegmentSupported значение NDIS_OFFLOAD_SUPPORTED если мини-порт способен сегментировать UDP-отправки, где общая длина большого пакета имеет ненулевой остаток при делении на MSS. Если поддержка драйвера мини-порта указана с помощью этого флага, драйверу протокола разрешено выдавать большие UDP-отправки, в которых длина полезных данных UDP окончательного сегментированного пакета меньше MSS.

Дополнительные сведения см. в разделе Разгрузка сегментации UDP (USO).

IPv4.Reserved

Зарезервировано. Драйверы мини-порта не должны выполнять чтение и запись в это поле.

IPv6

Структура в NDIS_UDP_SEGMENTATION_OFFLOAD , указывающая сведения IPv6, содержащая следующие элементы:

IPv6.Encapsulation

Параметры инкапсуляции для IPv6. Дополнительные сведения об этом члене см. в следующем разделе Примечаний.

IPv6.MaxOffLoadSize

Максимальное количество байтов пользовательских данных, которые транспорт может передать драйверу мини-порта в одном пакете. Транспорт не передает пакет драйверу мини-порта, который содержит больше байтов пользовательских данных, чем указано в MaxOffLoadSize . Если такой пакет должен быть передан, транспорт сам сегментирует пакет на пакеты меньшего размера.

IPv6.MinSegmentCount

Минимальное количество сегментов, на которое должен быть разделен большой UDP-пакет, прежде чем транспорт сможет выгрузить его на оборудование для сегментации. Транспорт не будет разгружать большой пакет в драйвер мини-порта для сегментации, если драйвер мини-порта не может создать по крайней мере столько сегментов, сколько MinSegmentCount указывает из пакета. Если большой UDP-пакет не соответствует требованию к минимальному сегменту, транспорт TCP/IP разделяет пакет на пакеты меньшего размера.

IPv6.SubMssFinalSegmentSupported

Значение ULONG, указывающее, должны ли все сегменты, производные драйвера мини-порта от большого пакета UDP, иметь одинаковый максимальный размер сегмента (MSS). Если драйвер мини-порта не задает возможность SubMssFinalSegmentSupported , то каждый большой UDP-пакет, отгруженный транспортом, должен иметь длину % MSS == 0. То есть большой пакет делится на N пакетов, каждый сегмент пакета содержит ровно байты пользователя MSS . Если драйвер мини-порта задает возможность SubMssFinalSegmentSupported , это условие делимости длины пакетов к транспорту не применяется. Другими словами, конечный сегмент может быть меньше MSS.

Драйвер должен задать для subMssFinalSegmentSupported значение NDIS_OFFLOAD_SUPPORTED если мини-порт способен сегментировать UDP-отправки, где общая длина большого пакета имеет ненулевой остаток при делении на MSS. Если поддержка драйвера мини-порта указана с помощью этого флага, драйверу протокола разрешено выдавать большие UDP-отправки, в которых длина полезных данных UDP окончательного сегментированного пакета меньше MSS.

Дополнительные сведения см. в разделе Разгрузка сегментации UDP (USO).

IPv6.Reserved1

Зарезервировано. Драйверы мини-порта не должны выполнять чтение и запись в это поле.

IPv6.IpExtensionHeadersSupported

Значение ULONG, заданное драйвером мини-порта, указывает, что адаптер мини-порта может сегментировать большой UDP-пакет, IP-заголовок которого содержит заголовки расширения IPv6.

IPv6.Reserved2

Зарезервировано. Драйверы мини-порта не должны выполнять чтение и запись в это поле.

Комментарии

Драйверы мини-портов должны задавать значения полей и требований к инкапсуляции этой структуры аналогично NDIS_TCP_LARGE_SEND_OFFLOAD_V2 структуре.

Структура NDIS_UDP_SEGMENTATION_OFFLOAD используется в элементе UdpSegmentationструктуры NDIS_OFFLOAD . NDIS_UDP_SEGMENTATION_OFFLOAD указывает текущие или поддерживаемые службы, предоставляемые адаптером мини-порта для сегментирования больших пакетов UDP на пакеты меньшего размера.

NDIS_OFFLOAD используется в структуре NDIS_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES , структуре NDIS_BIND_PARAMETERS , структуре NDIS_FILTER_ATTACH_PARAMETERS , OID_TCP_OFFLOAD_CURRENT_CONFIG OID и указании состояния NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG .

Для OID_TCP_OFFLOAD_CURRENT_CONFIG структура NDIS_OFFLOAD определяет возможности разгрузки задач, поддерживаемые адаптером мини-порта. Если текущие возможности разгрузки изменяются, драйвер мини-порта сообщает о новых возможностях в NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG состоянии.

Элементы инкапсуляцииNDIS_UDP_SEGMENTATION_OFFLOAD определяют параметры инкапсуляции UDP для адаптера мини-порта.

В ответ на запрос OID_TCP_OFFLOAD_CURRENT_CONFIG запрос NDIS предоставляет побитовое ИЛИ флагов инкапсуляции, которые указывают поддерживаемые параметры инкапсуляции в каждом из членов инкапсуляции . Драйверы miniport должны обеспечивать инкапсуляцию Ethernet (NDIS_ENCAPSULATION_IEEE_802_3). Другие типы инкапсуляции являются необязательными.

Для указания состояния NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG драйвер мини-порта предоставляет побитовое ИЛИ флагов инкапсуляции, которые указывают текущие возможности в каждом из членов инкапсуляции .

Для членов инкапсуляции определены следующие флаги:

NDIS_ENCAPSULATION_NOT_SUPPORTED
Указывает, что разгрузка инкапсуляции не поддерживается.

NDIS_ENCAPSULATION_NULL
Задает инкапсуляцию NULL.

NDIS_ENCAPSULATION_IEEE_802_3
Указывает инкапсуляцию IEEE 802.3.

NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q
Указывает инкапсуляцию IEEE 802.3p и IEEE 802.3q.

NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB
Указывает, что параметры инкапсуляции IEEE 802.3p и IEEE 802.3q указаны в элементе NetBufferListInfo каждой структуры NET_BUFFER_LIST.

NDIS_ENCAPSULATION_IEEE_LLC_SNAP_ROUTED
Указывает инкапсуляцию элемента управления логическими ссылками (LLC) для маршрутизируемых протоколов, как описано в документе RFC 1483. Этот флаг также используется для обозначения инкапсуляции Ethernet LLC/SNAP.

Требования

Требование Значение
Минимальная версия клиента Windows 10, версия 1912
Верхняя часть ntddndis.h

См. также раздел

Разгрузка сегментации UDP (USO)