다음을 통해 공유


NET_PACKET 구조체(packet.h)

단일 네트워크 패킷을 나타냅니다.

구문

typedef struct _NET_PACKET {
  UINT32            FragmentIndex;
  UINT16            FragmentCount;
  NET_PACKET_LAYOUT Layout;
  UINT8             Ignore : 1;
  UINT8             Scratch : 1;
  UINT8             Reserved1 : 6;
} NET_PACKET;

멤버

FragmentIndex

이 패킷 페이로드에서 첫 번째 NET_FRAGMENT 구조체의 조각 링에 있는 인덱스입니다.

FragmentCount

이 패킷에 속하는 NET_FRAGMENT 구조체의 수입니다.

Layout

NET_PACKET_LAYOUT 구조체입니다.

전송 큐의 경우 호스트 스택이 프로토콜 헤더를 사용하는 작업 오프로드를 사용하도록 설정한 경우 각 프로토콜 필드에 대한 읽기 전용 오프셋을 지정합니다. 예를 들어 TCP 체크섬 오프로드를 사용하는 경우 이 멤버는 TCP 헤더에 대한 오프셋을 지정합니다. 그렇지 않으면 이 멤버가 비어 있습니다.

수신 큐의 경우 호스트 스택이 프로토콜 헤더를 사용하는 작업 오프로드를 사용하도록 설정한 경우 Layer2Type, Layer3TypeLayer4Type 플래그를 설정합니다. 작업 오프로드가 없으면 이 멤버는 비어 있습니다.

Ignore

수신 큐의 경우 클라이언트는 패킷이 호스트에 표시되지 않도록 이 필드를 설정합니다. 예를 들어 이 패킷 조각에 대한 데이터 버퍼에 바이트를 쓰는 동안 하드웨어에서 DMA 오류가 발생한 경우 클라이언트는 이 필드를 설정하여 부분 패킷을 삭제할 수 있습니다.

전송 큐의 경우 이 필드는 읽기 전용입니다. 설정된 경우 클라이언트가 패킷을 전송해서는 안 됨을 나타냅니다.

Scratch

클라이언트가 어떤 용도로든 사용할 수 있는 비트 필드 값입니다. NET_PACKET 다시 사용하면 이 값이 0으로 다시 설정됩니다.

Reserved1

예약되어 있습니다. 클라이언트 드라이버는 이 값을 읽거나 써서는 안됩니다.

설명

NET_PACKET 구조체는 단일 네트워크 프레임을 나타내며 프레이밍 레이아웃과 같은 모든 패킷에 적용 가능한 기본 메타데이터를 포함합니다. NET_PACKET 패킷 데이터가 있는 시스템 메모리의 위치를 설명하는 하나 이상의 NET_FRAGMENT 포함합니다.

NET_PACKET 구조체는 NET_RING 구조체의 요소가 될 수 있습니다.

요구 사항

요구 사항
최소 KMDF 버전 1.29
최소 UMDF 버전 2.33
머리글 packet.h