Expand description

The different descriptor types used by Intel NICs. Usually the newer NICs use more advanced descriptor types but retain support for older ones. The difference in the types is the amount of packet information that is included in the descriptor, and the format.

Structs

  • Advanced Receive Descriptor used in the Ixgbe driver. It has 2 modes: Read and Write Back, both of which use the whole 128 bits. There is one receive descriptor per receive buffer that can be converted between these 2 modes. Read contains the addresses that the driver writes. Write Back contains information the hardware writes on receiving a packet. More information can be found in the 82599 datasheet.
  • Advanced Transmit Descriptor used by the ixgbe NIC driver.
  • This struct is a Legacy Receive Descriptor. The driver writes to the upper 64 bits, and the NIC writes to the lower 64 bits. It’s the descriptor type used in older Intel NICs and the E1000 driver.
  • This struct is a Legacy Transmit Descriptor. It’s the descriptor type used in older Intel NICs and the E1000 driver.

Constants

  • Rx Status: Descriptor Done
  • Rx Status: End of Packet
  • Tx Command: Descriptor Extension (Advanced format)
  • Tx Command: End of Packet
  • Tx Command: Insert Checksum
  • Tx Command: Interrupt Delay Enable
  • Tx Command: Insert MAC FCS
  • Tx Command: Report Packet Sent
  • Tx Command: Report Status
  • Tx Command: VLAN Packet Enable
  • Tx Descriptor Type: advanced
  • Tx Descriptor paylen shift The paylen is located at bit 46 in the upper 64 bits of the advanced Tx descriptor. Since we have divided the upper 64 bits into 4 parts (u16,u8,u8,u32), the paylen is then located at bit 14 of the upper 32 bits of the descriptor.
  • Tx Status: descriptor Done

Traits

  • A trait for the minimum set of functions needed to receive a packet using one of Intel’s receive descriptor types. Receive descriptors contain the physical address where an incoming packet should be stored by the NIC, as well as bits that are updated by the HW once the packet is received. There is one receive descriptor per receive buffer. Receive functions defined in the Network_Interface_Card crate expect a receive descriptor to implement this trait.
  • A trait for the minimum set of functions needed to transmit a packet using one of Intel’s transmit descriptor types. Transmit descriptors contain the physical address where an outgoing packet is stored, as well as bits that are updated by the HW once the packet is sent. There is one transmit descriptor per transmit buffer. Transmit functions defined in the Network_Interface_Card crate expect a transmit descriptor to implement this trait.