The patches were generated from the RPi repo with the following command: git format-patch v6.6.34..rpi-6.1.y Some patches needed rebasing and, as usual, the applied and reverted, wireless drivers, Github workflows, READMEs and defconfigs patches were removed. Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
		
			
				
	
	
		
			47 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From 167d775d4cad4d41651ca81b79589bb9a408fd3c Mon Sep 17 00:00:00 2001
 | 
						|
From: Phil Elwell <phil@raspberrypi.com>
 | 
						|
Date: Wed, 14 Dec 2022 15:00:51 +0000
 | 
						|
Subject: [PATCH 0400/1085] net: bcmgenet: Add 'eee' module parameter
 | 
						|
 | 
						|
On some switches, having EEE enabled causes the link to become
 | 
						|
unstable. With this patch, adding 'genet.eee=N' to the kernel command
 | 
						|
line will cause EEE to be disabled on the link.
 | 
						|
 | 
						|
See: https://github.com/raspberrypi/linux/issues/4289
 | 
						|
 | 
						|
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
 | 
						|
---
 | 
						|
 drivers/net/ethernet/broadcom/genet/bcmgenet.c | 14 ++++++++++++++
 | 
						|
 1 file changed, 14 insertions(+)
 | 
						|
 | 
						|
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
 | 
						|
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
 | 
						|
@@ -70,6 +70,9 @@ static void bcmgenet_set_rx_mode(struct
 | 
						|
 static bool skip_umac_reset = false;
 | 
						|
 module_param(skip_umac_reset, bool, 0444);
 | 
						|
 MODULE_PARM_DESC(skip_umac_reset, "Skip UMAC reset step");
 | 
						|
+static bool eee = true;
 | 
						|
+module_param(eee, bool, 0444);
 | 
						|
+MODULE_PARM_DESC(eee, "Enable EEE (default Y)");
 | 
						|
 
 | 
						|
 static inline void bcmgenet_writel(u32 value, void __iomem *offset)
 | 
						|
 {
 | 
						|
@@ -3449,6 +3452,17 @@ static int bcmgenet_open(struct net_devi
 | 
						|
 
 | 
						|
 	bcmgenet_phy_pause_set(dev, priv->rx_pause, priv->tx_pause);
 | 
						|
 
 | 
						|
+	if (!eee) {
 | 
						|
+		struct ethtool_eee eee_data;
 | 
						|
+
 | 
						|
+		ret = bcmgenet_get_eee(dev, &eee_data);
 | 
						|
+		if (ret == 0) {
 | 
						|
+			eee_data.eee_enabled = 0;
 | 
						|
+			bcmgenet_set_eee(dev, &eee_data);
 | 
						|
+			netdev_warn(dev, "EEE disabled\n");
 | 
						|
+		}
 | 
						|
+	}
 | 
						|
+
 | 
						|
 	bcmgenet_netif_start(dev);
 | 
						|
 
 | 
						|
 	netif_tx_start_all_queues(dev);
 |