mirror of
				https://github.com/Ysurac/openmptcprouter.git
				synced 2025-03-09 15:40:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			46 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 400e2e81a85f265ba6012c458ebd04b1bef6f9be Mon Sep 17 00:00:00 2001
 | |
| From: Phil Elwell <phil@raspberrypi.com>
 | |
| Date: Wed, 14 Dec 2022 15:00:51 +0000
 | |
| Subject: [PATCH] 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)
 | |
|  {
 | |
| @@ -3438,6 +3441,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);
 |