From: Vladimir Oltean <vladimir.oltean@nxp.com>
To: Simon Horman <simon.horman@corigine.com>
Cc: netdev@vger.kernel.org, "David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Claudiu Manoil <claudiu.manoil@nxp.com>,
Vinicius Costa Gomes <vinicius.gomes@intel.com>,
Kurt Kanzenbach <kurt@linutronix.de>,
Jacob Keller <jacob.e.keller@intel.com>,
Jamal Hadi Salim <jhs@mojatatu.com>,
Cong Wang <xiyou.wangcong@gmail.com>,
Jiri Pirko <jiri@resnulli.us>
Subject: Re: [PATCH v4 net-next 04/15] net: enetc: ensure we always have a minimum number of TXQs for stack
Date: Wed, 1 Feb 2023 20:46:52 +0200 [thread overview]
Message-ID: <20230201184652.fvlb6kgwcnfwknxh@skbuf> (raw)
In-Reply-To: <Y9pskMNnHKFAROIl@corigine.com>
Hi Simon,
On Wed, Feb 01, 2023 at 02:43:44PM +0100, Simon Horman wrote:
> The nit below notwithstanding,
>
> Reviewed-by: Simon Horman <simon.horman@corigine.com>
I appreciate your time to review this patch set.
> > diff --git a/drivers/net/ethernet/freescale/enetc/enetc.h b/drivers/net/ethernet/freescale/enetc/enetc.h
> > index 1fe8dfd6b6d4..e21d096c5a90 100644
> > --- a/drivers/net/ethernet/freescale/enetc/enetc.h
> > +++ b/drivers/net/ethernet/freescale/enetc/enetc.h
> > @@ -369,6 +369,9 @@ struct enetc_ndev_priv {
> >
> > struct psfp_cap psfp_cap;
> >
> > + /* Minimum number of TX queues required by the network stack */
> > + unsigned int min_num_stack_tx_queues;
> > +
>
> It is probably not important.
> But I do notice there are several holes in struct enetc_ndev_priv
> that would fit this field.
This is true. However, this patch was written taking pahole into
consideration, and one new field can only fill a single hole :)
Before:
pahole -C enetc_ndev_priv $KBUILD_OUTPUT/drivers/net/ethernet/freescale/enetc/enetc.o
struct enetc_ndev_priv {
struct net_device * ndev; /* 0 8 */
struct device * dev; /* 8 8 */
struct enetc_si * si; /* 16 8 */
int bdr_int_num; /* 24 4 */
/* XXX 4 bytes hole, try to pack */
struct enetc_int_vector * int_vector[2]; /* 32 16 */
u16 num_rx_rings; /* 48 2 */
u16 num_tx_rings; /* 50 2 */
u16 rx_bd_count; /* 52 2 */
u16 tx_bd_count; /* 54 2 */
u16 msg_enable; /* 56 2 */
/* XXX 2 bytes hole, try to pack */
enum enetc_active_offloads active_offloads; /* 60 4 */
/* --- cacheline 1 boundary (64 bytes) --- */
u32 speed; /* 64 4 */
/* XXX 4 bytes hole, try to pack */
struct enetc_bdr * * xdp_tx_ring; /* 72 8 */
struct enetc_bdr * tx_ring[16]; /* 80 128 */
/* --- cacheline 3 boundary (192 bytes) was 16 bytes ago --- */
struct enetc_bdr * rx_ring[16]; /* 208 128 */
/* --- cacheline 5 boundary (320 bytes) was 16 bytes ago --- */
const struct enetc_bdr_resource * tx_res; /* 336 8 */
const struct enetc_bdr_resource * rx_res; /* 344 8 */
struct enetc_cls_rule * cls_rules; /* 352 8 */
struct psfp_cap psfp_cap; /* 360 20 */
/* XXX 4 bytes hole, try to pack */
/* --- cacheline 6 boundary (384 bytes) --- */
struct phylink * phylink; /* 384 8 */
int ic_mode; /* 392 4 */
u32 tx_ictt; /* 396 4 */
struct bpf_prog * xdp_prog; /* 400 8 */
long unsigned int flags; /* 408 8 */
struct work_struct tx_onestep_tstamp; /* 416 0 */
/* XXX 32 bytes hole, try to pack */
/* --- cacheline 7 boundary (448 bytes) --- */
struct sk_buff_head tx_skbs; /* 448 0 */
/* size: 472, cachelines: 8, members: 26 */
/* sum members: 402, holes: 5, sum holes: 46 */
/* padding: 24 */
/* last cacheline: 24 bytes */
};
After:
struct enetc_ndev_priv {
struct net_device * ndev; /* 0 8 */
struct device * dev; /* 8 8 */
struct enetc_si * si; /* 16 8 */
int bdr_int_num; /* 24 4 */
/* XXX 4 bytes hole, try to pack */
struct enetc_int_vector * int_vector[2]; /* 32 16 */
u16 num_rx_rings; /* 48 2 */
u16 num_tx_rings; /* 50 2 */
u16 rx_bd_count; /* 52 2 */
u16 tx_bd_count; /* 54 2 */
u16 msg_enable; /* 56 2 */
/* XXX 2 bytes hole, try to pack */
enum enetc_active_offloads active_offloads; /* 60 4 */
/* --- cacheline 1 boundary (64 bytes) --- */
u32 speed; /* 64 4 */
/* XXX 4 bytes hole, try to pack */
struct enetc_bdr * * xdp_tx_ring; /* 72 8 */
struct enetc_bdr * tx_ring[16]; /* 80 128 */
/* --- cacheline 3 boundary (192 bytes) was 16 bytes ago --- */
struct enetc_bdr * rx_ring[16]; /* 208 128 */
/* --- cacheline 5 boundary (320 bytes) was 16 bytes ago --- */
const struct enetc_bdr_resource * tx_res; /* 336 8 */
const struct enetc_bdr_resource * rx_res; /* 344 8 */
struct enetc_cls_rule * cls_rules; /* 352 8 */
struct psfp_cap psfp_cap; /* 360 20 */
unsigned int min_num_stack_tx_queues; /* 380 4 */
/* --- cacheline 6 boundary (384 bytes) --- */
struct phylink * phylink; /* 384 8 */
int ic_mode; /* 392 4 */
u32 tx_ictt; /* 396 4 */
struct bpf_prog * xdp_prog; /* 400 8 */
long unsigned int flags; /* 408 8 */
struct work_struct tx_onestep_tstamp; /* 416 0 */
/* XXX 32 bytes hole, try to pack */
/* --- cacheline 7 boundary (448 bytes) --- */
struct sk_buff_head tx_skbs; /* 448 0 */
/* size: 472, cachelines: 8, members: 27 */
/* sum members: 406, holes: 4, sum holes: 42 */
/* padding: 24 */
/* last cacheline: 24 bytes */
};
next prev parent reply other threads:[~2023-02-01 18:47 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-30 17:31 [PATCH v4 net-next 00/15] ENETC mqprio/taprio cleanup Vladimir Oltean
2023-01-30 17:31 ` [PATCH v4 net-next 01/15] net: enetc: simplify enetc_num_stack_tx_queues() Vladimir Oltean
2023-02-01 13:44 ` Simon Horman
2023-01-30 17:31 ` [PATCH v4 net-next 02/15] net: enetc: allow the enetc_reconfigure() callback to fail Vladimir Oltean
2023-02-01 13:45 ` Simon Horman
2023-01-30 17:31 ` [PATCH v4 net-next 03/15] net: enetc: recalculate num_real_tx_queues when XDP program attaches Vladimir Oltean
2023-02-01 13:45 ` Simon Horman
2023-01-30 17:31 ` [PATCH v4 net-next 04/15] net: enetc: ensure we always have a minimum number of TXQs for stack Vladimir Oltean
2023-02-01 13:43 ` Simon Horman
2023-02-01 18:46 ` Vladimir Oltean [this message]
2023-02-02 9:29 ` Simon Horman
2023-01-30 17:31 ` [PATCH v4 net-next 05/15] net/sched: mqprio: refactor nlattr parsing to a separate function Vladimir Oltean
2023-02-01 14:03 ` Simon Horman
2023-01-30 17:31 ` [PATCH v4 net-next 06/15] net/sched: mqprio: refactor offloading and unoffloading to dedicated functions Vladimir Oltean
2023-02-01 14:07 ` Simon Horman
2023-02-01 14:09 ` Simon Horman
2023-01-30 17:31 ` [PATCH v4 net-next 07/15] net/sched: move struct tc_mqprio_qopt_offload from pkt_cls.h to pkt_sched.h Vladimir Oltean
2023-02-01 14:07 ` Simon Horman
2023-02-01 14:11 ` Simon Horman
2023-01-30 17:31 ` [PATCH v4 net-next 08/15] net/sched: mqprio: allow offloading drivers to request queue count validation Vladimir Oltean
2023-01-30 18:37 ` Claudiu Manoil
2023-01-30 19:06 ` Vladimir Oltean
2023-02-01 14:08 ` Simon Horman
2023-01-30 17:31 ` [PATCH v4 net-next 09/15] net/sched: mqprio: add extack messages for " Vladimir Oltean
2023-02-01 14:12 ` Simon Horman
2023-01-30 17:31 ` [PATCH v4 net-next 10/15] net: enetc: request mqprio to validate the queue counts Vladimir Oltean
2023-02-01 14:12 ` Simon Horman
2023-01-30 17:31 ` [PATCH v4 net-next 11/15] net: enetc: act upon the requested mqprio queue configuration Vladimir Oltean
2023-02-01 15:15 ` Simon Horman
2023-01-30 17:31 ` [PATCH v4 net-next 12/15] net/sched: taprio: pass mqprio queue configuration to ndo_setup_tc() Vladimir Oltean
2023-02-01 15:16 ` Simon Horman
2023-01-30 17:31 ` [PATCH v4 net-next 13/15] net: enetc: act upon mqprio queue config in taprio offload Vladimir Oltean
2023-02-01 15:16 ` Simon Horman
2023-01-30 17:31 ` [PATCH v4 net-next 14/15] net/sched: taprio: mask off bits in gate mask that exceed number of TCs Vladimir Oltean
2023-02-01 15:17 ` Simon Horman
2023-01-30 17:31 ` [PATCH v4 net-next 15/15] net/sched: taprio: only calculate gate mask per TXQ for igc, stmmac and tsnep Vladimir Oltean
2023-02-01 15:17 ` Simon Horman
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=20230201184652.fvlb6kgwcnfwknxh@skbuf \
--to=vladimir.oltean@nxp.com \
--cc=claudiu.manoil@nxp.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=jacob.e.keller@intel.com \
--cc=jhs@mojatatu.com \
--cc=jiri@resnulli.us \
--cc=kuba@kernel.org \
--cc=kurt@linutronix.de \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=simon.horman@corigine.com \
--cc=vinicius.gomes@intel.com \
--cc=xiyou.wangcong@gmail.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