]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
can: raw: reorder struct uniqframe's members to optimise packing
authorVincent Mailhol <mailhol@kernel.org>
Wed, 17 Sep 2025 04:48:24 +0000 (13:48 +0900)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Fri, 19 Sep 2025 18:56:34 +0000 (20:56 +0200)
struct uniqframe has one hole. Reorder the fields to save 8 bytes.

Statistics before:

  $ pahole --class_name=uniqframe net/can/raw.o
  struct uniqframe {
   int                        skbcnt;               /*     0     4 */

   /* XXX 4 bytes hole, try to pack */

   const struct sk_buff  *    skb;                  /*     8     8 */
   unsigned int               join_rx_count;        /*    16     4 */

   /* size: 24, cachelines: 1, members: 3 */
   /* sum members: 16, holes: 1, sum holes: 4 */
   /* padding: 4 */
   /* last cacheline: 24 bytes */
  };

...and after:

  $ pahole --class_name=uniqframe net/can/raw.o
  struct uniqframe {
   const struct sk_buff  *    skb;                  /*     0     8 */
   int                        skbcnt;               /*     8     4 */
   unsigned int               join_rx_count;        /*    12     4 */

   /* size: 16, cachelines: 1, members: 3 */
   /* last cacheline: 16 bytes */
  };

Acked-by: Oliver Hartkopp <socketcan@hartkopp.net>
Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
Link: https://patch.msgid.link/20250917-can-raw-repack-v2-1-395e8b3a4437@kernel.org
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
net/can/raw.c

index 76b867d21def209f5c6d236604c0e434a1c55a4d..db21d8a8c54d1b6a25a72c7a9d11d5c94f3187b5 100644 (file)
@@ -75,8 +75,8 @@ MODULE_ALIAS("can-proto-1");
  */
 
 struct uniqframe {
-       int skbcnt;
        const struct sk_buff *skb;
+       int skbcnt;
        unsigned int join_rx_count;
 };