*** UNIX MANUAL PAGE BROWSER ***

A Nergahak database for man pages research.

Navigation

Directory Browser

1Browse 4.4BSD4.4BSD
1Browse Digital UNIXDigital UNIX 4.0e
1Browse FreeBSDFreeBSD 14.3
1Browse MINIXMINIX 3.4.0rc6-d5e4fc0
1Browse NetBSDNetBSD 10.1
1Browse OpenBSDOpenBSD 7.7
1Browse UNIX v7Version 7 UNIX
1Browse UNIX v10Version 10 UNIX

Manual Page Search

Manual Page Result

0 Command: ifq_enqueue | Section: 9 | Source: OpenBSD | File: ifq_enqueue.9
IFQ_ENQUEUE(9) FreeBSD Kernel Developer's Manual IFQ_ENQUEUE(9) NAME ifq_enqueue, ifq_dequeue, ifq_purge, ifq_len, ifq_empty, ifq_hdatalen, ifq_set_oactive, ifq_clr_oactive, ifq_is_oactive, ifq_restart, ifq_barrier - interface send queue API SYNOPSIS #include <net/if_var.h> int ifq_enqueue(struct ifqueue *ifq, struct mbuf *m); struct mbuf * ifq_dequeue(struct ifqueue *ifq); unsigned int ifq_purge(struct ifqueue *ifq); unsigned int ifq_len(struct ifqueue *ifq); unsigned int ifq_empty(struct ifqueue *ifq); int ifq_hdatalen(struct ifqueue *ifq); void ifq_set_oactive(struct ifqueue *ifq); void ifq_clr_oactive(struct ifqueue *ifq); unsigned int ifq_is_oactive(struct ifqueue *ifq); void ifq_restart(struct ifqueue *ifq); void ifq_barrier(struct ifqueue *ifq); DESCRIPTION The ifqueue API provides implementations of data structures and operations for the network stack to queue mbufs for a network driver to dequeue from its start routine for transmission. ifq_enqueue(struct ifqueue *ifq, struct mbuf *m) Enqueue mbuf m on the ifq interface send queue. If the queue rejects the packet, it will be freed with m_freem(9) and counted as a drop. ifq_dequeue(struct ifqueue *ifq) Dequeue the next mbuf to be transmitted from the ifq interface send queue. ifq_purge(struct ifqueue *ifq) Free all the mbufs on the interface send queue ifq. Freed mbufs will be accounted as drops. ifq_len(struct ifqueue *ifq) Return the number of mbufs on the interface send queue ifq. Note that while ifq_len() may report that mbufs are on the queue, the current queue discipline may not make them available for dequeueing with ifq_dequeue() or ifq_deq_begin(). ifq_empty(struct ifqueue *ifq) Return if the interface send queue ifq is empty. ifq_hdatalen(struct ifqueue *ifq) Return the number of bytes in the mbuf at the head of the interface send queue ifq. ifq_set_oactive(struct ifqueue *ifq) ifq_set_oactive() is called by the relevant driver to mark the hardware associated with the interface send queue ifq as unable to transmit more packets. ifq_clr_oactive(struct ifqueue *ifq) ifq_clr_oactive() is called by the relevant driver to clear the "active" mark on the hardware associated with the interface send queue ifq, meaning it is now able to transmit packets. ifq_is_oactive(struct ifqueue *ifq) Return if the hardware associated with the interface send queue ifq is unable to transmit more packets. ifq_restart(struct ifqueue *ifq) Dispatch a call to ifq_clr_oactive() and the interface's start routine. This call is serialised with other calls to the start routine via if_start() and therefore provides race free modification of the "active" mark. ifq_barrier(struct ifqueue *ifq) ifq_barrier() guarantees that any work currently running in the interface queue serialiser (e.g. work dispatched by ifq_restart() or the interface's start routine) has finished before ifq_barrier() returns. CONTEXT ifq_enqueue(), ifq_dequeue(), ifq_purge(), ifq_len(), ifq_empty(), ifq_hdatalen(), ifq_set_oactive(), ifq_clr_oactive(), ifq_is_oactive(), and ifq_restart() can be called during autoconf, from process context, or from interrupt context. ifq_barrier() can be called from process context. RETURN VALUES ifq_enqueue() returns 0 if the mbuf was successfully queued, or non-zero if mbuf was freed. ifq_dequeue() returns the next mbuf to be transmitted by the interface. If no packet is available for transmission, NULL is returned. ifq_purge() returns the number of mbufs that were removed from the queue and freed. ifq_len() returns the number of mbufs on the queue. ifq_empty() returns a non-zero value if the queue is empty, otherwise 0. ifq_hdatalen() returns the size of a packet on the queue, or 0 if the queue is empty; ifq_is_oactive() returns a non-zero value if the hardware associated with the interface send queue is unable to transmit more packets, otherwise 0. SEE ALSO ifq_deq_begin(9), m_freem(9) FreeBSD 14.1-RELEASE-p8 March 31, 2022 FreeBSD 14.1-RELEASE-p8

Navigation Options