summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorandre <andre@FreeBSD.org>2013-08-19 14:25:11 +0000
committerandre <andre@FreeBSD.org>2013-08-19 14:25:11 +0000
commit328ae66ebfc331ce34429ea65a10029ed63ad4f2 (patch)
treeb468452a9bccf50edddefaf211e83a5e76a106c7
parent653dac5a00be3e8361b31b7788da6fd981bf10a8 (diff)
downloadFreeBSD-src-328ae66ebfc331ce34429ea65a10029ed63ad4f2.zip
FreeBSD-src-328ae66ebfc331ce34429ea65a10029ed63ad4f2.tar.gz
Reorder the mbuf defines to make more sense and group related flags
together. Add M_FLAG_PRINTF for use with printf(9) %b indentifier. Use the generic mbuf flags print names in the net80211 code and adjust the protocol specific bits for their new positions. Change SCTP M_PROTO mapping from 5 to 1 to fit within the 16bit field they use internally to store some additional information. Discussed with: trociny, glebius
-rw-r--r--sys/net80211/ieee80211_freebsd.h13
-rw-r--r--sys/netinet/sctp_os_bsd.h2
-rw-r--r--sys/sys/mbuf.h53
3 files changed, 38 insertions, 30 deletions
diff --git a/sys/net80211/ieee80211_freebsd.h b/sys/net80211/ieee80211_freebsd.h
index 0fb4dd0..34e66d0 100644
--- a/sys/net80211/ieee80211_freebsd.h
+++ b/sys/net80211/ieee80211_freebsd.h
@@ -250,16 +250,13 @@ struct mbuf *ieee80211_getmgtframe(uint8_t **frm, int headroom, int pktlen);
#define M_80211_RX (M_AMPDU|M_WEP|M_AMPDU_MPDU)
#define IEEE80211_MBUF_TX_FLAG_BITS \
- "\20\1M_EXT\2M_PKTHDR\3M_EOR\4M_RDONLY\5M_ENCAP\6M_WEP\7M_EAPOL" \
- "\10M_PWR_SAV\11M_MORE_DATA\12M_BCAST\13M_MCAST\14M_FRAG\15M_FIRSTFRAG" \
- "\16M_LASTFRAG\17M_SKIP_FIREWALL\20M_FREELIST\21M_VLANTAG\22M_PROMISC" \
- "\23M_NOFREE\24M_FF\25M_TXCB\26M_AMPDU_MPDU\27M_FLOWID"
+ M_FLAG_BITS \
+ "\15M_ENCAP\17M_EAPOL\20M_PWR_SAV\21M_MORE_DATA\22M_FF\23M_TXCB" \
+ "\24M_AMPDU_MPDU\25M_FRAG\26M_FIRSTFRAG\27M_LASTFRAG"
#define IEEE80211_MBUF_RX_FLAG_BITS \
- "\20\1M_EXT\2M_PKTHDR\3M_EOR\4M_RDONLY\5M_AMPDU\6M_WEP\7M_PROTO3" \
- "\10M_PROTO4\11M_PROTO5\12M_BCAST\13M_MCAST\14M_FRAG\15M_FIRSTFRAG" \
- "\16M_LASTFRAG\17M_SKIP_FIREWALL\20M_FREELIST\21M_VLANTAG\22M_PROMISC" \
- "\23M_NOFREE\24M_PROTO6\25M_PROTO7\26M_AMPDU_MPDU\27M_FLOWID"
+ M_FLAG_BITS \
+ "\15M_AMPDU\16M_WEP\24M_AMPDU_MPDU"
/*
* Store WME access control bits in the vlan tag.
diff --git a/sys/netinet/sctp_os_bsd.h b/sys/netinet/sctp_os_bsd.h
index ff32748..252ea93 100644
--- a/sys/netinet/sctp_os_bsd.h
+++ b/sys/netinet/sctp_os_bsd.h
@@ -431,7 +431,7 @@ typedef struct rtentry sctp_rtentry_t;
/*
* SCTP protocol specific mbuf flags.
*/
-#define M_NOTIFICATION M_PROTO5 /* SCTP notification */
+#define M_NOTIFICATION M_PROTO1 /* SCTP notification */
/*
* IP output routines
diff --git a/sys/sys/mbuf.h b/sys/sys/mbuf.h
index 44feb99..aff2cf9 100644
--- a/sys/sys/mbuf.h
+++ b/sys/sys/mbuf.h
@@ -186,26 +186,25 @@ struct mbuf {
#define M_PKTHDR 0x00000002 /* start of record */
#define M_EOR 0x00000004 /* end of record */
#define M_RDONLY 0x00000008 /* associated data is marked read-only */
-#define M_PROTO1 0x00000010 /* protocol-specific */
-#define M_PROTO2 0x00000020 /* protocol-specific */
-#define M_PROTO3 0x00000040 /* protocol-specific */
-#define M_PROTO4 0x00000080 /* protocol-specific */
-#define M_PROTO5 0x00000100 /* protocol-specific */
-#define M_BCAST 0x00000200 /* send/received as link-level broadcast */
-#define M_MCAST 0x00000400 /* send/received as link-level multicast */
- /* 0x00000800 free */
- /* 0x00001000 free */
- /* 0x00002000 free */
-#define M_PROTO9 0x00004000 /* protocol-specific */
-#define M_PROTO10 0x00008000 /* protocol-specific */
-#define M_VLANTAG 0x00010000 /* ether_vtag is valid */
-#define M_PROMISC 0x00020000 /* packet was not for us */
-#define M_PROTO11 0x00040000 /* protocol-specific */
-#define M_PROTO6 0x00080000 /* protocol-specific */
-#define M_PROTO7 0x00100000 /* protocol-specific */
-#define M_PROTO8 0x00200000 /* protocol-specific */
-#define M_FLOWID 0x00400000 /* deprecated: flowid is valid */
+#define M_BCAST 0x00000010 /* send/received as link-level broadcast */
+#define M_MCAST 0x00000020 /* send/received as link-level multicast */
+#define M_PROMISC 0x00000040 /* packet was not for us */
+#define M_VLANTAG 0x00000080 /* ether_vtag is valid */
+#define M_FLOWID 0x00000100 /* deprecated: flowid is valid */
+
+#define M_PROTO1 0x00001000 /* protocol-specific */
+#define M_PROTO2 0x00002000 /* protocol-specific */
+#define M_PROTO3 0x00004000 /* protocol-specific */
+#define M_PROTO4 0x00008000 /* protocol-specific */
+#define M_PROTO5 0x00010000 /* protocol-specific */
+#define M_PROTO6 0x00020000 /* protocol-specific */
+#define M_PROTO7 0x00040000 /* protocol-specific */
+#define M_PROTO8 0x00080000 /* protocol-specific */
+#define M_PROTO9 0x00100000 /* protocol-specific */
+#define M_PROTO10 0x00200000 /* protocol-specific */
+#define M_PROTO11 0x00400000 /* protocol-specific */
#define M_PROTO12 0x00800000 /* protocol-specific */
+
#define M_HASHTYPEBITS 0x0F000000 /* mask of bits holding flowid hash type */
/*
@@ -216,6 +215,18 @@ struct mbuf {
M_PROTO9|M_PROTO10|M_PROTO11|M_PROTO12)
/*
+ * Mbuf flag description for use with printf(9) %b identifier.
+ */
+#define M_FLAG_BITS \
+ "\20\1M_EXT\2M_PKTHDR\3M_EOR\4M_RDONLY\5M_BCAST\6M_MCAST" \
+ "\7M_PROMISC\10M_VLANTAG\11M_FLOWID"
+#define M_FLAG_PROTOBITS \
+ "\15M_PROTO1\16M_PROTO2\17M_PROTO3\20M_PROTO4\21M_PROTO5" \
+ "\22M_PROTO6\23M_PROTO7\24M_PROTO8\25M_PROTO9\26M_PROTO10" \
+ "\27M_PROTO11\30M_PROTO12"
+#define M_FLAG_PRINTF (M_FLAG_BITS M_FLAG_PROTOBITS)
+
+/*
* Network interface cards are able to hash protocol fields (such as IPv4
* addresses and TCP port numbers) classify packets into flows. These flows
* can then be used to maintain ordering while delivering packets to the OS
@@ -253,8 +264,8 @@ struct mbuf {
* Flags preserved when copying m_pkthdr.
*/
#define M_COPYFLAGS \
- (M_PKTHDR|M_EOR|M_RDONLY|M_PROTOFLAGS|M_BCAST|M_MCAST|\
- M_VLANTAG|M_PROMISC|M_HASHTYPEBITS)
+ (M_PKTHDR|M_EOR|M_RDONLY|M_BCAST|M_MCAST|M_VLANTAG|M_PROMISC| \
+ M_PROTOFLAGS|M_HASHTYPEBITS)
/*
* External buffer types: identify ext_buf type.
OpenPOWER on IntegriCloud