netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Lorenzo Bianconi <lorenzo@kernel.org>
To: Jakub Kicinski <kuba@kernel.org>
Cc: Andrew Lunn <andrew+netdev@lunn.ch>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Paolo Abeni <pabeni@redhat.com>,
	linux-arm-kernel@lists.infradead.org,
	linux-mediatek@lists.infradead.org, netdev@vger.kernel.org
Subject: Re: [PATCH net-next 2/2] net: airoha: Reorganize airoha_queue struct
Date: Wed, 5 Nov 2025 08:53:06 +0100	[thread overview]
Message-ID: <aQsCYoS-cvkUjrMv@lore-desk> (raw)
In-Reply-To: <20251104183200.41b4b853@kernel.org>

[-- Attachment #1: Type: text/plain, Size: 3500 bytes --]

> On Mon, 03 Nov 2025 11:27:56 +0100 Lorenzo Bianconi wrote:
> > Do not allocate memory for rx-only fields for hw tx queues and for tx-only
> > fields for hw rx queues.
> 
> Could you share more details (pahole)
> Given that napi_struct is in the same struct, 20B is probably not going
> to make much difference?

I agree the difference is not huge, I added this patch mainly for code
readability. If you prefer I can drop the patch, I do not have a strong
opinion about it. What do you think?

net-next:

struct airoha_queue {
	struct airoha_qdma *       qdma;                 /*     0     8 */
	spinlock_t                 lock;                 /*     8     4 */

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

	struct airoha_queue_entry * entry;               /*    16     8 */
	struct airoha_qdma_desc *  desc;                 /*    24     8 */
	u16                        head;                 /*    32     2 */
	u16                        tail;                 /*    34     2 */
	int                        queued;               /*    36     4 */
	int                        ndesc;                /*    40     4 */
	int                        free_thr;             /*    44     4 */
	int                        buf_size;             /*    48     4 */

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

	struct napi_struct         napi __attribute__((__aligned__(8))); /*    56   496 */

	/* XXX last struct has 1 hole */

	/* --- cacheline 8 boundary (512 bytes) was 40 bytes ago --- */
	struct page_pool *         page_pool;            /*   552     8 */
	struct sk_buff *           skb;                  /*   560     8 */

	/* size: 568, cachelines: 9, members: 13 */
	/* sum members: 560, holes: 2, sum holes: 8 */
	/* member types with holes: 1, total: 1 */
	/* forced alignments: 1, forced holes: 1, sum forced holes: 4 */
	/* last cacheline: 56 bytes */
} __attribute__((__aligned__(8)));

net-next + airoha_queue reorg:

struct airoha_queue {
	struct airoha_qdma *       qdma;                 /*     0     8 */
	spinlock_t                 lock;                 /*     8     4 */

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

	struct airoha_queue_entry * entry;               /*    16     8 */
	struct airoha_qdma_desc *  desc;                 /*    24     8 */
	int                        queued;               /*    32     4 */
	int                        ndesc;                /*    36     4 */
	struct napi_struct         napi __attribute__((__aligned__(8))); /*    40   496 */

	/* XXX last struct has 1 hole */

	/* --- cacheline 8 boundary (512 bytes) was 24 bytes ago --- */
	union {
		struct {
			u16        head;                 /*   536     2 */
			u16        tail;                 /*   538     2 */
			int        buf_size;             /*   540     4 */
			struct page_pool * page_pool;    /*   544     8 */
			struct sk_buff * skb;            /*   552     8 */
		};                                       /*   536    24 */
		struct {
			struct list_head tx_list;        /*   536    16 */
			int        free_thr;             /*   552     4 */
		};                                       /*   536    24 */
	};                                               /*   536    24 */

	/* size: 560, cachelines: 9, members: 8 */
	/* sum members: 556, holes: 1, sum holes: 4 */
	/* member types with holes: 1, total: 1 */
	/* forced alignments: 1 */
	/* last cacheline: 48 bytes */
} __attribute__((__aligned__(8)));

Regards,
Lorenzo

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

  reply	other threads:[~2025-11-05  7:53 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-03 10:27 [PATCH net-next 0/2] net: airoha: Allow mapping out-of-order DMA tx descriptors Lorenzo Bianconi
2025-11-03 10:27 ` [PATCH net-next 1/2] net: airoha: Add the capability to consume " Lorenzo Bianconi
2025-11-03 23:32   ` Jacob Keller
2025-11-05  2:30   ` Jakub Kicinski
2025-11-05  8:18     ` Lorenzo Bianconi
2025-11-03 10:27 ` [PATCH net-next 2/2] net: airoha: Reorganize airoha_queue struct Lorenzo Bianconi
2025-11-03 23:36   ` Jacob Keller
2025-11-05  2:32   ` Jakub Kicinski
2025-11-05  7:53     ` Lorenzo Bianconi [this message]
2025-11-06  0:28       ` Jakub Kicinski
2025-11-06  8:27         ` Lorenzo Bianconi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aQsCYoS-cvkUjrMv@lore-desk \
    --to=lorenzo@kernel.org \
    --cc=andrew+netdev@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=kuba@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).