All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ansuel Smith <ansuelsmth@gmail.com>
To: Andrew Lunn <andrew@lunn.ch>,
	Vivien Didelot <vivien.didelot@gmail.com>,
	Florian Fainelli <f.fainelli@gmail.com>,
	Vladimir Oltean <olteanv@gmail.com>,
	"David S. Miller" <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>,
	Russell King <linux@armlinux.org.uk>,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: Ansuel Smith <ansuelsmth@gmail.com>
Subject: [net-next PATCH v2] net: dsa: qca8k: pack driver struct and improve cache use
Date: Mon, 28 Feb 2022 12:04:08 +0100	[thread overview]
Message-ID: <20220228110408.4903-1-ansuelsmth@gmail.com> (raw)

Pack qca8k priv and other struct using pahole and set the first priv
struct entry to mgmt_master and mgmt_eth_data to speedup access.
While at it also rework pcs struct and move it qca8k_ports_config
following other configuration set for the cpu ports.

Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
---
 drivers/net/dsa/qca8k.c |  8 ++++----
 drivers/net/dsa/qca8k.h | 33 ++++++++++++++++-----------------
 2 files changed, 20 insertions(+), 21 deletions(-)

diff --git a/drivers/net/dsa/qca8k.c b/drivers/net/dsa/qca8k.c
index ee0dbf324268..8d059da5f0ca 100644
--- a/drivers/net/dsa/qca8k.c
+++ b/drivers/net/dsa/qca8k.c
@@ -1685,11 +1685,11 @@ qca8k_phylink_mac_select_pcs(struct dsa_switch *ds, int port,
 	case PHY_INTERFACE_MODE_1000BASEX:
 		switch (port) {
 		case 0:
-			pcs = &priv->pcs_port_0.pcs;
+			pcs = &priv->ports_config.qpcs[QCA8K_CPU_PORT0].pcs;
 			break;
 
 		case 6:
-			pcs = &priv->pcs_port_6.pcs;
+			pcs = &priv->ports_config.qpcs[QCA8K_CPU_PORT6].pcs;
 			break;
 		}
 		break;
@@ -2889,8 +2889,8 @@ qca8k_setup(struct dsa_switch *ds)
 	if (ret)
 		return ret;
 
-	qca8k_setup_pcs(priv, &priv->pcs_port_0, 0);
-	qca8k_setup_pcs(priv, &priv->pcs_port_6, 6);
+	qca8k_setup_pcs(priv, &priv->ports_config.qpcs[QCA8K_CPU_PORT0], 0);
+	qca8k_setup_pcs(priv, &priv->ports_config.qpcs[QCA8K_CPU_PORT6], 6);
 
 	/* Make sure MAC06 is disabled */
 	ret = regmap_clear_bits(priv->regmap, QCA8K_REG_PORT0_PAD_CTRL,
diff --git a/drivers/net/dsa/qca8k.h b/drivers/net/dsa/qca8k.h
index f375627174c8..611dc2335dbe 100644
--- a/drivers/net/dsa/qca8k.h
+++ b/drivers/net/dsa/qca8k.h
@@ -341,18 +341,24 @@ enum {
 
 struct qca8k_mgmt_eth_data {
 	struct completion rw_done;
-	struct mutex mutex; /* Enforce one mdio read/write at time */
+	u32 data[4];
 	bool ack;
 	u32 seq;
-	u32 data[4];
+	struct mutex mutex; /* Enforce one mdio read/write at time */
 };
 
 struct qca8k_mib_eth_data {
 	struct completion rw_done;
+	u64 *data; /* pointer to ethtool data */
+	u8 req_port;
 	struct mutex mutex; /* Process one command at time */
 	refcount_t port_parsed; /* Counter to track parsed port */
-	u8 req_port;
-	u64 *data; /* pointer to ethtool data */
+};
+
+struct qca8k_pcs {
+	struct phylink_pcs pcs;
+	struct qca8k_priv *priv;
+	int port;
 };
 
 struct qca8k_ports_config {
@@ -361,6 +367,7 @@ struct qca8k_ports_config {
 	bool sgmii_enable_pll;
 	u8 rgmii_rx_delay[QCA8K_NUM_CPU_PORTS]; /* 0: CPU port0, 1: CPU port6 */
 	u8 rgmii_tx_delay[QCA8K_NUM_CPU_PORTS]; /* 0: CPU port0, 1: CPU port6 */
+	struct qca8k_pcs qpcs[QCA8K_NUM_CPU_PORTS];
 };
 
 struct qca8k_mdio_cache {
@@ -376,13 +383,10 @@ struct qca8k_mdio_cache {
 	u16 hi;
 };
 
-struct qca8k_pcs {
-	struct phylink_pcs pcs;
-	struct qca8k_priv *priv;
-	int port;
-};
-
 struct qca8k_priv {
+	struct net_device *mgmt_master; /* Track if mdio/mib Ethernet is available */
+	struct qca8k_mgmt_eth_data mgmt_eth_data;
+	struct qca8k_mdio_cache mdio_cache;
 	u8 switch_id;
 	u8 switch_revision;
 	u8 mirror_rx;
@@ -396,15 +400,10 @@ struct qca8k_priv {
 	struct dsa_switch *ds;
 	struct mutex reg_mutex;
 	struct device *dev;
-	struct dsa_switch_ops ops;
 	struct gpio_desc *reset_gpio;
-	unsigned int port_mtu[QCA8K_NUM_PORTS];
-	struct net_device *mgmt_master; /* Track if mdio/mib Ethernet is available */
-	struct qca8k_mgmt_eth_data mgmt_eth_data;
+	struct dsa_switch_ops ops;
 	struct qca8k_mib_eth_data mib_eth_data;
-	struct qca8k_mdio_cache mdio_cache;
-	struct qca8k_pcs pcs_port_0;
-	struct qca8k_pcs pcs_port_6;
+	unsigned int port_mtu[QCA8K_NUM_PORTS];
 };
 
 struct qca8k_mib_desc {
-- 
2.34.1


             reply	other threads:[~2022-02-28 11:04 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-28 11:04 Ansuel Smith [this message]
2022-03-03  1:53 ` [net-next PATCH v2] net: dsa: qca8k: pack driver struct and improve cache use Vladimir Oltean
2022-03-03  2:25   ` Andrew Lunn
2022-03-21 16:07   ` Ansuel Smith
2022-03-21 17:22     ` Vladimir Oltean
2022-03-21 17:26       ` Ansuel Smith
2022-03-21 17:31         ` Ansuel Smith
2022-03-21 18:22           ` Vladimir Oltean
2022-03-21 18:06             ` Ansuel Smith
2022-03-21 18:55               ` Vladimir Oltean

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=20220228110408.4903-1-ansuelsmth@gmail.com \
    --to=ansuelsmth@gmail.com \
    --cc=andrew@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=f.fainelli@gmail.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=netdev@vger.kernel.org \
    --cc=olteanv@gmail.com \
    --cc=vivien.didelot@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.