Page MenuHomeFreeBSD

D1436.id2999.diff
No OneTemporary

D1436.id2999.diff

Index: head/sys/dev/en/midway.c
===================================================================
--- head/sys/dev/en/midway.c
+++ head/sys/dev/en/midway.c
@@ -1935,7 +1935,7 @@
m->m_pkthdr.rcvif = NULL;
m->m_pkthdr.len = pktlen;
m->m_len = EN_RX1BUF;
- MH_ALIGN(m, EN_RX1BUF);
+ M_ALIGN(m, EN_RX1BUF);
if (m->m_len >= totlen) {
m->m_len = totlen;
Index: head/sys/dev/fatm/if_fatm.c
===================================================================
--- head/sys/dev/fatm/if_fatm.c
+++ head/sys/dev/fatm/if_fatm.c
@@ -1105,7 +1105,7 @@
LIST_INSERT_HEAD(&sc->rbuf_free, rb, link);
break;
}
- MH_ALIGN(m, SMALL_BUFFER_LEN);
+ M_ALIGN(m, SMALL_BUFFER_LEN);
error = bus_dmamap_load(sc->rbuf_tag, rb->map,
m->m_data, SMALL_BUFFER_LEN, dmaload_helper,
&phys, BUS_DMA_NOWAIT);
Index: head/sys/dev/iscsi_initiator/isc_soc.c
===================================================================
--- head/sys/dev/iscsi_initiator/isc_soc.c
+++ head/sys/dev/iscsi_initiator/isc_soc.c
@@ -110,7 +110,7 @@
| Add any AHS to the iSCSI hdr mbuf
*/
if((mh->m_len + pp->ahs_len) < MHLEN) {
- MH_ALIGN(mh, mh->m_len + pp->ahs_len);
+ M_ALIGN(mh, mh->m_len + pp->ahs_len);
bcopy(&pp->ipdu, mh->m_data, mh->m_len);
bcopy(pp->ahs_addr, mh->m_data + mh->m_len, pp->ahs_len);
mh->m_len += pp->ahs_len;
@@ -119,7 +119,7 @@
panic("len AHS=%d too big, not impleneted yet", pp->ahs_len);
}
else {
- MH_ALIGN(mh, mh->m_len);
+ M_ALIGN(mh, mh->m_len);
bcopy(&pp->ipdu, mh->m_data, mh->m_len);
}
mh->m_pkthdr.len = mh->m_len;
Index: head/sys/dev/patm/if_patm_rx.c
===================================================================
--- head/sys/dev/patm/if_patm_rx.c
+++ head/sys/dev/patm/if_patm_rx.c
@@ -471,7 +471,7 @@
default:
case PATM_RAW_CELL:
m->m_len = m->m_pkthdr.len = 53;
- MH_ALIGN(m, 53);
+ M_ALIGN(m, 53);
dst = mtod(m, u_char *);
*dst++ = *cell++;
*dst++ = *cell++;
@@ -483,7 +483,7 @@
case PATM_RAW_NOHEC:
m->m_len = m->m_pkthdr.len = 52;
- MH_ALIGN(m, 52);
+ M_ALIGN(m, 52);
dst = mtod(m, u_char *);
*dst++ = *cell++;
*dst++ = *cell++;
@@ -494,7 +494,7 @@
case PATM_RAW_CS:
m->m_len = m->m_pkthdr.len = 64;
- MH_ALIGN(m, 64);
+ M_ALIGN(m, 64);
dst = mtod(m, u_char *);
*dst++ = *cell++;
*dst++ = *cell++;
Index: head/sys/kern/uipc_mbuf.c
===================================================================
--- head/sys/kern/uipc_mbuf.c
+++ head/sys/kern/uipc_mbuf.c
@@ -574,13 +574,8 @@
m_move_pkthdr(mn, m);
mn->m_next = m;
m = mn;
- if(m->m_flags & M_PKTHDR) {
- if (len < MHLEN)
- MH_ALIGN(m, len);
- } else {
- if (len < MLEN)
- M_ALIGN(m, len);
- }
+ if (len < M_SIZE(m))
+ M_ALIGN(m, len);
m->m_len = len;
return (m);
}
@@ -1226,7 +1221,7 @@
goto extpacket;
if (remain > MHLEN) {
/* m can't be the lead packet */
- MH_ALIGN(n, 0);
+ M_ALIGN(n, 0);
n->m_next = m_split(m, len, wait);
if (n->m_next == NULL) {
(void) m_free(n);
@@ -1236,7 +1231,7 @@
return (n);
}
} else
- MH_ALIGN(n, remain);
+ M_ALIGN(n, remain);
} else if (remain == 0) {
n = m->m_next;
m->m_next = NULL;
@@ -1888,33 +1883,6 @@
}
/*
- * Set the m_data pointer of a newly-allocated mbuf
- * to place an object of the specified size at the
- * end of the mbuf, longword aligned.
- */
-void
-m_align(struct mbuf *m, int len)
-{
-#ifdef INVARIANTS
- const char *msg = "%s: not a virgin mbuf";
-#endif
- int adjust;
-
- if (m->m_flags & M_EXT) {
- KASSERT(m->m_data == m->m_ext.ext_buf, (msg, __func__));
- adjust = m->m_ext.ext_size - len;
- } else if (m->m_flags & M_PKTHDR) {
- KASSERT(m->m_data == m->m_pktdat, (msg, __func__));
- adjust = MHLEN - len;
- } else {
- KASSERT(m->m_data == m->m_dat, (msg, __func__));
- adjust = MLEN - len;
- }
-
- m->m_data += adjust &~ (sizeof(long)-1);
-}
-
-/*
* Create a writable copy of the mbuf chain. While doing this
* we compact the chain with a goal of producing a chain with
* at most two mbufs. The second mbuf in this chain is likely
Index: head/sys/net80211/ieee80211_freebsd.c
===================================================================
--- head/sys/net80211/ieee80211_freebsd.c
+++ head/sys/net80211/ieee80211_freebsd.c
@@ -420,7 +420,7 @@
* frames which all fit in MHLEN.
*/
if (m != NULL)
- MH_ALIGN(m, len);
+ M_ALIGN(m, len);
} else {
m = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR);
if (m != NULL)
Index: head/sys/netinet/if_ether.c
===================================================================
--- head/sys/netinet/if_ether.c
+++ head/sys/netinet/if_ether.c
@@ -261,7 +261,7 @@
m->m_len = sizeof(*ah) + 2 * sizeof(struct in_addr) +
2 * ifp->if_addrlen;
m->m_pkthdr.len = m->m_len;
- MH_ALIGN(m, m->m_len);
+ M_ALIGN(m, m->m_len);
ah = mtod(m, struct arphdr *);
bzero((caddr_t)ah, m->m_len);
#ifdef MAC
Index: head/sys/netinet/igmp.c
===================================================================
--- head/sys/netinet/igmp.c
+++ head/sys/netinet/igmp.c
@@ -2212,7 +2212,7 @@
m = m_gethdr(M_NOWAIT, MT_DATA);
if (m == NULL)
return (ENOMEM);
- MH_ALIGN(m, sizeof(struct ip) + sizeof(struct igmp));
+ M_ALIGN(m, sizeof(struct ip) + sizeof(struct igmp));
m->m_pkthdr.len = sizeof(struct ip) + sizeof(struct igmp);
@@ -2793,7 +2793,7 @@
if (m == NULL) {
m = m_gethdr(M_NOWAIT, MT_DATA);
if (m)
- MH_ALIGN(m, IGMP_LEADINGSPACE);
+ M_ALIGN(m, IGMP_LEADINGSPACE);
}
if (m == NULL)
return (-ENOMEM);
@@ -2917,7 +2917,7 @@
if (m == NULL) {
m = m_gethdr(M_NOWAIT, MT_DATA);
if (m)
- MH_ALIGN(m, IGMP_LEADINGSPACE);
+ M_ALIGN(m, IGMP_LEADINGSPACE);
}
if (m == NULL)
return (-ENOMEM);
@@ -3073,7 +3073,7 @@
if (m == NULL) {
m = m_gethdr(M_NOWAIT, MT_DATA);
if (m)
- MH_ALIGN(m, IGMP_LEADINGSPACE);
+ M_ALIGN(m, IGMP_LEADINGSPACE);
}
if (m == NULL) {
CTR1(KTR_IGMPV3,
Index: head/sys/netinet/ip_carp.c
===================================================================
--- head/sys/netinet/ip_carp.c
+++ head/sys/netinet/ip_carp.c
@@ -840,7 +840,7 @@
m->m_pkthdr.len = len;
m->m_pkthdr.rcvif = NULL;
m->m_len = len;
- MH_ALIGN(m, m->m_len);
+ M_ALIGN(m, m->m_len);
m->m_flags |= M_MCAST;
ip = mtod(m, struct ip *);
ip->ip_v = IPVERSION;
@@ -892,7 +892,7 @@
m->m_pkthdr.len = len;
m->m_pkthdr.rcvif = NULL;
m->m_len = len;
- MH_ALIGN(m, m->m_len);
+ M_ALIGN(m, m->m_len);
m->m_flags |= M_MCAST;
ip6 = mtod(m, struct ip6_hdr *);
bzero(ip6, sizeof(*ip6));
Index: head/sys/netinet/sctp_os_bsd.h
===================================================================
--- head/sys/netinet/sctp_os_bsd.h
+++ head/sys/netinet/sctp_os_bsd.h
@@ -304,11 +304,7 @@
#define SCTP_BUF_RECVIF(m) (m->m_pkthdr.rcvif)
#define SCTP_BUF_PREPEND M_PREPEND
-#define SCTP_ALIGN_TO_END(m, len) if(m->m_flags & M_PKTHDR) { \
- MH_ALIGN(m, len); \
- } else if ((m->m_flags & M_EXT) == 0) { \
- M_ALIGN(m, len); \
- }
+#define SCTP_ALIGN_TO_END(m, len) M_ALIGN(m, len)
/* We make it so if you have up to 4 threads
* writing based on the default size of
Index: head/sys/netinet/tcp_output.c
===================================================================
--- head/sys/netinet/tcp_output.c
+++ head/sys/netinet/tcp_output.c
@@ -1007,7 +1007,7 @@
#ifdef INET6
if (isipv6 && (MHLEN < hdrlen + max_linkhdr) &&
MHLEN >= hdrlen) {
- MH_ALIGN(m, hdrlen);
+ M_ALIGN(m, hdrlen);
} else
#endif
m->m_data += max_linkhdr;
Index: head/sys/netinet6/ip6_output.c
===================================================================
--- head/sys/netinet6/ip6_output.c
+++ head/sys/netinet6/ip6_output.c
@@ -2940,7 +2940,7 @@
return ENOBUFS;
}
m_move_pkthdr(mh, m);
- MH_ALIGN(mh, sizeof(*ip6));
+ M_ALIGN(mh, sizeof(*ip6));
m->m_len -= sizeof(*ip6);
m->m_data += sizeof(*ip6);
mh->m_next = m;
Index: head/sys/netinet6/mld6.c
===================================================================
--- head/sys/netinet6/mld6.c
+++ head/sys/netinet6/mld6.c
@@ -1818,7 +1818,7 @@
* that ether_output() does not need to allocate another mbuf
* for the header in the most common case.
*/
- MH_ALIGN(mh, sizeof(struct ip6_hdr));
+ M_ALIGN(mh, sizeof(struct ip6_hdr));
mh->m_pkthdr.len = sizeof(struct ip6_hdr) + sizeof(struct mld_hdr);
mh->m_len = sizeof(struct ip6_hdr);
@@ -3179,7 +3179,7 @@
m_freem(m);
return (NULL);
}
- MH_ALIGN(mh, sizeof(struct ip6_hdr) + sizeof(struct mldv2_report));
+ M_ALIGN(mh, sizeof(struct ip6_hdr) + sizeof(struct mldv2_report));
mldreclen = m_length(m, NULL);
CTR2(KTR_MLD, "%s: mldreclen is %d", __func__, mldreclen);
Index: head/sys/netinet6/nd6_nbr.c
===================================================================
--- head/sys/netinet6/nd6_nbr.c
+++ head/sys/netinet6/nd6_nbr.c
@@ -431,7 +431,7 @@
icmp6len = sizeof(*nd_ns);
m->m_pkthdr.len = m->m_len = sizeof(*ip6) + icmp6len;
- m->m_data += max_linkhdr; /* or MH_ALIGN() equivalent? */
+ m->m_data += max_linkhdr; /* or M_ALIGN() equivalent? */
/* fill neighbor solicitation packet */
ip6 = mtod(m, struct ip6_hdr *);
@@ -1003,7 +1003,7 @@
icmp6len = sizeof(*nd_na);
m->m_pkthdr.len = m->m_len = sizeof(struct ip6_hdr) + icmp6len;
- m->m_data += max_linkhdr; /* or MH_ALIGN() equivalent? */
+ m->m_data += max_linkhdr; /* or M_ALIGN() equivalent? */
/* fill neighbor advertisement packet */
ip6 = mtod(m, struct ip6_hdr *);
Index: head/sys/sys/mbuf.h
===================================================================
--- head/sys/sys/mbuf.h
+++ head/sys/sys/mbuf.h
@@ -810,42 +810,6 @@
("%s: attempted use of a free mbuf!", __func__))
/*
- * Set the m_data pointer of a newly-allocated mbuf (m_get/MGET) to place an
- * object of the specified size at the end of the mbuf, longword aligned.
- */
-#define M_ALIGN(m, len) do { \
- KASSERT(!((m)->m_flags & (M_PKTHDR|M_EXT)), \
- ("%s: M_ALIGN not normal mbuf", __func__)); \
- KASSERT((m)->m_data == (m)->m_dat, \
- ("%s: M_ALIGN not a virgin mbuf", __func__)); \
- (m)->m_data += (MLEN - (len)) & ~(sizeof(long) - 1); \
-} while (0)
-
-/*
- * As above, for mbufs allocated with m_gethdr/MGETHDR or initialized by
- * M_DUP/MOVE_PKTHDR.
- */
-#define MH_ALIGN(m, len) do { \
- KASSERT((m)->m_flags & M_PKTHDR && !((m)->m_flags & M_EXT), \
- ("%s: MH_ALIGN not PKTHDR mbuf", __func__)); \
- KASSERT((m)->m_data == (m)->m_pktdat, \
- ("%s: MH_ALIGN not a virgin mbuf", __func__)); \
- (m)->m_data += (MHLEN - (len)) & ~(sizeof(long) - 1); \
-} while (0)
-
-/*
- * As above, for mbuf with external storage.
- */
-#define MEXT_ALIGN(m, len) do { \
- KASSERT((m)->m_flags & M_EXT, \
- ("%s: MEXT_ALIGN not an M_EXT mbuf", __func__)); \
- KASSERT((m)->m_data == (m)->m_ext.ext_buf, \
- ("%s: MEXT_ALIGN not a virgin mbuf", __func__)); \
- (m)->m_data += ((m)->m_ext.ext_size - (len)) & \
- ~(sizeof(long) - 1); \
-} while (0)
-
-/*
* Return the address of the start of the buffer associated with an mbuf,
* handling external storage, packet-header mbufs, and regular data mbufs.
*/
@@ -864,6 +828,41 @@
MLEN)
/*
+ * Set the m_data pointer of a newly allocated mbuf to place an object of the
+ * specified size at the end of the mbuf, longword aligned.
+ *
+ * NB: Historically, we had M_ALIGN(), MH_ALIGN(), and MEXT_ALIGN() as
+ * separate macros, each asserting that it was called at the proper moment.
+ * This required callers to themselves test the storage type and call the
+ * right one. Rather than require callers to be aware of those layout
+ * decisions, we centralize here.
+ */
+static __inline void
+m_align(struct mbuf *m, int len)
+{
+#ifdef INVARIANTS
+ const char *msg = "%s: not a virgin mbuf";
+#endif
+ int adjust;
+
+ KASSERT(m->m_data == M_START(m), (msg, __func__));
+
+ if (m->m_flags & M_EXT) {
+ adjust = m->m_ext.ext_size - len;
+ } else if (m->m_flags & M_PKTHDR) {
+ adjust = MHLEN - len;
+ } else {
+ adjust = MLEN - len;
+ }
+
+ m->m_data += adjust &~ (sizeof(long)-1);
+}
+
+#define M_ALIGN(m, len) m_align(m, len)
+#define MH_ALIGN(m, len) m_align(m, len)
+#define MEXT_ALIGN(m, len) m_align(m, len)
+
+/*
* Compute the amount of space available before the current start of data in
* an mbuf.
*

File Metadata

Mime Type
text/plain
Expires
Tue, Apr 21, 10:48 AM (17 h, 48 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31905555
Default Alt Text
D1436.id2999.diff (12 KB)

Event Timeline