network - Increase basic mbuf size from 256 to 384 bytes
authorMatthew Dillon <dillon@apollo.backplane.com>
Wed, 15 Sep 2010 03:19:17 +0000 (20:19 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Wed, 15 Sep 2010 03:19:17 +0000 (20:19 -0700)
* Due to the bloat in m_hdr and m_pkthdr the 256-byte mbuf structure
  is no longer large enough and there appears to be quite a bit of
  legacy code still using m_get() and making assumptions on the
  available space without checking actual space.

  We have assertions in place to catch these but stabilizing the
  system is more important right now.

* Increase the basic mbuf buffer size from 256 to 384 bytes.

sys/cpu/i386/include/param.h
sys/cpu/x86_64/include/param.h
sys/sys/param.h

index 4d454fb..5081138 100644 (file)
 #define VM_BCACHE_SIZE_MAX     (200 * 1024 * 1024)
 #endif
 
-
-/*
- * Constants related to network buffer management.
- * MCLBYTES must be no larger than CLBYTES (the software page size), and,
- * on machines that exchange pages of input or output buffers with mbuf
- * clusters (MAPPED_MBUFS), MCLBYTES must also be an integral multiple
- * of the hardware page size.
- */
-#ifndef        MSIZE
-#define MSIZE          256             /* size of an mbuf */
-#endif /* MSIZE */
-
-#ifndef        MCLSHIFT
-#define MCLSHIFT       11              /* convert bytes to m_buf clusters */
-#endif /* MCLSHIFT */
-#define MCLBYTES       (1 << MCLSHIFT) /* size of an m_buf cluster */
-#define MCLOFSET       (MCLBYTES - 1)  /* offset within an m_buf cluster */
-
 /*
  * Some macros for units conversion
  */
index 7fe73c7..593009e 100644 (file)
 #define VM_BCACHE_SIZE_MAX     (400L * 1024 * 1024)
 #endif
 
-
-/*
- * Constants related to network buffer management.
- * MCLBYTES must be no larger than CLBYTES (the software page size), and,
- * on machines that exchange pages of input or output buffers with mbuf
- * clusters (MAPPED_MBUFS), MCLBYTES must also be an integral multiple
- * of the hardware page size.
- */
-#ifndef        MSIZE
-#define MSIZE          512             /* size of an mbuf */
-#endif /* MSIZE */
-
-#ifndef        MCLSHIFT
-#define MCLSHIFT       11              /* convert bytes to m_buf clusters */
-#endif /* MCLSHIFT */
-#define MCLBYTES       (1 << MCLSHIFT) /* size of an m_buf cluster */
-#define MCLOFSET       (MCLBYTES - 1)  /* offset within an m_buf cluster */
-
 /*
  * Some macros for units conversion
  */
index d9b122d..acada70 100644 (file)
 #define MJUMPAGESIZE   PAGE_SIZE       /* jumbo cluster 4k */
 #define MJUM9BYTES     (9 * 1024)      /* jumbo cluster 9k */
 #define MJUM16BYTES    (16 * 1024)     /* jumbo cluster 16k */
+
+/*
+ * MBUF Management.
+ *
+ * MSIZE does not need to be a power of two but must be large enough
+ * to accomodate a reasonable small packet.  Due to m_hdr and m_pkthdr
+ * bloat 256 is not big enough any more.
+ *
+ * MCLBYTES must be a power of 2 and is typically significantly larger
+ * than MSIZE, sufficient to hold a standard-mtu packet.  2K is considered
+ * reasonable.
+ */
+#ifndef MSIZE
+#define MSIZE          384             /* size of an mbuf */
+#endif
+
+#ifndef MCLSHIFT
+#define MCLSHIFT        11              /* convert bytes to m_buf clusters */
+#endif
+#define MCLBYTES        (1 << MCLSHIFT) /* size of an m_buf cluster */
+#define MCLOFSET        (MCLBYTES - 1)  /* offset within an m_buf cluster */
+
 /*
  * Make this available for most of the kernel.  There were too many
  * things that included sys/systm.h just for panic().