diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 16:08:12 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 16:08:12 -0400 |
| commit | b9cde963555b6519c5dbd34a39dee3418f593437 (patch) | |
| tree | 453accad3c3286e3416d4160de4a87223aff684c /static/freebsd/man9/iflibtxrx.9 | |
| parent | 5cb84ec742fd33f78c8022863fadaa8d0d93e176 (diff) | |
feat: Added FreeBSD man pages
Diffstat (limited to 'static/freebsd/man9/iflibtxrx.9')
| -rw-r--r-- | static/freebsd/man9/iflibtxrx.9 | 239 |
1 files changed, 239 insertions, 0 deletions
diff --git a/static/freebsd/man9/iflibtxrx.9 b/static/freebsd/man9/iflibtxrx.9 new file mode 100644 index 00000000..df017dea --- /dev/null +++ b/static/freebsd/man9/iflibtxrx.9 @@ -0,0 +1,239 @@ +.Dd December 17, 2020 +.Dt IFLIBTXTX 9 +.Os +.Sh NAME +.Nm iflibtxrx +.Nd Device Dependent Transmit and Receive Functions +.Sh SYNOPSIS +.In "ifdi_if.h" +.Ss "Interface Manipulation Functions" +.Ft int +.Fo isc_txd_encap +.Fa "void *sc" +.Fa "if_pkt_info_t pi" +.Fc +.Ft void +.Fo isc_txd_flush +.Fa "void *sc" +.Fa "uint16_t qid" +.Fa "uint32_t _pidx_or_credits_" +.Fc +.Ft int +.Fo isc_txd_credits_update +.Fa "void *sc" +.Fa "uint16_t qid" +.Fa "bool clear" +.Fc +.Ft int +.Fo isc_rxd_available +.Fa "void *sc" +.Fa "uint16_t qsid" +.Fa "uint32_t cidx" +.Fc +.Ft void +.Fo isc_rxd_refill +.Fa "void *sc" +.Fa "uint16_t qsid" +.Fa "uint8_t flid" +.Fa "uint32_t pidx" +.Fa "uint64_t *paddrs" +.Fa "caddr_t *vaddrs" +.Fa "uint16_t count" +.Fc +.Ft void +.Fo isc_rxd_flush +.Fa "void *sc" +.Fa "uint16_t qsid" +.Fa "uint8_t flid" +.Fa "uint32_t pidx" +.Fc +.Ft int +.Fo isc_rxd_pkt_get +.Fa "void *sc" +.Fa "if_rxd_info_t ri" +.Fc +.Ss "Global Variables" +.Vt extern struct if_txrx +.Sh DATA STRUCTURES +The device dependent mechanisms for handling packet transmit and receive are +primarily defined by the functions named above. +The if_pkt_info data structure contains statistics and identifying info +necessary for packet transmission. +While the data structure for packet receipt is the if_rxd_info structure. +.Ss The if_pkt_info Structure +The fields of +.Vt "struct if_pkt_info" +are as follows: +.Bl -tag -width ".Va if_capabilities" -offset indent +.It Va ipi_len +.Pq Vt "uint32_t" +Denotes the size of packet to be sent on the transmit queue. +.It Va ipi_segs +.Pq Vt "bus_dma_segment_t *" +A pointer to the bus_dma_segment of the device independent transfer queue +defined in iflib. +.It Va ipi_qsidx +Unique index value assigned sequentially to each transmit queue. +Used to reference the currently transmitting queue. +.It Va ipi_nsegs +.Pq Vt "uint16_t" +Number of descriptors to be read into the device dependent transfer +descriptors. +.It Va ipi_ndescs +.Pq Vt "uint16_t" +Number of descriptors in use. +Calculated by subtracting the old pidx value from the new pidx value. +.It Va ipi_flags +.Pq Vt "uint16_t" +Flags defined on a per packet basis. +.It Va ipi_pidx +.Pq Vt "uint32_t" +Value of first pidx sent to the isc_encap function for encapsulation and +subsequent transmission. +.It Va ipi_new_pidx +.Pq Vt "uint32_t" +Value set after the termination of the isc_encap function. +This value will become the first pidx sent to the isc-encap the next time that +the function is called. +.It Va \fBThe Following Fields Are Used For Offload Handling\fP +.It Va ipi_csum_flags +.Pq Vt "uint64_t" +Flags describing the checksum values, used on a per packet basis. +.It Va ipi_tso_segsz +.Pq Vt "uint16_t" +Size of the TSO Segment Size. +.It Va ipi_mflags +.Pq Vt "uint16_t" +Flags describing the operational parameters of the mbuf. +.It Va ipi_vtag +.Pq Vt "uint16_t" +Contains the VLAN information in the Ethernet Frame. +.It Va ipi_etype +.Pq Vt "uint16_t" +Type of ethernet header protocol as contained by the struct ether_vlan_header. +.It Va ipi_ehrdlen +.Pq Vt "uint8_t" +Length of the Ethernet Header. +.It Va ipi_ip_hlen +.Pq Vt "uint8_t" +Length of the TCP Header +.It Va ipi_tcp_hlen +.Pq Vt "uint8_t" +Length of the TCP Header. +.It Va ipi_tcp_hflags +.Pq Vt "uint8_t" +Flags describing the operational parameters of the TCP Header. +.It Va ipi_ipproto +.Pq Vt "uint8_t" +Specifies the type of IP Protocol in use. +Example TCP, UDP, or SCTP. +.El +.Ss The if_rxd_info Structure +The fields of +.Vt "struct if_rxd_info" +are as follows: +.Bl -tag -width ".Va if_capabilities" -offset indent +.It Va iri_qsidx +.Pq Vt "uint16_t" +Unique index value assigned sequentially to each receive queue. +Used to reference the currently receiving queue. +.It Va iri_vtag +.Pq Vt "uint16_t" +Contains the VLAN information in the Ethernet Frame. +.It Va iri_len +.Pq Vt "uint16_t" +Denotes the size of a received packet. +.It Va iri_next_offset +.Pq Vt "uint16_t" +Denotes the offset value for the next packet to be receive. +A Null value signifies the end of packet. +.It Va iri_cidx +.Pq Vt "uint32_t" +Denotes the index value of the packet currently being processed in the +consumer queue. +.It Va iri_flowid +.Pq Vt "uint32_t" +Value of the RSS hash for the packet. +.It Va iri_flags +.Pq Vt "uint" + Flags describing the operational parameters of the mbuf contained in the + receive packet. +.It Va iri_csum_flags +.Pq Vt "uint32_t" +Flags describing the checksum value contained in the receive packet. +.It Va iri_csum_data +.Pq Vt "uint32_t" +Checksum data contained in the +.Xr mbuf 9 +packet header. +.It Va iri_m +.Pq Vt "struct mbuf *" +A mbuf for drivers that manage their own receive queues. +.It Va iri_ifp +.Pq Vt "struct ifnet *" +A link back to the interface structure. +Utilized by drivers that have multiple interface per softc. +.It Va iri_rsstype +.Pq Vt "uint8_t" +The value of the RSS hash type. +.It Va iri_pad +.Pq Vt "uint8_t" +The length of any padding contained by the received data. +.It Va iri_qidx +.Pq Vt "uint8_t" +Represents the type of queue event. +If value >= 0 then it is the freelist id otherwise it is a completion queue +event. +.El +.Sh FUNCTIONS +All function calls are associated exclusively with either packet transmission +or receipt. +The void *sc passed as the first argument to all of the following functions +represents the driver's softc. +.Ss Transmit Packet Functions +.Bl -ohang -offset indent +.It Fn isc_txd_encap +Transmit function that sends a packet on an interface. +The if_pkt_info data structure contains data information fields describing the +packet. +This function returns 0 if successful, otherwise an error value is returned. +.It Fn isc_txd_flush +Flush function is called immediately after the isc_txd_encap function transmits +a packet. +It updates the hardware producer index or increments the descriptors used to +pidx_or_credits in the queue designated by the qid number. +This is often referred to as poking the doorbell register. +.It Fn isc_txd_credits_update +Credit function advances the buffer ring and calculates the credits +(descriptors) processed. +Until the I/O is complete it cleans the range in case of multisegments and +updates the count of processed packets. +The function returns the number of processed credits. +.El +.Ss Receive Packet Functions +.Bl -ohang -offset indent +.It Fn isc_rxd_available +Function calculates the remaining number of descriptors from a position given +by idx. +The function returns this value. +.It Fn isc_rxd_refill +Starting with the physical address paddrs, the function reads a packet into the +rx_ring until a value designated by count is reached. +vaddrs is typically not needed and is provided for devices that place their own +metadata in the packet header. +.It Fn isc_rxd_flush +Flush function updates the producer pointer on the free list flid in queue set +number qid to pidx to reflect the presence of new buffers. +.It Fn isc_rxd_pkt_get +Process a single software descriptor. +rxr->rx_base[i] contains a descriptor that describes a received packet. +Hardware specific information about the buffer referred to by ri is returned in +the data structure if_rxd_info +.El +.Sh SEE ALSO +.Xr iflibdd 9 , +.Xr iflibdi 9 , +.Xr mbuf 9 +.Sh AUTHORS +This manual page was written by +.An Nicole Graziano |
