- Correct the IFQ_ENQUEUE macro.

- Fix some internal variable names for some macros.
- A few corrections from the OpenBSD manpage.
This commit is contained in:
peter 2005-06-17 14:10:50 +00:00
parent f1843b15c3
commit 63e19c89a6
1 changed files with 30 additions and 25 deletions

View File

@ -1,4 +1,4 @@
.\" $NetBSD: altq.9,v 1.9 2003/04/16 13:35:24 wiz Exp $
.\" $NetBSD: altq.9,v 1.10 2005/06/17 14:10:50 peter Exp $
.\" $OpenBSD: altq.9,v 1.4 2001/07/12 12:41:42 itojun Exp $
.\"
.\" Copyright (C) 2001
@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.Dd July 10, 2001
.Dd June 17, 2005
.Dt ALTQ 9
.Os
.\"
@ -37,7 +37,7 @@
.In sys/socket.h
.In net/if.h
.Ft void \"macro
.Fn IFQ_ENQUEUE "struct ifaltq *ifq" "struct mbuf *m" "int error"
.Fn IFQ_ENQUEUE "struct ifaltq *ifq" "struct mbuf *m" "struct altq_pktattr *pattr" "int err"
.Ft void \"macro
.Fn IFQ_DEQUEUE "struct ifaltq *ifq" "struct mbuf *m"
.Ft void \"macro
@ -45,7 +45,7 @@
.Ft void \"macro
.Fn IFQ_PURGE "struct ifaltq *ifq"
.Ft void \"macro
.Fn IFQ_CLASSIFY "struct ifaltq *ifq" "struct mbuf *m" "int af" "struct altq_pktattr *pktattr"
.Fn IFQ_CLASSIFY "struct ifaltq *ifq" "struct mbuf *m" "int af" "struct altq_pktattr *pa"
.Ft void \"macro
.Fn IFQ_IS_EMPTY "struct ifaltq *ifq"
.Ft void \"macro
@ -79,13 +79,13 @@ enqueues a packet
to the queue
.Fa ifq .
The underlying queueing discipline may discard the packet.
.Fa error
.Fa err
is set to 0 on success, or
.Dv ENOBUFS
if the packet is discarded.
.Fa m
will be freed by the device driver on success or by the queueing discipline on
failure so that the caller should not touch
failure, so that the caller should not touch
.Fa m
after calling
.Fn IFQ_ENQUEUE .
@ -120,7 +120,7 @@ emptied by a dequeue loop.
.Pp
.Fn IFQ_CLASSIFY
classifies a packet to a scheduling class, and returns the result in
.Fa pktattr .
.Fa pa .
.Pp
.Fn IFQ_IS_EMPTY
can be used to check if the queue is empty.
@ -206,28 +206,33 @@ macros looks like:
#endif
.Ed
.Ss Enqueue operation
The semantics of the enqueue operation is changed.
The semantics of the enqueue operation are changed.
In the new style,
enqueue and packet drop are combined since they cannot be easily
separated in many queueing disciplines.
The new enqueue operation corresponds to the following macro that is
written with the old macros.
.Bd -literal
#define IFQ_ENQUEUE(ifq, m, error) \e
do { \e
if (IF_QFULL((ifq))) { \e
m_freem((m)); \e
(error) = ENOBUFS; \e
IF_DROP(ifq); \e
} else { \e
IF_ENQUEUE((ifq), (m)); \e
(error) = 0; \e
} \e
} while (0)
#define IFQ_ENQUEUE(ifq, m, pattr, err) \e
do { \e
if (ALTQ_IS_ENABLED((ifq))) \e
ALTQ_ENQUEUE((ifq), (m), (pattr), (err)); \e
else { \e
if (IF_QFULL((ifq))) { \e
m_freem((m)); \e
(err) = ENOBUFS; \e
} else { \e
IF_ENQUEUE((ifq), (m)); \e
(err) = 0; \e
} \e
} \e
if ((err)) \e
(ifq)-\*[Gt]ifq_drops++; \e
} while (/*CONSTCOND*/ 0)
.Ed
.Pp
.Fn IFQ_ENQUEUE
does the followings:
does the following:
.Bl -hyphen -compact
.It
queue a packet
@ -235,10 +240,10 @@ queue a packet
drop (and free) a packet if the enqueue operation fails
.El
If the enqueue operation fails,
.Fa error
.Fa err
is set to
.Dv ENOBUFS .
.Fa mbuf
.Fa m
is freed by the queueing discipline.
The caller should not touch mbuf after calling
.Fn IFQ_ENQUEUE
@ -266,7 +271,7 @@ looks as follows:
| len = m-\*[Gt]m_pkthdr.len;
s = splimp(); | s = splimp();
if (IF_QFULL(\*[Am]ifp-\*[Gt]if_snd)) { | IFQ_ENQUEUE(\*[Am]ifp-\*[Gt]if_snd, m,
| error);
| NULL, error);
IF_DROP(\*[Am]ifp-\*[Gt]if_snd); | if (error != 0) {
splx(s); | splx(s);
senderr(ENOBUFS); | return (error);
@ -325,7 +330,7 @@ is already converted to the new style.
Look for
.Fa if_snd
in the driver.
Probably, you need to make changes to the lines that include
You will probably need to make changes to the lines that include
.Fa if_snd .
.Ss Empty check operation
If the code checks
@ -546,7 +551,7 @@ The enqueue operation looks like:
IF_ENQUEUE(ifq, m); | }
| } else
| IFQ_ENQUEUE(\*[Am]sc-\*[Gt]sc_if.if_snd,
| m, error);
| m, NULL, error);
|
| if (error) {
| splx(s);