Thread (19 messages) 19 messages, 2 authors, 2026-06-02

Re: [PATCH net-next 5/9] net: dsa: microchip: implement .support_eee() only if needed

From: Bastien Curutchet <hidden>
Date: 2026-06-02 12:21:31
Also in: lkml

Hi Paolo,

On 6/1/26 10:55 AM, Paolo Abeni wrote:
On 5/26/26 11:47 AM, Bastien Curutchet (Schneider Electric) wrote:
quoted
diff --git a/drivers/net/dsa/microchip/ksz9477.c b/drivers/net/dsa/microchip/ksz9477.c
index a39541d29ad5..e0b3724a7558 100644
--- a/drivers/net/dsa/microchip/ksz9477.c
+++ b/drivers/net/dsa/microchip/ksz9477.c
@@ -1909,6 +1909,54 @@ void ksz9477_phylink_mac_link_up(struct phylink_config *config,
  	ksz9477_duplex_flowctrl(dev, port, duplex, tx_pause, rx_pause);
  }
  
+/**
+ * ksz9477_support_eee - Determine Energy Efficient Ethernet (EEE) support for a
+ *                       port
+ * @ds: Pointer to the DSA switch structure
+ * @port: Port number to check
+ *
+ * This function also documents devices where EEE was initially advertised but
+ * later withdrawn due to reliability issues, as described in official errata
+ * documents. These devices are explicitly listed to record known limitations,
+ * even if there is no technical necessity for runtime checks.
+ *
+ * Returns: true if the internal PHY on the given port supports fully
+ * operational EEE, false otherwise.
+ */
+static bool ksz9477_support_eee(struct dsa_switch *ds, int port)
+{
+	struct ksz_device *dev = ds->priv;
+
+	if (!dev->info->internal_phy[port])
+		return false;
+
+	switch (dev->chip_id) {
+	case KSZ8563_CHIP_ID:
+	case KSZ9563_CHIP_ID:
+	case KSZ9893_CHIP_ID:
+		return true;
+	default:
+		/* KSZ8567R Errata DS80000752C Module 4 */
+		/* KSZ9477S Errata DS80000754A Module 4 */
+		/* KSZ9567S Errata DS80000756A Module 4 */
+		/* KSZ9896C Errata DS80000757A Module 3 */
+		/* KSZ9897R Errata DS80000758C Module 4 */
Sashiko noted that errata:

		/* KSZ879x/KSZ877x/KSZ876x Errata DS80000687C Module 2 */

has been lost above.
Yes that was more or less intended because KSZ879x/KSZ877x/KSZ876x don't 
belong to the KSZ9477 family. I haven't found a relevant place to move 
this comment as .support_eee() is removed from ksz8.c, maybe I should 
have mentioned it in the commit log.
quoted
diff --git a/drivers/net/dsa/microchip/lan937x_main.c b/drivers/net/dsa/microchip/lan937x_main.c
index f8f220242f7a..4cbbcf7993c9 100644
--- a/drivers/net/dsa/microchip/lan937x_main.c
+++ b/drivers/net/dsa/microchip/lan937x_main.c
@@ -915,7 +915,6 @@ const struct dsa_switch_ops lan937x_switch_ops = {
  	.port_txtstamp		= ksz_port_txtstamp,
  	.port_rxtstamp		= ksz_port_rxtstamp,
  	.port_setup_tc		= ksz_setup_tc,
-	.support_eee		= ksz_support_eee,
  	.set_mac_eee		= ksz_set_mac_eee,
Sashiko noted that `set_mac_eee` usage is gated by `support_eee` presence,
you may want to remove even the set callback.
True, will do.



Best regards,
Bastien
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help