Do not use the MSIZE for the legacy network stack. Instead use _SYS_MBUF_LEGACY_MSIZE.
Update #2833. --- cpukit/libnetworking/kern/uipc_socket2.c | 4 ++-- cpukit/libnetworking/rtems/rtems_glue.c | 10 +++++----- cpukit/libnetworking/sys/mbuf.h | 8 +++++--- cpukit/libnetworking/sys/socketvar.h | 4 ++-- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/cpukit/libnetworking/kern/uipc_socket2.c b/cpukit/libnetworking/kern/uipc_socket2.c index c2d18b1..e6ea672 100644 --- a/cpukit/libnetworking/kern/uipc_socket2.c +++ b/cpukit/libnetworking/kern/uipc_socket2.c @@ -343,7 +343,7 @@ int sbreserve(struct sockbuf *sb, u_long cc) { - if (cc > sb_max * MCLBYTES / (MSIZE + MCLBYTES)) + if (cc > sb_max * MCLBYTES / (_SYS_MBUF_LEGACY_MSIZE + MCLBYTES)) return (0); sb->sb_hiwat = cc; sb->sb_mbmax = min(cc * sb_efficiency, sb_max); @@ -424,7 +424,7 @@ sbcheck(struct sockbuf *sb) for (m = sb->sb_mb; m; m = m->m_next) { len += m->m_len; - mbcnt += MSIZE; + mbcnt += _SYS_MBUF_LEGACY_MSIZE; if (m->m_flags & M_EXT) /*XXX*/ /* pretty sure this is bogus */ mbcnt += m->m_ext.ext_size; if (m->m_nextpkt) diff --git a/cpukit/libnetworking/rtems/rtems_glue.c b/cpukit/libnetworking/rtems/rtems_glue.c index 46f8765..ac75fb0 100644 --- a/cpukit/libnetworking/rtems/rtems_glue.c +++ b/cpukit/libnetworking/rtems/rtems_glue.c @@ -39,7 +39,7 @@ /* * Memory allocation */ -static uint32_t nmbuf = (64L * 1024L) / MSIZE; +static uint32_t nmbuf = (64L * 1024L) / _SYS_MBUF_LEGACY_MSIZE; uint32_t nmbclusters = (128L * 1024L) / MCLBYTES; /* @@ -221,8 +221,8 @@ bsd_init (void) * Set up mbuf data structures */ - p = rtems_bsdnet_malloc_mbuf(nmbuf * MSIZE + MSIZE - 1,MBUF_MALLOC_MBUF); - p = (char *)(((uintptr_t)p + MSIZE - 1) & ~(MSIZE - 1)); + p = rtems_bsdnet_malloc_mbuf(nmbuf * _SYS_MBUF_LEGACY_MSIZE + _SYS_MBUF_LEGACY_MSIZE - 1,MBUF_MALLOC_MBUF); + p = (char *)(((uintptr_t)p + _SYS_MBUF_LEGACY_MSIZE - 1) & ~(_SYS_MBUF_LEGACY_MSIZE - 1)); if (p == NULL) { printf ("Can't get network memory.\n"); return -1; @@ -230,7 +230,7 @@ bsd_init (void) for (i = 0; i < nmbuf; i++) { ((struct mbuf *)p)->m_next = mmbfree; mmbfree = (struct mbuf *)p; - p += MSIZE; + p += _SYS_MBUF_LEGACY_MSIZE; } mbstat.m_mbufs = nmbuf; mbstat.m_mtypes[MT_FREE] = nmbuf; @@ -296,7 +296,7 @@ rtems_bsdnet_initialize (void) * Set the memory allocation limits */ if (rtems_bsdnet_config.mbuf_bytecount) - nmbuf = rtems_bsdnet_config.mbuf_bytecount / MSIZE; + nmbuf = rtems_bsdnet_config.mbuf_bytecount / _SYS_MBUF_LEGACY_MSIZE; if (rtems_bsdnet_config.mbuf_cluster_bytecount) nmbclusters = rtems_bsdnet_config.mbuf_cluster_bytecount / MCLBYTES; diff --git a/cpukit/libnetworking/sys/mbuf.h b/cpukit/libnetworking/sys/mbuf.h index 48e9e40..8d0c6c2 100644 --- a/cpukit/libnetworking/sys/mbuf.h +++ b/cpukit/libnetworking/sys/mbuf.h @@ -34,19 +34,21 @@ #ifndef _SYS_MBUF_H_ #define _SYS_MBUF_H_ +#include <sys/param.h> #ifndef M_WAITOK #include <sys/malloc.h> #endif /* - * Mbufs are of a single size, MSIZE (machine/machparam.h), which + * Mbufs are of a single size, _SYS_MBUF_LEGACY_MSIZE (machine/machparam.h), which * includes overhead. An mbuf may add a single "mbuf cluster" of size * MCLBYTES (also in machine/machparam.h), which has no additional overhead * and is used instead of the internal data area; this is done when * at least MINCLSIZE of data must be stored. */ -#define MLEN (MSIZE - sizeof(struct m_hdr)) /* normal data len */ +#define _SYS_MBUF_LEGACY_MSIZE 128 +#define MLEN (_SYS_MBUF_LEGACY_MSIZE - sizeof(struct m_hdr)) /* normal data len */ #define MHLEN (MLEN - sizeof(struct pkthdr)) /* data len w/pkthdr */ #define MINCLSIZE (MHLEN + MLEN) /* smallest amount to put in cluster */ #define M_MAXCOMPRESS (MHLEN / 2) /* max amount to copy for compression */ @@ -59,7 +61,7 @@ * cltom(x) -- Convert cluster # to ptr to beginning of cluster */ #define mtod(m, t) ((t)((m)->m_data)) -#define dtom(x) ((struct mbuf *)((intptr_t)(x) & ~(MSIZE-1))) +#define dtom(x) ((struct mbuf *)((intptr_t)(x) & ~(_SYS_MBUF_LEGACY_MSIZE-1))) #define mtocl(x) (((uintptr_t)(x) - (uintptr_t)mbutl) >> MCLSHIFT) #define cltom(x) ((caddr_t)((u_long)mbutl + ((u_long)(x) << MCLSHIFT))) diff --git a/cpukit/libnetworking/sys/socketvar.h b/cpukit/libnetworking/sys/socketvar.h index 13b3674..bc3709c 100644 --- a/cpukit/libnetworking/sys/socketvar.h +++ b/cpukit/libnetworking/sys/socketvar.h @@ -160,7 +160,7 @@ struct socket { /* adjust counters in sb reflecting allocation of m */ #define sballoc(sb, m) { \ (sb)->sb_cc += (m)->m_len; \ - (sb)->sb_mbcnt += MSIZE; \ + (sb)->sb_mbcnt += _SYS_MBUF_LEGACY_MSIZE; \ if ((m)->m_flags & M_EXT) \ (sb)->sb_mbcnt += (m)->m_ext.ext_size; \ } @@ -168,7 +168,7 @@ struct socket { /* adjust counters in sb reflecting freeing of m */ #define sbfree(sb, m) { \ (sb)->sb_cc -= (m)->m_len; \ - (sb)->sb_mbcnt -= MSIZE; \ + (sb)->sb_mbcnt -= _SYS_MBUF_LEGACY_MSIZE; \ if ((m)->m_flags & M_EXT) \ (sb)->sb_mbcnt -= (m)->m_ext.ext_size; \ } -- 1.8.4.5 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel