git: d073473bc63c - stable/13 - pf: qid and pqid can be uint16_t

Kristof Provost kp at FreeBSD.org
Fri Sep 17 17:53:55 UTC 2021


The branch stable/13 has been updated by kp:

URL: https://cgit.FreeBSD.org/src/commit/?id=d073473bc63c4cd6c1aa17f1e6fc5069adb7dd07

commit d073473bc63c4cd6c1aa17f1e6fc5069adb7dd07
Author:     Kristof Provost <kp at FreeBSD.org>
AuthorDate: 2021-09-07 12:41:37 +0000
Commit:     Kristof Provost <kp at FreeBSD.org>
CommitDate: 2021-09-17 15:55:42 +0000

    pf: qid and pqid can be uint16_t
    
    tag2name() returns a uint16_t, so we don't need to use uint32_t for the
    qid (or pqid). This reduces the size of struct pf_kstate slightly. That
    in turn buys us space to add extra fields for dummynet later.
    
    Happily these fields are not exposed to user space (there are user space
    versions of them, but they can just stay uint32_t), so there's no ABI
    breakage in modifying this.
    
    MFC after:      1 week
    Sponsored by:   Rubicon Communications, LLC ("Netgate")
    Differential Revision:  https://reviews.freebsd.org/D31873
    
    (cherry picked from commit b64f7ce98f5286721a38b31fa2180313f800fb1d)
---
 sys/net/pfvar.h           | 12 ++++++------
 sys/netpfil/pf/pf_altq.h  |  2 +-
 sys/netpfil/pf/pf_ioctl.c | 14 +++++++-------
 sys/netpfil/pf/pf_mtag.h  |  2 +-
 4 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/sys/net/pfvar.h b/sys/net/pfvar.h
index 2bd8a613b510..1eee2ec36351 100644
--- a/sys/net/pfvar.h
+++ b/sys/net/pfvar.h
@@ -558,8 +558,8 @@ struct pf_kpool {
 };
 
 struct pf_rule_actions {
-	u_int32_t       qid;
-	u_int32_t       pqid;
+	uint16_t	 qid;
+	uint16_t	 pqid;
 };
 
 union pf_krule_ptr {
@@ -603,8 +603,8 @@ struct pf_krule {
 		u_int32_t		limit;
 		u_int32_t		seconds;
 	}			 max_src_conn_rate;
-	u_int32_t		 qid;
-	u_int32_t		 pqid;
+	u_int16_t		 qid;
+	u_int16_t		 pqid;
 	u_int32_t		 nr;
 	u_int32_t		 prob;
 	uid_t			 cuid;
@@ -853,8 +853,8 @@ struct pf_kstate {
 	u_int32_t		 creation;
 	u_int32_t	 	 expire;
 	u_int32_t		 pfsync_time;
-	u_int32_t                qid;
-	u_int32_t                pqid;
+	u_int16_t                qid;
+	u_int16_t                pqid;
 	u_int16_t		 tag;
 	u_int8_t		 log;
 };
diff --git a/sys/netpfil/pf/pf_altq.h b/sys/netpfil/pf/pf_altq.h
index 35d2d5cb8bbe..0b913a19c2ff 100644
--- a/sys/netpfil/pf/pf_altq.h
+++ b/sys/netpfil/pf/pf_altq.h
@@ -220,7 +220,7 @@ struct pf_kaltq {
 		struct fairq_opts        fairq_opts;
 	} pq_u;
 
-	uint32_t		 qid;		/* return value */
+	uint16_t		 qid;		/* return value */
 };
 #endif /* _KERNEL */
 
diff --git a/sys/netpfil/pf/pf_ioctl.c b/sys/netpfil/pf/pf_ioctl.c
index f367ad9a2800..aac47e5512cf 100644
--- a/sys/netpfil/pf/pf_ioctl.c
+++ b/sys/netpfil/pf/pf_ioctl.c
@@ -113,8 +113,8 @@ static int		 pf_rollback_altq(u_int32_t);
 static int		 pf_commit_altq(u_int32_t);
 static int		 pf_enable_altq(struct pf_altq *);
 static int		 pf_disable_altq(struct pf_altq *);
-static u_int32_t	 pf_qname2qid(const char *);
-static void		 pf_qid_unref(u_int32_t);
+static uint16_t		 pf_qname2qid(const char *);
+static void		 pf_qid_unref(uint16_t);
 #endif /* ALTQ */
 static int		 pf_begin_rules(u_int32_t *, int, const char *);
 static int		 pf_rollback_rules(u_int32_t, int, char *);
@@ -662,23 +662,23 @@ tag_unref(struct pf_tagset *ts, u_int16_t tag)
 		}
 }
 
-static u_int16_t
+static uint16_t
 pf_tagname2tag(const char *tagname)
 {
 	return (tagname2tag(&V_pf_tags, tagname));
 }
 
 #ifdef ALTQ
-static u_int32_t
+static uint16_t
 pf_qname2qid(const char *qname)
 {
-	return ((u_int32_t)tagname2tag(&V_pf_qids, qname));
+	return (tagname2tag(&V_pf_qids, qname));
 }
 
 static void
-pf_qid_unref(u_int32_t qid)
+pf_qid_unref(uint16_t qid)
 {
-	tag_unref(&V_pf_qids, (u_int16_t)qid);
+	tag_unref(&V_pf_qids, qid);
 }
 
 static int
diff --git a/sys/netpfil/pf/pf_mtag.h b/sys/netpfil/pf/pf_mtag.h
index 2135c9e69dbd..e3f6f85f21d0 100644
--- a/sys/netpfil/pf/pf_mtag.h
+++ b/sys/netpfil/pf/pf_mtag.h
@@ -47,7 +47,7 @@
 
 struct pf_mtag {
 	void		*hdr;		/* saved hdr pos in mbuf, for ECN */
-	u_int32_t	 qid;		/* queue id */
+	u_int16_t	 qid;		/* queue id */
 	u_int32_t	 qid_hash;	/* queue hashid used by WFQ like algos */
 	u_int16_t	 tag;		/* tag id */
 	u_int8_t	 flags;


More information about the dev-commits-src-all mailing list